開発の歴史と紹介
MiniSQL、またはmSQLは、軽量なデータベース・エンジンで、少ないメモリーの使用で、保存したデータへのアクセスを迅速に行えるよう設計されています。その名前自体が表しているように、mSQLはクエリーのためにSQLの機能を提供しています。サポートされている機能は限られています(ビュー、入れ子のクエリーなどは不可)が、サポートされている機能はすべて、ANSI
SQLの仕様に準拠しています。mSQLに含まれているのは、データベース・エンジン、端末「モニター」プログラム、データベース管理プログラム、スキーマ・ビューワ、C言語APIなどです。APIとデータベース・エンジンは、TCP/IPネットワークを通じて、クライアント/サーバー環境で稼働するよう設計されています。
新たにこのデータベース・ソフトウェアを開発することになった理由は、データベースの「フリーウェア」または「シェアウェア」に適切なパッケージがなかったことです。開発を進めていた時点では、SQLをクエリー言語としてサポートしているデータベース・パッケージはありませんでした。研究者用に開発された最も著名なデータベースとして、カリフォルニア州立大学バークレー校のPostgresがあります。このソフトウェアでは、クエリー言語としてPostQUELを使用していました。この言語は、オリジナルのIngres
QUELを改良したものです。
mSQLは、Minervaネットワーク管理環境のデータベース・バックエンドとして開発されました。元来、MinervaではPostgresをデータベースとして使用しており、クエリー言語としては
PostQUELを利用していました。しかし、初期のアルファ・テストで、SQLによるクエリーを可能にすべきとのコメントが出されました。IngresまたはOracleなど製品版のデータベースを使用しているサイトでは、Postgresを導入しなくても、既存のデータベースをそのまま使えるからです。この要望に答えるため、mSQLは文字どおりSQLをPostQUELに変換するソフトとして開発されました。変換ソフトとして開発したのは、製品版のデータベースを導入していないサイトでも、Postgresをそのまま使えるからです。(その当時は、「フリー」のSQLエンジンは存在していなかったと思われます。)
その後、Minervaはさらに機能拡張していきましたが、Postgresは大きなメモリーを必要とするようになり、すべての機能を維持するのは困難になりました。それまで、処理速度を向上させるため、Minervaはモニターとデータの入出力を並行して実行していました。しかし、データの入出力のためには、Postgresのバックエンド・コピーが別にもう1つ必要とされていたのです。Postgresの各バックエンド・コピーは、約1.5メガのメモリーを使ってしまうため、これが問題となりました。結局は、データ入出力の並行処理は行わないように改良されました。
Postgresは大規模で高機能なソフトウェアですが、これを利用できるプラットフォームは限られていました。Minervaのアルファ・テストを希望していたユーザーの一部が、シリコン・グラフィックス社のマシーンで稼働させたいと要求を出してきました。しかし、PostgresではSGIのマシーンをサポートしていなかったため、彼らはアルファ・テストに参加できませんでした。MinervaではPostgresの一部の機能しか利用しておらず、ほとんどのプラットフォームではメモリーの使用が大きくなるのは望ましいことではなかったため、MinervaでPostgresを利用するのは最善の選択とは言えなくなっていました。このような背景があって、mSQLの開発が始められたのです。
Postgresは、強力な機能を数多くそなえている優れたデータベース・パッケージです。したがって、ここまでの解説は、Postgresの成功を否定するものではありません。Minerva自体がPostgresの一部機能しか利用しない(リレーショナルな結合すら必要ありません)ため、Postgresほどに先進的で強力なデータベースは必要ではなかったのです。