2

RDBMS の大きな利点の 1 つは、SQL が非常に宣言的で強力なクエリ言語であることです。MongoDB にクエリ言語があることは知っていますが、結合はカバーしていません。MongoDB 用の高度なクエリ言語を作成しようとした人はいますか

a) 異なるコレクション間の結合を処理しますか?

b) コレクション内のインデックスとインデックスのカーディナリティを調べることにより、結合をスマートに処理します。つまり、SQL のクエリ計画を模倣しますか?

(b) を使用して、Javascript コードと (a) を実行する Mongo ネイティブ クエリの組み合わせをスマートに出力する、より高レベルのクエリ言語を作成できるはずです。

4

1 に答える 1

12

1) MongoDB には「クエリ プランニング」があります。ただし、それは少し異なります。さまざまなオプションをスピンオフして同じクエリを並行して実行し、どれが最初に完了したかを確認し、それを記憶してコンパイルされたプランとしてしばらく使用し、データの変更などを説明するためにテストを再実行します。

2)コレクション間で JOIN を実行すると、Mongo がハッシュを実行し、異なるノード間でマージするため、他のクライアントの速度が低下します。このようなクエリを許可せず、アプリにプッシュすることは明らかに意識的な決定でした。必要なものがすべて揃っているようにドキュメントを設計する (したがって、ネストされたドキュメントをサポートする) か、クライアントで結合を行います。

最後になりましたが、NoSQL データベース全体で統一されたクエリ言語 - UnQL -を構築する試みがありましたが、列指向データベース、ドキュメント指向データベース、キー値データベース、グラフ データベースの間には大きな違いがあり、できることは非常に多くあります。データをクエリするプロセスを一般化します。

そして、主題に関するいくつかの詳細:

于 2012-05-02T17:49:52.017 に答える