DBD-SQLite-0.19 > DBD::SQLite

名前

DBD::SQLite - DBIドライバでの自己完結型(Self Contained)RDBMS

概要

  use DBI;
  my $dbh = DBI->connect("dbi:SQLite:dbname=dbfile","","");

説明

SQLiteは、パブリック・ドメインのRDBMSデータベース・エンジンです。このURLで 見つけることが出来ます: http://www.hwaci.com/sw/sqlite/.

SQLiteを先にインストールするように頼むよりも、SQLiteがパブリック・ドメイン であることから、DBD::SQLiteは全てのものをディストリビューションに 含んでいます。そのためあなたのperlプロジェクトのために、高速の トランザクション可能なRDBMSを動かすためには、単にこのモジュールを インストールすることだけが必要です。他には何もありません

SQLiteは以下の機能をサポートしています:

SQL92のサブセットの多くを実装

詳細は http://www.hwaci.com/sw/sqlite/lang.html をご覧ください。

単一のディスク・ファイルでの完全なDB

あなたのデータベースのための全ては1つのディスク・ファイルに格納されます。 これによりDBD::CSVよりも簡単に動かすことが出来ます。

アトミックなコミットとロールバック

そうです。DBD::SQLiteは小さく、軽量ですが、完全なトランザクションをサポートします。

これ以上のものがありますが、これままだ開発段階の初期です。そのため SQLの詳細については、、上に挙げたSQLite webページにあるドキュメントを 参照してください。

API

APIは厳密に各DBIモジュールがするように機能します。更なる詳細については DBIをご覧ください。

$dbh->func('last_insert_rowid')

このメソッドは最後に挿入されたrowidを返します。もしINTEGER PRIMARY KEYを あなたのテーブルでの先頭カラムとして指定すれば、返されるのはそのカラムになります。 そうでなければ、それは隠されたROWIDカラムになります。詳細については sqliteドキュメントをご覧ください。

注意

コマンドラインからデータベースにアクセスするためには、DBIモジュールに入っている dbishを試してみてください。コマンドラインでファイルfoo.dbにアクセスするためには 以下のようにタイプしてみてください:

  dbish dbi:SQLite:foo.db

代わりとして、上記のリンクからDBD::SQLiteにぶつかることなくSQLIteをインストール し、提供されるsqliteコマンドライン・ツールを使うことが出来ます。

パフォーマンス

SQLiteは高速です、非常に高速出る。私は最近、私の72MBのログ・ファイルを それで処理しました。単純に1000行毎にコミットしながら (そうでなければ挿入がとても遅くなります)、トランザクションを使って データ(400,000以上の行)を挿入し、そのデータに問い合わせを実行しました。

count(*) と avg(bytes) のような問い合わせは、たちまち返ってきました。 しかし何より驚いたことは:

  SELECT url, count(*) as count FROM access_log
    GROUP BY url
    ORDER BY count desc
    LIMIT 20

サイト(http://axkit.org)にヒットしたURLのトップ20を見つけることでした。 これを2秒以内で返しました。私は真剣に私のログ解析コードを、この小さな スピードの魔物を使うように変更することを考えています。

そうそう、テーブルにはインデックスをつけていませんし、400MHz PIIIの上です。

パフォーマンスを最高にするためには、linuxを使っているのであれば、 hdparamのセッティングを確実にチューンしてください。またこのように設定 したいかもしれません:

  PRAGMA default_synchronous = OFF

これは、いくらかの心配を犠牲にすることで、トランザクションを使わない 書込みを非常に遅くしてしまうfsyncがすることから、sqliteを保護します。 cache_size pragmaでも楽しんでみるようにしてください。

バグ

多くのものと同じように、バグの報告のためには http://rt.cpan.org/ を使ってください。

作者

Matt Sergeant, [email protected]

参考資料

DBI.