NoSQLの定義

2012年1月9日

『NoSQL Distilled』(NoSQL蒸留)の執筆に着手した途端、私たちは難しい難問に直面しました。それは、私たちは何について書いているのか? NoSQLデータベースとは一体何なのか?ということです。NoSQLデータベースには明確な定義、商標、標準化団体、さらにはマニフェストすら存在しません。

この用語は、2009年6月11日にサンフランシスコで開催されたヨハン・オスカーソン氏主催の非公式なミートアップで初めて登場しました。[1]このセッションでは、Voldemort、Cassandra、Dynomite、HBase、Hypertable、CouchDB、MongoDBに関するプレゼンテーションが行われました。この用語は急速に普及し、その会議で言及されたデータベースのみをNoSQLと呼ぶべきだと主張する人はほとんどいません。

実際、この名前自体にはしばしば解釈の揺らぎがあります。多くのNoSQL支持者は、NoSQLはSQLへの「ノー」を意味するのではなく、Not Only SQL(SQLだけではない)を意味すると述べています。この点に関して、個々のデータベースと、NoSQL支持者が未来の姿として考えているエコシステムの種類を区別することが有効だと考えます。「xはNoSQLデータベースである」と言う場合、NoSQLを「Not Only」と解釈するのは無意味なので、愚かなことだと思います。(そうすると、(例えば)SQL ServerはNoSQLデータベースであると合理的に主張できます。)したがって、「NoSQLデータベース」は「no-sql」データベースであると言うのが最善だと思います。NoSQLエコシステムは「not only」と別々に解釈する必要がありますが、この用法にはPolyglot Persistence(多言語永続化)という用語を好みます。[2]

この問題を解決しても、NoSQLデータベースを定義するのは依然として容易ではありません。SQLを使用しないデータベースはすべてNoSQLデータベースとみなされるのでしょうか? IMSMUMPSなどの古いデータベース技術はどうでしょうか? SQLを持たないリレーショナルシステム(初期のIngresなど)はどうでしょうか? 誰かが最初の7つのデータベースのいずれかにSQLインターフェースをボルトで固定することに成功したらどうなるでしょうか?

そこで、私たちの本では、NoSQLは最近の特定のデータベースの急増を指すと考えました。これらのデータベースには共通の特性がありますが、定義的なものはありません。

  • リレーショナルモデル(およびSQL言語)を使用しない
  • オープンソース
  • 大規模クラスターで実行するように設計されている
  • 21世紀のWebプロパティのニーズに基づいている
  • スキーマがなく、制御なしに任意のレコードにフィールドを追加できる

ソフトウェア業界における定義の曖昧な境界線には慣れていますが、またもや曖昧な定義が出てきたことに落胆せざるを得ません。しかし、重要なのは、これらのデータベースが、今後数十年でアプリケーションを構築する方法に重要な追加を提供するということです。明確な定義の欠如は、彼らの将来の成功にとって蚊に刺された程度の小さな問題に過ぎないでしょう。

注記

1: これが現在使用されている「NoSQL」の起源ですが、「NoSQL」という言葉が使用されたのはこれが初めてではありません。この言葉は、90年代後半にカルロ・ストロッツィ氏が主導したオープンソースのリレーショナルデータベースの名前として初めて使用されました。この名前はあまり注目されず、用語の一致以外には、今日の用法における「NoSQL」とは関係ありません。

2: 「not-only」という解釈をする場合、「NoSQL」ではなく「NOSQL」と書くべきです。しかし、ほとんどの場合、「NoSQL」と書かれています。