SQLiteは、SQL言語を介してアクセスできる軽量なリレーショナルデータベースエンジンです。MySQLやPostgreSQLといった従来のデータベースサーバーとは異なり、その特徴は、一般的なクライアント/サーバーアーキテクチャを再現するのではなく、プログラムに直接統合できる点にあります。
データベース全体(ステートメント、テーブル、インデックス、データ)は、プラットフォームに依存しないファイルに格納されます。極めて軽量であることなどから、多くのコンシューマー向けプログラムで使用されているほか、最新のスマートフォンを含む組み込みシステムでも広く普及しています。
クライアントサーバー型のデータベース管理システムとは異なり、SQLiteエンジンはメインプログラムと通信する独立したプロセスではありません。代わりに、SQLiteライブラリはプログラムにリンクされ、プログラムの不可欠な一部となります。
プログラムは、サブルーチンと関数への単純な呼び出しを通じてSQLiteの機能を使用します。 これにより、関数呼び出しはプロセス間通信よりも効率的であるため、データベースへのアクセスの待ち時間が短縮されます。
データベース全体(定義、テーブル、インデックス、およびデータ自体)は、単一の標準ファイルとしてホストマシンに保存されます。 このシンプルな設計は、各トランザクションの開始時にデータベースファイル全体をロックすることによって実現されます。
SQLite3.32.0の新しいバージョンについて
最近、SQLite バージョン 3.32.0 が発表されました。このバージョンにはいくつかの変更点が含まれていますが、中でも特に注目すべきはANALYZE コマンドの改良版です。これにより、大規模なデータベースから完全なインデックス分析を行わずに、部分的な統計情報を収集することが可能になりました。単一のインデックスに対してスキャンされるレコード数の制限は、新しい「PRAGMA analysis_limit」ディレクティブを使用して設定します。
この新しいバージョンのSQLiteにおけるもう一つの変更点は、準備済みステートメントのバイトコードに関する情報を提供する新しい仮想テーブル「bytecode」です。
さらに、VFSチェックサム層が追加され、データベース内の各データページの末尾に8バイトのチェックサムが付加され、データベースからデータが読み取られるたびにそのチェックサムが検証されます。この中間層により、ストレージデバイス上のランダムなビット歪みによって発生するデータベースの破損を検出できます。
一方、新しいSQL関数iif(X、Y、Z)が追加され、式Xがtrueの場合は値Yが返され、それ以外の場合はZが返されます。
INSERT式とUPDATE式では、 CHECK計算ブロックの前に必ず固定列型条件が適用されるようになり、パラメータ数の制限が999から32766に増加しました。
この新バージョンにおけるその他の注目すべき変更点は以下のとおりです。
- テキストに整数を考慮してこのテキストを番号順にソートするソートシーケンスの実装により、UINTソートシーケンス拡張機能が追加されました。
- コマンドラインインターフェイスで、オプション「–csv」、「– ascii」、および「–skip」がコマンド「.import」に追加されました。
- 「.dump」コマンドを使用すると、指定したマスクに対応するすべてのテーブルの出力をマージして、複数のLIKEテンプレートを使用できます。 デバッグビルド用の「.oom」コマンドが追加されました。
- –bomオプションが、「。excel」、「。output」、および「.once」コマンドに追加されました。 「.filectrl」コマンドに–schemaオプションを追加しました。
- LIKE演算子で指定されたESCAPE式は、ワイルドカード文字をオーバーライドするようになりました。これは、PostgreSQLの動作と一致しています。
最後に、この新バージョンのリリースについてさらに詳しく知りたい場合は、以下のリンクから変更点の一覧をご覧ください。
放電
この新しいバージョンのSQLiteをシステムにインストールすることに関心のある方は、公式ウェブサイトのダウンロードセクションからパッケージを入手できます。そこには、コンパイル用のソースコードと、コンパイル済みのパッケージの両方が用意されています。