[NoSQL データベースの] 注目すべき製品実装には、Google の BigTable、Amazon の Dynamo、および Cassandra が含まれます。
しかし、Google の BigTableには、 GQLと呼ばれる SQL のバリアントがあります。
私は何が欠けていますか?
NoSQL は、MySQL、Microsoft SQL Server、PostgreSQL など、「標準の」SQL データベースとは異なるすべてのデータベースの包括的な用語です。
これらの「標準」SQL データベースはすべてリレーショナル データベースであり、SQL クエリ言語を備え、ACID プロパティに準拠しています。これらのプロパティは、基本的に一貫性に要約されます。
NoSQL データベースは、いわゆる「SQL データベース」の主要な機能の 1 つ以上をサポートしていないため、異なります。
これらの機能のほとんどは密接に関連しています。
一貫性は、ほとんどの NoSQL データベースが SQL データベースと異なる点です。SQL データベースからプラグを抜くと、データの一貫性と破損がないことが保証されます。NoSQL データベースは、スケーラビリティを向上させるために、この一貫性を犠牲にする傾向があります。Google の Bigtable もこれを行います。
SQL データベースは、正規化されたリレーショナル データを中心に展開します。データベースは、何を投げても、これらの関係が有効で一貫性を保つことを保証します。通常、NoSQL データベースは関係をサポートしません。これは、これらの関係を強制する一貫性をサポートしていないためです。また、リレーショナル データは、データが複数のサーバーに分散されている場合、パフォーマンスが低下します。
グラフ データベースは例外です。これらは NoSQL データベースと見なされますが、リレーショナル データを備えています。実際、それが彼らのすべてです!
SQL 言語は、いわゆる「SQL データベース」と呼ばれるリレーショナル データベース用に特別に設計されました。ほとんどの NoSQL データベースはリレーショナル データベースとは大きく異なるため、SQL は必要ありません。また、一部の NoSQL データベースには、SQL では表現できない機能があり、別のクエリ言語が必要になります。
最後になりましたが、NoSQL は単なる流行語です。これは基本的に、「屋根裏部屋にある古くて信頼できる MySQL サーバー以外のすべて」を意味し、多くの代替ストレージ メカニズムが含まれています。単純なテキスト ファイルでさえ、NoSQL ソリューションと見なすことができます :)
人々が「NoSQL」と言うとき、彼らが一般的に意味するのは「非リレーショナル」です。私の知る限りでは、BigTable は主キー/外部キー、JOIN、またはあらゆるタイプのリレーショナル計算を備えていません。
BigTable が "SELECT" と "WHERE" という単語を含むクエリ構文を備えているという事実は、それがリレーショナル データベースの原則に準拠していることを意味するものではありません。リレーショナル データベースから来たプログラマーにとって、単一エンティティ タイプの一致をより使い慣れたものにすることは、より便利な、または「フック」です。