web-dev-qa-db-ja.com

MongoDBのERDと同等ですか?

MongoDBなどのNoSQLデータベースのERDに相当するものは何ですか?

41
Catalin Braescu

Quoraで同様の質問 を質問したようです。

そこに述べられているように、ERDは単に、保存しようとしているデータとそのデータ間の関係のマッピングです。

データと関係を追跡したいので、MongoDBでERDを作成できます。大きな違いは、MongoDBには結合がないため、ERDを実際のスキーマに変換するときに、関係の実装について特定の決定を行う必要があります。

特に、このデータが実際にどのように格納されるかを決定するときは、 "埋め込みと参照" の決定を行う必要があります。関係は許可されていますが、強制されていません。 MongoDBのラッパーの多くは、実際にコレクション全体のルックアップを提供して、この複雑さの一部を抽象化しています。

MongoDBはスキーマを適用しませんが、完全にランダムに処理することはお勧めしません。システム内にあると予想されるデータをモデル化することは依然として非常に良いアイデアであり、それがERDが提供するものです。

したがって、ERDと同等のものは the ERD

31
Gates VP

同じ問題についてかなり長い間考えてきました。そして、私は次の結論に達しました。NoSQLデータベースが一般にスキーマレスである場合、図に示す「スキーマ」は実際にはありません。

したがって、私は「例による」アプローチを取るべきだと思います。 MongoDBなどのNoSQL DBにデータを保存すると、データがどのように見えるかを例示するマインドマップを描画できます。

また、これらのデータベースは非常に動的であるため、派生マインドマップを作成して、今日のデータが時間とともにどのように進化するかを示すこともできます。

このトピックもご覧ください。

NoSQL設計に関する混乱

2
Gabriel C

ドキュメント指向の「スキーマ」を図式化する標準的な手段を知りません。

ERDを使用してスキーマを作成することはできると思いますが、ドキュメントデータベースはデータ間の関係を実際にサポートしていないため、つまり、関係を強制することはできないため、コードがそのような関係を内部的に強制するように規律されている場合にのみ有用です。 。

2
Rob Raisch

代わりに、UMLクラス図を使用することもできます。

2
sinha

Moon Modeler MongoDBのスキーマ設計をサポートします。ネストされた構造を持つダイアグラムを定義できます。

1
Vaclav

MongoDBは、INNER JOIN(デフォルトのSQL結合)のSQLの意味ではなく、「結合」をサポートしています。 「結合」の概念は通常SQLに関連付けられていますが、MongoDBにはデータ処理パイプラインステージを備えた集約フレームワークがあります。 $ lookupパイプラインステージは、SQLのLEFT JOINに相当するものを作成するために使用されます。つまり、関係の左側にあるすべてのドキュメントは、関係の右側にある関連ドキュメントと同様に、パイプラインを通過します。ドキュメントが変更され、新しいドキュメントの一部として関係が含まれます。

したがって、私はエンティティ関係図がMongoDBで役割を果たすと仮定します。ドキュメントは確かにデータベース内で相互に関連しており、カーディナリティ関係など、これらの関係を視覚化する必要があります。完全参加、部分参加、弱い/強いエンティティなど.

もちろん、MongoDBは埋め込みドキュメントと参照ドキュメントの概念も導入しているため、ERDのモデルに新たな風味を加えていると思います。そして、埋め込まれた参照された関係を視覚的な図にマッピングしたいのは確かです。

残りの質問は、そこに何があるのですか? Mongoose for NodeJSには何がありますか? RubyのMongoid?など。対応するORM(オブジェクトリレーショナルマッパー)のそれぞれのリポジトリを確認すると、それらのERDがあることがわかります。しかし、それらの完全性に関しては、おそらく望まれることがたくさんあり、オープンソースコミュニティは貢献を歓迎します。

https://www.npmjs.com/package/mongoose-erd

https://rubygems.org/gems/railroady

0
Donato