SQLite

出典: フリー百科事典『ウィキペディア(Wikipedia)』

SQLite
File:SQLite Logo 4.png
開発元 D. Richard Hipp
最新版 3.6.16 / 2009年6月27日
対応OS クロスプラットフォーム
プログラミング言語 C
種別 関係データベース管理システム
ライセンス パブリックドメイン
公式サイト www.SQLite.org
  

SQLiteMySQLPostgreSQLと同じデータベース管理システムであるが、サーバとしてではなくアプリケーションに組み込まれて利用される軽量のデータベースである。 一般的なRDBMSに比べて大規模な仕事には不向きだが、中小規模ならば速度に遜色はない。 また、APIは単純にライブラリを呼び出すだけであり、データの保存に単一のファイルのみを使用する事が特徴である。バージョン3.3.8からは全文検索のFTS1モジュールがサポートされた。

目次

[編集] 特徴

  • SQL92の機能の多くを実装
  • 著作権を放棄しパブリックドメインに帰している
  • サーバではなくライブラリ
    • ライブラリは200から400KB程度の小さなフットプリント
    • Cランタイム以外の別途ライブラリを必要としない
    • 管理ツールによるセットアップやメンテナンスを必要としない
    • コマンドラインツールも使える
  • バイトオーダに依存しない(2.6.3以降)、可搬性のある単一ファイル
    • 最大2テラバイトまで
    • ファイルを使わない、揮発性のインメモリ・データベースとしても利用可能
  • データ型を指定する必要がない
    • サポートしている型は、Integer/Real/Text/BLOBのみ
    • Unicodeのサポート
    • BLOBはメモリの許す限り
    • ROWIDを持っている (しかし、外部制約キーの仕組みがない)
  • トランザクションのサポート
    • スレッドセーフである (バイナリによる配布ではリコンパイルが必要な場合もあり)
  • ビューのサポート
  • トリガーのサポート
  • C言語を使って関数を追加できる
  • Tclバインディングを配布キットに標準添付している
  • PHP5Python 2.5、Adobe AIR で標準サポート
  • その他、C, C++, Curl (プログラミング言語), Perl, Ruby, Delphiなど多数の言語用のバインディング
  • 全文検索の FTS1モジュールがサポートされ、SQL文で全文検索インデックスに対して検索できる

[編集] 概要

SQLiteは本体プログラムに対して、直接リンクしたライブラリもしくは共有ライブラリダイナミックリンクライブラリの形で利用できる、組み込み型データベースエンジンである。その特徴として、概ね600kb前後のフットプリントでフルセットのSQLステートメントと型束縛の無いデータセットを利用する事ができる。データベースストレージに対するアクセスも内蔵しており、ファイル及びインメモリストレージに対応している。ファイルを共有する事で複数のアプリケーションがデータベースインスタンスを共有する事も可能であり、サーバ・クライアントモデルではないアプリケーションローカルで使用するデータベースエンジンとしては非常に合理的な設計となっている。

正しく使用すると、SQLiteは非常にSecureなデータベースエンジンとして使用する事ができる。理由として、サーバ・クライアントモデルではないので、複数のクライアントが利用するサーバが保有するデータベースインスタンスに打撃を与える事が基本的に出来ない。どれだけの壁を突破しようとも、アプリケーションが所有するデータベースインスタンスまでしか到達出来ない為である。型束縛が無い事がセキュリティ上の懸念としてあげられるが、これは同様に型束縛が無いスカラ型を利用できるデータベース全般に言える事でありSQLiteの本質にはなんら関係ない。

SQLiteのもう一つの特徴は、最大16テラバイトまで格納できる、バイトオーダーに依存しない、アーキテクチャ非依存のストレージを採用している。この為、データベースインスタンスを格納したストレージとなったファイルは再利用性が高く、ストレージバージョンに気をつければ、アプリケーションからストレージを取り出し、全く別のOSやアーキテクチャで動作している別のアプリケーションにデータを変換する事なく移す事ができる。

組み込み型である事、ストレージまでネイティブコードで直接実行し、間になんらかのプロトコルやプロセス間通信が無いため、その動作は非常に高速である。一度トランザクションを開始するとストレージはロックされ、トランザクション中のセッションは最大限設定値で許されたキャッシュを有効利用して動作する為、SQLという複雑高度なステートメントを使用している事をユーザーに意識させない程高速にデータベースにアクセスする事が出来る。これは応答性が重要なアプリケーションでは重要な要素となり、SQLiteをサーバとの中間にキャッシュとして採用する事例や、アプリケーション組み込みデータベースエンジンとしての採用を促す理由ともなっている。

標準で搭載しているデータセットの型は整数型(INTEGER)、文字列型(TEXT)、無制限スカラ型(BLOB)の3種類である。実際の所INTEGER型がバイナリ値に変換される事、TEXT型がアプリケーション層に対して文字列変換が必要なヒントになり得る以外は、アプリケーションに対して型束縛が非常に緩和されている。事前に文字列スカラがどれだけの領域を必要とするかCREATE TABLEステートメント実行時に宣言する必要は無い為、アプリケーションの基礎設計に対して極めて寛大であり、仕様変更の為にデータベースを変換ないしは再構築する必要がなく、アプリケーション開発を容易な物としている。

後述のCUIベースの管理ツールを標準で備える他、複数のGUIベース管理ソフトウエアが豊富である。またストレージ仕様がアーキテクチャに依存しない為、管理ツールの直接実行が難しいシステム(組み込みソフトウエア開発等)においても、ストレージを取り出してWindowsマシン等でデータを確認したりSQLステートメントを実行する事が可能である、

[編集] 管理ツール

またSQLiteManagerという管理ツールはバージョン2とバージョン3に対応しており、こちらは日本語メニュー表示も選択できる。ただし既定のcharsetはEUC-JPなので、UTF-8対応にするには、設定ファイルであるjapanese.inc.phpをUTF-8文字コードで書き換える必要がある。新しいデータベースを作成するには、設置するディレクトリへのパスでファイル名を指定すればよく、その後必要なテーブルを追加する。このツールはブラウザのキャッシュが効いていると、正しいデータがすぐ反映されないので、注意が必要である。

別の管理ツールとして、Mozilla Firefox のアドオンSQLite Managerがある。WebブラウザからGUIにてデータベースに対する基本的な操作が可能である。

[編集] ODBC

SQLiteのODBCドライバがサードパーティから提供されている。SQLite 2とSQLite 3のバージョンがあり、SQLite 2向けには、さらにUTF-8対応版がある。Microsoft AccessからODBCリンクするときには、データ型をあらかじめSQLite側のCREATE TABLEで宣言しておく必要がある。そうしておかないと、全てのデータ型がintとみなされることがある。日本語文字コードはUTF-8としておけば、Access側でも正しく表示される。

[編集] 書籍

[編集] 外部リンク