私はそれを認めます...NoSQLの世界に関しては、理論の概念がたくさんありません。
Java+MySQLを使用してNodeJS+MongoDBにいくつかの単純なアプリを移植することを考えていました(本当にクールに見えるマングースORMを見つけました)。
私が最初に非常に難しく、文書化されていないことに気付いたのは、多対多の関係をマッピングすることです。
私は最初にMongo-DOCSを読みました:http ://www.mongodb.org/display/DOCS/Schema+Design
...その後、実際の情報を探し回ったところ、そのようなQ&Aがたくさん見つかりました。Mongoでの多対多の参加に関するデータのモデリング?
M:Nを達成する方法があります、かっこいい!しかし、それから私は本当に怖くてがっかりする何かを読みました。「正直なところ、結合が必要な場合は、リレーショナルデータベースを使用します。」
わかった!要点はわかりますが....共通のユーザー+ロール+UserRolesの多対多スキーマがあり、埋め込みを使用していると想像してください。つまり、ロールに別のテーブルスキーマを使用せず、すべてのユーザーでのみ使用します。その中の役割データ
する必要がある:
- db内のすべてのユーザーを照会し、それらの役割データも読み取ります。
- たとえば、ユーザーの作成に関連付けられた役割を選択するために、データベースで使用可能なすべての役割を照会します。
最初のポイントは些細なことですが、2番目のポイントはどうですか?
別のテーブルスキーマ「Roles」が必要であり、「User」にロールのIDを含むロール配列を格納する必要があることを教えてください。しかし、これはリレーショナルな世界であることがわかります。
NoSQLデータベースには適していないことを教えてくれますか?では、何でしょうか?