iPhoneやAndroidでも使われている、組み込みと拡張が容易なSQLiteの使い方
SQLiteに関しては、アプリケーションに組み込んで簡単に利用できるデータベースという位の認識はあったが、いろいろ調べてみると他にも魅力的な特徴がいっぱいあった。私が惹かれた特徴を列挙し、その内いくつかについては、具体的な使用方法をまとめておく。
特徴
- 組み込みが用意
- アプリケーションにライブラリとしてリンクすれば、あとはAPIを呼び出すだけで簡単に利用できる。実際iPhone, Androidなどのスマートフォンや、Webブラウザ(Firefox, Chrome, Safari等)など多数のアプリケーションに組み込まれている。SQLiteがパブリックドメインであり、ライセンスを気にせずに済むのも、採用しやすい要因である。
- UTF-8、BLOBのサポート
- 日本語を正しく扱うことができる。BLOBを使えばアプリケーション独自のバイナリデータも格納できる。
- 型の制約が緩い
- ひとつのカラムに格納するデータ型がレコードごとに異なっていてもよい。テーブルを作るときにカラムの型を指定する必要すらない。例えば下記のように、簡単にKey-Valueストアを作成できる(他のKVストアほどスケーラブルではないが)。
create table kvstore(key text primary key, val);
insert into kvstore values("history.max", 100);
insert into kvstore values("user.name", "Einstein");
insert into kvstore values("pi", 3.14);
- SQLiteのDBファイル以外のデータソースもSQLでアクセス可能
- virtual table機能を使えば、例えばCSVファイルなどを仮想的なテーブルとしてSQLでアクセスできる。ただし、既存のモジュールを使用するか自分でモジュールを作成する必要がある。
- 関数(集約関数も含む)の拡張が容易
- 関数を追加して、アプリケーション独自のデータ(BLOBで格納)に対する演算処理をSQLから呼び出すことができる。
- 単一ファイルにDBを格納
- SQLiteでは、単一のDBファイルに複数のテーブルやインデックスが格納される。バックアップは、オフラインバックアップは、ファイルをコピーするだけで済む。
- 複数DBに跨ったSQL処理
- SQLiteでは、単一のDBファイルに複数のテーブルやインデックスが格納される。attach database文を使えば、異なるのDBファイルに格納されたテーブル間でJOINを行うこともできる。
- DB管理ツール
- DB管理ツールも豊富に存在する。
- トランザクションのサポート
- トランザクションが使える。
つまり、アプリケーションが内部で使用するスタンドアローンDBとして、かなり使えるDBと言える。
その他の特徴は、本家サイトやWikipediaを参照。
- シェアードライブラリを使用してSQLiteに独自関数を追加する方法
|