格納されたエンティティ間の関係を格納/維持するための nosql キー値ストアを探しています。Google App Engine のデータストアでは、エンティティ間の所有関係と非所有関係が許可されていることは知っています。人気のある nosql ストアのいずれかが同様のものを提供していますか?
それらのほとんどはスキーマレスですが、関係をキー値ストアに割り当てる方法はありますか?
格納されたエンティティ間の関係を格納/維持するための nosql キー値ストアを探しています。Google App Engine のデータストアでは、エンティティ間の所有関係と非所有関係が許可されていることは知っています。人気のある nosql ストアのいずれかが同様のものを提供していますか?
それらのほとんどはスキーマレスですが、関係をキー値ストアに割り当てる方法はありますか?
MongoDBはドキュメントデータベースであり、キー/値ストアではありません。ただし、単純な形式のドキュメント間参照を提供します。これらは、参照されるオブジェクトが削除されると自動的にnullになるSQL外部キーのように多かれ少なかれ機能します。
これは、外部キーを使用するのと同じ種類のものには十分ですが、深刻なグラフ走査には最適化されていません。
エンティティ間の関係をサポートするグラフ データベースのコア機能に属します。通常、エンティティをノードとしてモデル化し、関係をグラフの関係/エッジとしてモデル化します。RDBMSとは異なり、関係を事前に定義する必要はありません。必要に応じて関係をグラフに追加するだけです (スキーマ不要)。これが実際にどのように見えるかのいくつかの例を示すドメイン モデリング ギャラリーを作成しました。この例では、私が関与しているプロジェクトである Neo4j graphdb を使用しています。このプロジェクトのメーリング リストは、グラフ モデリングに関する質問に非常に役立つことが証明されています。
ドキュメント指向データベースRiakは、ドキュメント間のリンクをサポートしています。
任意のデータベース エンジン (キー/値など) の上にリレーションシップのサポートを追加できますが、うまくいかないわけではありません。それはすべてあなたのユースケースに帰着します。より詳細な情報を提供すると、有用な回答を簡単に見つけることができます。
おっと、タイトルに「nosqlストア」と表示されていることがわかりましたが、実際の質問はこれを「nosqlキー値ストア」に絞り込みます。キー/値ストアにはエンティティ間の関係を定義するためのセマンティクスがないため、回答を投稿します。
Google App Engine のリレーションシップは、コードでアクセスしたときに自動的に逆参照されるエンティティへのキーにすぎません。And は、フィルター処理に使用された場合の値のみです。明示的なものではなく、DB Api の関数であるため、ReferenceProperty へのアクセスは、参照モデルに対してクエリを実行してオブジェクトにアクセスするだけです。
MongoDB のようなものを見ると、リレーションシップはオブジェクト内に保存されます (私が覚えていることから) が、アイテムの結合テーブルを検索する API を作成するという意味で、必要に応じて保存することもできます。この関係は、App Engine が機能するのと同様の方法で行われます。
ポール。