1

アプリケーションのデータベースを MySQL から NoSQL (MongoDB) に移行中です。ただし、MongoDB をどのように構築すればよいかについて、少し混乱しています。

私の現在の MySQL セットアップには、ユーザー用とカレンダー用の 2 つのテーブルがあります。各ユーザーとカレンダーには一意の ID があります。各ユーザー エントリには、そのユーザーに関連付けられたカレンダー ID のリストが含まれています。各カレンダー エントリには、それを作成したユーザーの ID も含まれています。

私が直面している問題は、2 つの状況があることです。ログイン コンソールの場合、ユーザーが作成したすべてのカレンダーをユーザーにすばやく表示する必要があります。フロントエンド Web サイトでは、使用可能なすべてのカレンダーを作成者と共に表示する必要があります。

MySQL では、JOIN を使用してこのデータを非常に迅速にクエリします。MongoDB (または任意の NoSQL データベース) でこれと同じ機能を実現するにはどうすればよいですか?

4

1 に答える 1

2

あなたはほとんど結論に達しました。結合なしのオプションは 2 つだけです。

  1. 非正規化 (ユーザー文書に埋め込まれたカレンダーを保存)
  2. 別々のクエリを作成します (最初にユーザーをロードし、次に彼のカレンダーをロードします)

どちらのアプローチにも長所と短所があり、何度も議論されています (「mongodb の埋め込みまたは参照」をグーグルで検索してみてください)。

要するに、埋め込みは読み取りを高速化し、参照はより豊富なクエリとより簡単で高速な書き込みを提供します。

于 2012-07-06T11:41:32.920 に答える