オープンソースRDBMSのSQLiteをアプリケーション開発に使う(1)
いつもアクセスありがとうございます。匠技術研究所の谷山 亮治です。
今回は「オープンソースRDBMSのSQLiteをアプリケーション開発に使う」です。
SQLiteはサーバー・クライアント型ではなく「ライブラリ型」で、インストールも簡単で、アクセスも極めて容易な、データーベースエンジンとして知られています。SQLiteは、Firefoxなど様々なソフトウエアに組み込まれています。
SQLiteのホームページ(En)へ
昨今のハードウエアの進化がDBMSを使ったソフトウエア開発を大きく変えています。私のソフトウエア開発の得意分野は通信システム関連なので、一時的なデーターと、永続的なデーターが混在する場合が殆どです。一時的なデーターはなるべくRAM上に置き、永続的なデーターはファイルに書き出す、あるいはDBMSに渡すことを考えます。これまではIn Memory DBとしてRAM上に大量のデーターを置く際には、システムが持っているRAMの搭載量を勘案する必要がありました。一方で、近年のPCサーバーのRAMは十分な大きさを搭載しています。「問題が起こったら考えよう」から始められ、RAMの容量が足りなくならないようにサーバーをサイジングできます。また、CPUや内部バスも充分に高速になっているので、事実上「ハード資源で悩む必要はない」のです。
このような背景から、自身がソフト開発する際に使うDBMSの見直しを始めています。オープンソースのDBMSも時代に洗われて、たいへん良くなっています。私が開発するシステムは概ねコンパクトで、データーも、シンプルで容量も小さいものです。これまでは、開発言語の持つ「配列」にデーターアクセスメソッドを定義したものを自作で作り、使ってきました。これは、メモリーの消費を抑える工夫でもありました。そのようなデーター操作には、MySQL/MariaDBなどクライアント・サーバー型DBMS程の機能・性能を必要としません。軽自動車で充分な作業に、とても堅牢で大きなトラックを使おうとしているようなものです。そこで、RAM上で動作する軽量でコンパクトなIn memory DBとしてSQLiteを使い始めています。SQLiteを使い始めて、判ったのですが、SQLiteは「DBファイルをRAM上に置く」という指定が簡単にできます。RAM上に置いたDBファイルは、プログラムが稼働している間のみ存在し、プログラムが終了することで「消えます」。一時ファイルを作る必要のないこの方式は、まさに探していたものでした。
一方で、プログラムが終わっても、保存しておきたい「永続性が必要な情報」もあります。もちろん、単にファイルに書き出せば良いのですが、複数のプログラムから読み書きアクセスをするには工夫が必要です。その工夫を作るぐらいなら、莫大な実績のあるSQLiteを使った方が確実です。SQLiteはIn memory DBとしても使うので、プログラムから見たデーターアクセス・インターフェイスを統一できます。
次回に続きます。