SQLite

Article on other languages:

del.icio.us del.icio.us
Digg Digg
Furl Furl
Reddit Reddit
Rojo Rojo
Add to OnlyWire
SQLite
画像:SQLiteLogo3.png
開発元 D. Richard Hipp
最新版 3.6.5 / 2008年11月12日
対応OS クロスプラットフォーム
種別 データベース管理システム
ライセンス パブリックドメイン
公式サイト SQLite
  

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

目次

特徴

  • SQL92の機能の多くを実装
  • ライセンスは、パブリックドメイン
  • サーバではなくライブラリ
    • ライブラリは300から500KB程度の小さなフットプリント
    • 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は、クライアントサーバモデルではなく、ユーザーの概念もないためパスワードも不要で、利用者は、データの取り扱いをプログラムに依存することによって、その存在を意識することなく利用できる。 そのうえ、データベースは単一ファイルであり、ファイル間の相互参照等を持たず、マシンのバイトオーダにも依存しないため、別マシンにデータを持ち運ぶ、といった可搬性が高く、利用者にとって扱いやすい形式となっている。ただしそのためにセキュリティが甘くなるという問題が生じる。

ソフトウェア開発においては、サーバ等を必要とせず、アプリケーションに組み込んだsqliteのライブラリを呼び出してSQLを実行するだけの簡素なものであるため、ファイルの入出力に近い感覚で取り扱える。 PHPPythonなど標準ライブラリに含まれている場合もある。 生成されるファイルの権限は、実行ユーザーの権限に依存することになる。 マルチスレッドからのデータベースのアクセスが可能であり、簡素ながらも一時的なアーカイブログ・ファイルを作成することでACID特性を標準でサポートしている。

SQLの構文はSQL標準に準拠しており乗り換えもさほど難しくない。 ブログ掲示板などでは、データベースの選択肢の一つとして利用できることもある。 移行時の注意点としては、カラムに指定するデータ型は名目的なものであり、制約として機能しない点などがある。 SQLiteでは(ROWIDを除き)カラムに宣言した型にかかわらず、どのようなデータも格納できる。 また、カラムの長さも常に可変であり、長さや精度の指定は意味をもたない。 レコードサイズも可変であり、格納に必要な最小限のディスクスペースのみ、必要なだけ消費する。 これは柔軟なデータの格納を可能とするが、逆に言えば、あらゆるデータを格納できると言うことはセキュリティ上問題となるデータも送りつけることが可能と言うことである。そのため、この自由度が逆に脆弱性になる場合もあるので注意が必要である。

データの格納という点では従来型のデータベースと大きな違いがみられるが、パフォーマンスは、一般的な用途にかぎれば、むしろ十分に「速い」とされている。

「sqlite」(sqlite3はバージョン3対応)というコマンドラインユーティリティーも付属しており、CUIでSQLiteのデータを操作できる。このユーティリティは標準入出力を使うので、シェルスクリプトなどでバッチ処理を行うことも出来る。

PHPからのデータアクセスはバージョン2のファイルに対してはsqlite関数が使えるが、バージョン3のファイルに対してはPDO経由となり、他のRDBMSへの移植性は高まるが、初心者にはその分ハードルが高くなる。

インストール

基本的にPHP5をインストールするときに、configureオプション(--with-sqliteなど)としてSQLiteも同時に組み込んで利用できるようになる。Apache friendsのXAMPPにもPHP5が含まれているが、デフォルトで利用できる。XAMPPにインストールされるSQLiteは、2008年1月現在バージョン2.8.17となっている。バージョン2とバージョン3とではファイル形式が異なるので、移行には変換処理が必要となる。公開されているSQLite関連ツールを使うときには、対応バージョンを確認する必要がある。

FedoraCentOS、Mac OS Xなどディストリビューションによっては、SQLiteがバージョン2あるいは3のみであったり、アクセスがPDO経由であったり、デフォルトでは利用できないことがある。このようなときはphp.iniの書き換え、あるいはPHP5のconfigureオプションを変更して、再度インストールしなければならないことがある。

Fedora8においてPHP5をインストールすると、バージョン3が同時にインストールされるが、利用するには/etc/php.iniに、extension=pdo.soとextension=pdo_sqlite.soの2行を書き加える必要がある。また新規のデータベースは/usr/bin/sqlite3コマンドラインツールで、ダミーのtableを含めて作成しておく。その上でPHPコード内ではPDO関数経由でSQLiteデータベースに接続する。

2008年10月現在、本家sqlite.orgからはsqlite(2)が入手できなくなっている。今後sqliteと言えばsqlite3を指すことになる可能性が高いので、レンタルサーバーではどちらが利用できるのか、phpinfo()で確認しておく必要がある。

管理ツール

XAMPPの最新バージョン(linux-1.6.5a)には、PhpSQLiteAdminという管理ツールが付属するようになった。ただし日本語表示には対応しておらず、データも文字化けする。ブラウザのエンコードを一時的にUTF-8に変更してもよいが、少なくともtable_browse.php内のcharsetをUTF-8に変更すれば、正しくデータ表示できるようになる。Linux版のPhpSQLiteAdminフォルダをそのままコピーすれば、パスの変更だけでWindows版XAMPPでも動作させることができる。

またSQLiteManagerという管理ツールはバージョン2とバージョン3に対応しており、こちらは日本語メニュー表示も選択できる。ただしデフォルトのcharsetはEUC-JPなので、UTF-8対応にするには、設定ファイルであるjapanese.inc.phpをUTF-8文字コードで書き換える必要がある。なおPhpSQLiteAdminとSQLiteManagerいずれも、自身には新規データベースを作成する機能はないので、あらかじめコマンドラインツールで作成しておき、そのファイルパスを登録して管理することになる。

ODBC

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

書籍

外部リンク

This article is from Wikipedia. All text is available under the terms of the GNU Free Documentation License.


Giant Panda

Mercedes Car
James Bond Guide
This site monitored by SitePinger.net