第1章 データベースとSQLite

1-1. データベースとSQL

データベースとは、特定のテーマに沿ったデータを集めて管理し、検索や抽出などの利用をできるようにしたものをいいます。 特に、システム的な概念としては、大量のデータを格納し、更新、削除、抽出、並び替え、検索等を行います。
Perlには、DBMという標準で付属される簡易的なデータベースと呼ばれるものがあります。 しかしながら、大量データの格納と抽出等はできても、検索やソートまではできません。
そこで、Perlで高度なデータベースを構築するには、データベース専用のソフトウェアと連携を図ることになります。
データベースの操作を行う代表的な言語に、SQLがあります。
SQLとは、リレーショナルデータベース (RDB) (*1) の操作を行う言語の1つです。 SQLを使うことにより、Perlプログラムは、リレーショナルデータベース管理システム (RDBMS) (*2) に命令を出して、必要なデータをデータベースに格納したり、格納したデータを取得することができます。
命令の流れ
プログラム
要求
RDBMS
要求
データベース
応答 応答
pagetop

1-2. SQLiteとは

SQLiteとは、MySQLやPostgreSQLなどと同様に、RDBMSの1つです。
ただし、MySQLやPostgreSQLが、サーバと呼ばれる本格型のRDBMSであることに対して、SQLiteは組み込み型の軽量RDBMSであり、ライブラリ (*3) と呼ばれています。
ただし、機能的には中小規模のデータベースであれば、本格型のRDBMSと比べても全く遜色ないといわれています。
RDBMS 体系 規模
SQLite ライブラリ(サーバー不要) 中小規模向け
MySQL/PostgreSQL等 サーバ(クライアントサーバー型) 大規模にも対応
また、ライセンスはパブリック・ドメイン (*4) であるため、多くの用途に組み込み可能であり、またサーバを必要としないため一般ユーザー権限(管理者権限ではなく)からでも導入できるという手軽さがあります。
pagetop

1-3. Perlとの連携

SQLiteは、PerlやPHP等と組み合わせて使用されます。
Perlの場合、SQLiteは標準で組み込まれていますので、そのまま利用することができます。(*5)
もし、ご利用の環境でSQLiteが組み込まれていない場合には、個別にインストールする必要があります。 ただし、root権限(管理者権限)が必要ですので、共有のレンタルサーバを利用されている場合には、難しいといえます。
以下のようなレンタルサーバであれば、SQLiteの組み込みが確認されていますので、今後の利用を計画している場合には参考にしてみてください。
レンタルサーバ会社名 サイト
Cside Net http://www.cside.jp/
ロリポップ http://lolipop.jp/
さくらインターネット http://www.sakura.ne.jp/
現在利用しているサーバで、SQLiteの利用可否を試してみたい場合には、以下のPerlプログラムを実行することで利用可否をチェックすることができます。
【利用方法】
(1) 下記コードをコピーし、sqlchk.cgi というファイル名で保存します。
(2) 1行目のPerlのパスは、お使いのサーバのものに合わせます。
(3) サーバへ、アスキーモードでFTP転送します。
(4) パーミッションを705に設定し、ブラウザから sqlchk.cgi へアクセスします。
#!/usr/local/bin/perl

# SQLite Checker by kent
# sqlchk.cgi

use strict;

print <<EOM;
Content-type: text/html; charset=shift_jis

<html>
<body>
EOM

eval { require DBI; };
if ($@) {
	print "DBI 使用NG<br>\n";
} else {
	print "DBI 使用OK<br>\n";
}

undef $@;
eval { require DBD::SQLite; };
if ($@) {
	print "DBD::SQLite 使用NG<br>\n";
} else {
	print "DBD::SQLite 使用OK<br>\n";
}

print <<EOM;
</body>
</html>
EOM
pagetop
【脚注】
*1 : データベース (DB) を表形式で管理する方式で、中小規模のDBでは最も一般的。DBの操作は通常SQL言語が使用される。
*2 : リレーショナルデータベースを管理するソフトウェア。Oracle, MySQL, Access等がそれにあたる。
*3 : 汎用性の高い複数のプログラムを、再利用可能な形でひとまとまりにしたもの。
*4 : 社会的な公共財産の意。著作者が、敢えて著作権を放棄した公共財的な位置にあるもの。
*5 : Perl5.8以降で標準モジュールになっているようです。筆者の知るとろころでは、Perl5.6では組み込まれていませんでした。