0

Ming を使用して、MongoDB の「リレーショナル」メタデータ (実験名など) を使用して、主に非リレーショナル データ (ラボで測定された信号) である 100 GB 以上のデータ セットをモデル化することに興味があります。これは、NoSql データベースを使用する必要があるかどうかの問題ではありません。

ODM を使用した関係のモデリング (たとえば、Ming のバージョンはこちら) が有効な設計パターンである場合、他の一般的な ODM がその機能を提供しないのはなぜですか? 次のいずれにも表示されませんでした。

-マングース (MongoDB)

-cqlengine (カサンドラ)

・ヘクター(カサンドラ)

-ドクトリン (CouchDB)

4

1 に答える 1

3

NoSQL データ ストアでリレーションシップをモデル化することは間違いなく有効ですが、高度なリレーショナル データがある場合は、選択したデータ ストアとスキーマの設計がユース ケースの目標に合っているかどうかを再検討することをお勧めします。

MongoDB では、(ユース ケースに基づく) 一般的な決定は、関連するデータを同じコレクションに埋め込むか、別のコレクションのドキュメントへの参照リンクを使用して関係をモデル化する方が適切かどうかです (参照: のデータ モデルの設計MongoDB マニュアル)。

通常、外部キーの関係は、分散 NoSQL データベースからのサーバー側のサポートによって設定または適用されません。そのため、ODM での宣言的な参照は、サーバー上で複数のクエリに変換されることがよくあります。複数のクエリが必ずしも悪いわけではありません (不十分な極端な記述がある場合もあります)。参照を使用したアプリケーション レベルのデータ結合は非常に便利です。

特に MongoDB の場合、データベース参照 (DBRefs)用の BSON フィールド タイプがあります。現在 (MongoDB 2.6 のように) サーバー側での DBRef の拡張はサポートされていませんが、ドライバーと ODM の多くは、この標準表記法で参照を追跡および設定するための便利なメソッドを提供しています。

これは、あなたが言及したいくつかの ODM で使用されていることがわかります。

通常、ODM では、参照の自動生成または遅延生成 (つまり、必要に応じて、またはコードでアクセス) のいずれかを選択できます。

私は Cassandra ライブラリに詳しくありませんが、ドキュメントで参照や関係について明確に言及されているのを見たことがありません。関係機能の有無は、特定のパターン/アンチパターンというよりも、ODM の作成者の選択によるものだと思います。

于 2014-07-07T03:20:39.873 に答える