3

私は最近、Web アプリのバックエンドの一部である MongoDB に移行しました。Web アプリ自体は検証ツールであり、ワークフローは次のようになります。

  • ユーザーがファイルをアップロードする (通常は数十万行)
  • バリデーターは、多くのメッセージを出力してチェックします (1 行に 1 つ以上の可能性があります)。
  • ...そして最後にいくつかの統計を提供します

各ユーザーが次のものを含む独自の DB を持つように、アプリケーションをモデル化しました。

  • ファイル (GridFS 経由で保存)
  • メッセージを含むコレクション (場合によっては 100 万行を超える可能性があります)
  • 統計を含むコレクション

数百人のユーザーがいるので、MongoDB は数百の DB を持つことになります。

もちろん、名前空間を使用して異なるユーザーからデータを分離し、すべてのデータを同じ DB に保持することもできます。ただし、接続 URI で DB を送信する方が便利だと感じました。また、大規模な DB でデータを検索して削除するよりも、「データベースのドロップ」ステートメントを発行してユーザーをパージする方が直感的であることがわかりました。

私は MongoDB にかなり慣れていないので、私の質問は次のとおりです。同じ MongoDB インスタンスに複数の DB を持つことに欠点はありますか? または、この問題について特別に考慮すべきことはありますか?

4

1 に答える 1

0

特にMongoDBには詳しくありません。一般に、データベースへの接続を開く操作は比較的遅く、システム リソースを占有します。あなたの場合、これで十分かどうかはわかりません。

ユーザーごとに異なるデータベースを使用すると、複数のユーザーのデータにアクセスするクエリを実行することが難しくなります。たぶん、これを行う必要はありません。

それでも、個別のデータベースを作成するよりも、各レコードにユーザー ID を入れるだけの方が、一般的にはずっと簡単だと思います。個別のデータベースの利点は何ですか? ユーザーを削除するということは、「データベースを削除する」ということです。しかし、単一のデータベースからユーザーを削除するということは、「user=? の tableX から削除する; user=? の tableY から削除する」ということを意味するはずです。など、関連するテーブルがたくさんあります。数百とは思えませんよね?半ダースほどのコードでしょうか?

于 2013-03-08T16:10:43.650 に答える