0

mongoDB は外部キーをサポートしていないため、DBReF に使用できると読みました。ここで、この関係をテストしたいと思います。

2つのコレクションは

db.professor.insert({"_id": 1122, "Name":"Heinrich","Rang": "C3","Raum":"D123"}) db.assistent.insert({"_id": 2244,"Name":"Schmidt","Fachgebiet":"Neuronale Netze","Boss":{"$ref":"professor","$id":1122}})

最初の質問ですが、参考にすべきではないのですが、間違ったIDが想定されている可能性があります。また、正しい ID $ id のエントリがある場合、参照をテストするにはどうすればよいですか?

背景は、mongoDB のデータ整合性機能を調べることです。誰かがmongoDBとデータの整合性に関する情報源を持っていますか?

4

1 に答える 1

1

MongoDB のコレクション間データの整合性はゼロです。これは MongoDB の動作のバグではなく、この動作の変更が望まれるものでもありません。

コレクション間のデータの整合性がないことは、この動作が一般的に関連付けられている NoSQL ( http://en.wikipedia.org/wiki/NoSQL ) 製品としてのコア機能の 1 つです (必須ではないと言われています)。

もちろん、これは一般的なデータの整合性とは関係ありませんが、サーバー側のリレーションシップのカスケードと参照です。

DBRef ( http://docs.mongodb.org/manual/applications/database-references/ObjectId ) は、単にドキュメントに保存するのと同じです。唯一の実際の違いは、コレクション名を格納するプロパティも格納するオブジェクトのオブジェクトであることです。アプリケーションの他の行をクエリできるようにするためのヘルパーとして、ほとんどの (すべてではないにしても) 言語の MongoDB ドライバーに事前にバンドルされていることを除いて、DBRef について特別なことは何もありません。

多くの人が DBRef の目的を混同していますが、DBRef について本当に特別なことは何もないことを保証します。

したがって、間違って入力したかどうかを確認するチェックはObjectIdなく、関係にカスケードはなく、MongoDB には「外部キー」の動作はありません。

すべてのリレーショナル整合性は、アプリケーションと、データ内の問題を防ぐような方法で動作するその機能からもたらされます。これは、疑似リレーションの挿入とカスケードの両方に適用されます。

MongoDB に関するこれらの簡単な事実を考慮すると、テストはほとんど役に立ちません。リレーショナル モデルのデータ整合性をテストする場合は、リレーショナル データベースを使用する必要があります。

于 2013-01-10T21:23:43.817 に答える