はじめに
NoSQLは、従来のSQLデータベースに代わるものです。時間の経過とともに、リレーショナルデータベースは特定のユースケースには不十分であることが判明しました。これらの制限は、サポートする必要のあるアプリケーションによって異なります。
さまざまな開発者が、ニーズに応じてさまざまな課題を克服することに焦点を当てました。その結果、さまざまな種類のNoSQLデータベースが作成されました。
このチュートリアルは、NoSQLデータベースタイプに焦点を当てています。 NoSQL、その機能、およびいつ使用するかについてのより詳細なガイドについては、記事「NoSQLとは」をご覧ください。
NoSQLデータベースの種類
4つの一般的なNoSQLデータベースタイプがあります:
- キーバリューデータベース
- ドキュメントデータベース
- ワイドカラムデータベース
- グラフデータベース
Key-Valueデータベース
Key-Valueデータベースは、最も単純なタイプのNoSQLデータベースです。シンプルなため、最もスケーラブルであり、大量のデータを水平方向にスケーリングできます。
これらのNoSQLデータベースには、データのフィールドを表すオブジェクトのセットで構成される辞書データ構造があります。各オブジェクトには一意のキーが割り当てられます。特定のオブジェクトに保存されているデータを取得するには、特定のキーを使用する必要があります。次に、キーに割り当てられた値(つまりデータ)を取得します。この値は、数値、文字列、または別のキーと値のペアのセットにすることができます。
従来のリレーショナルデータベースとは異なり、Key-Valueデータベースは事前定義された構造を必要としません。データを保存する際の柔軟性が高まり、パフォーマンスが向上します。キーバリューデータベースは、プレースホルダーに依存する必要がなく、必要なリソースが少ないため、より軽量なソリューションです。
このような機能は、単純なデータを処理する大規模なデータベースに適しています。したがって、これらは一般的にキャッシングに使用されます 、保存 、およびユーザーセッションの管理 、広告サービス 、および推奨事項 。
Redis、Project Voldemort、Riakは、Key-Valueデータベースのほんの一例です。
ドキュメントデータベース
ドキュメントデータベースは、ドキュメントに格納されたキーと値のペアのセットで構成されるNoSQLデータベースの一種です。これらのドキュメントはデータの基本単位であり、機能に基づいてコレクション(データベース)にグループ化することもできます。
NoSQLデータベースであるため、スキーマを実装しなくてもデータを簡単に保存できます。いくつかの異なる形式を使用して、オブジェクトモデルをドキュメントに直接転送できます。最も一般的に使用されるのは、JSON、BSON、およびXMLです。
これは、3つのキーと値のペアで構成されるJSON形式の単純なドキュメントの例です。
{
"ID" : "001",
"Name" : "John",
"Grade" : "Senior",
}
さらに、このような形式でネストされたクエリを使用して、複数のディスク間でのデータ分散を容易にし、パフォーマンスを向上させることもできます。
たとえば、上記のドキュメントにネストされた値の文字列を追加できます。
{
"ID" : "001",
"Name" : "John",
"Grade" : "Senior",
"Classes" : {
"Class1" : "English"
"Class2" : "Geometry"
"Class3" : "History"
}
}
その構造により、ドキュメントデータベースは、柔軟性と迅速で継続的な開発を必要とするユースケースに最適です。たとえば、ユーザープロファイルの管理に使用できます。 、提供される情報によって異なります。スキーマのない構造により、さまざまな属性と値を使用できます。
NoSQLドキュメントデータベースの例には、MongoDB、CouchDB、Elasticsearchなどがあります。
ワイドカラムデータベース
ワイドカラムストアは、別の種類のNoSQLデータベースです。それらの中で、データは保存され、行ではなく別々に保存された列にグループ化されます。このようなデータベースは、リレーショナルデータベースのテーブルと同様に機能する列に情報を編成します。
ただし、従来のデータベースとは異なり、ワイドカラムデータベースは非常に柔軟性があります。事前定義されたキーや列名はありません。スキーマフリーの特性により、同じテーブル内でも列名を変更したり、リアルタイムで列を追加したりできます。
列指向データベースを持つことの最も重要な利点は、単一の列内に大量のデータを格納できることです。この機能により、ディスクリソースと、ディスクリソースから情報を取得するのにかかる時間を削減できます。また、複数のサーバーにデータを分散する必要がある状況でも優れています。
人気のあるワイドカラムデータベースの例には、Apache Cassandra、HBase、CosmoDBなどがあります。
グラフデータベース
グラフデータベースは、柔軟なグラフィック表現を使用してデータを管理します。
これらのグラフは、次の2つの要素で構成されています。
- ノード (データエンティティを保存するため)
- エッジ (エンティティ間の関係を保存するため)
エンティティ間のこれらの関係により、ストア内のデータを直接リンクし、多くの場合、1回の操作で取得できます。ノードとエッジにはプロパティが定義されており、これらのプロパティを使用することで、データを簡単にクエリできます。
このタイプのデータ保存は非常に特殊であるため、一般的に使用されるNoSQLデータベースではありません。ただし、グラフィック表現を使用することが最善の解決策である特定のユースケースがあります。たとえば、ソーシャルネットワークでは、ユーザーがどのようにリンクされているかに関する情報を保存するためにグラフを使用することがよくあります。
OrientDB、RedisGraph、およびNeo4jは、使用を検討する必要があるグラフデータベースのほんの一例です。