第1章 データベースとSQLite
1-1. データベースとSQL
データベースとは、特定のテーマに沿ったデータを集めて管理し、検索や抽出などの利用をできるようにしたものをいいます。
特に、システム的な概念としては、大量のデータを格納し、更新、削除、抽出、並び替え、検索等を行います。
Perlには、DBMという標準で付属される簡易的なデータベースと呼ばれるものがあります。
しかしながら、大量データの格納と抽出等はできても、検索やソートまではできません。
そこで、Perlで高度なデータベースを構築するには、データベース専用のソフトウェアと連携を図ることになります。
そこで、Perlで高度なデータベースを構築するには、データベース専用のソフトウェアと連携を図ることになります。
データベースの操作を行う代表的な言語に、SQLがあります。
SQLとは、リレーショナルデータベース (RDB) (*1) の操作を行う言語の1つです。 SQLを使うことにより、Perlプログラムは、リレーショナルデータベース管理システム (RDBMS) (*2) に命令を出して、必要なデータをデータベースに格納したり、格納したデータを取得することができます。
SQLとは、リレーショナルデータベース (RDB) (*1) の操作を行う言語の1つです。 SQLを使うことにより、Perlプログラムは、リレーショナルデータベース管理システム (RDBMS) (*2) に命令を出して、必要なデータをデータベースに格納したり、格納したデータを取得することができます。
命令の流れ | プログラム |
要求 | RDBMS |
要求 | データベース |
|||
応答 | 応答 |
1-2. SQLiteとは
SQLiteとは、MySQLやPostgreSQLなどと同様に、RDBMSの1つです。
ただし、MySQLやPostgreSQLが、サーバと呼ばれる本格型のRDBMSであることに対して、SQLiteは組み込み型の軽量RDBMSであり、ライブラリ (*3) と呼ばれています。
ただし、機能的には中小規模のデータベースであれば、本格型のRDBMSと比べても全く遜色ないといわれています。
また、ライセンスはパブリック・ドメイン (*4) であるため、多くの用途に組み込み可能であり、またサーバを必要としないため一般ユーザー権限(管理者権限ではなく)からでも導入できるという手軽さがあります。
ただし、MySQLやPostgreSQLが、サーバと呼ばれる本格型のRDBMSであることに対して、SQLiteは組み込み型の軽量RDBMSであり、ライブラリ (*3) と呼ばれています。
ただし、機能的には中小規模のデータベースであれば、本格型のRDBMSと比べても全く遜色ないといわれています。
RDBMS | 体系 | 規模 |
---|---|---|
SQLite | ライブラリ(サーバー不要) | 中小規模向け |
MySQL/PostgreSQL等 | サーバ(クライアントサーバー型) | 大規模にも対応 |
1-3. Perlとの連携
SQLiteは、PerlやPHP等と組み合わせて使用されます。
Perlの場合、SQLiteは標準で組み込まれていますので、そのまま利用することができます。(*5)
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 へアクセスします。
(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