2

私は学習目的のプロジェクトに取り組んでいます。このプロジェクトはそのトピックのために私にとって魅力的であるため、私は良い基盤を構築し、最終的にはそれをライブにしたいと思っています。

私のプロジェクトは非常に複雑なので、私の質問が何であるかを説明するために、アジェンダアプリケーションであるフィクションプロジェクトを使用します。

このWebアプリケーションには、ユーザーがイベントやリマインダーを追加できるカレンダーがあります。たとえば、10,000人のユーザーが使用し、10,000人のユーザーが数千のイベントやリマインダーを追加します。

私の質問は、データベース構造に関連して2つの方法のどちらをお勧めしますか?

  • (ユーザー作成時に)ユーザーごとにリマインダーとイベントテーブルを含む個別のデータベースを作成し、データベースを個別のデータベース内のユーザーに関連付ける必要があります
  • または、イベント用に1つ、リマインダー用に1つ、ユーザー用に1つのテーブルを作成し、それらを1つのデータベースで相互に関連付ける必要がありますか?

私はこれまでマルチユーザーのWebアプリケーションを実行したことがなく、多くのユーザーに関してはデータベース構造のアプローチに精通していません。あなたが考えているデザインパターンがあれば、共有していただければ幸いです:)

4

2 に答える 2

5

これが私の意見です:

  1. いいえ、ユーザーごとに個別のデータベースを作成しないでください。スケーリングできません。つまり、ユーザーを追加するたびに、新しいデータベースを作成する必要がありますか?一度もない。
  2. 1つのデータベース、複数のユーザー-それがリレーショナルデータベースの目的です。

10,000人のユーザーはそれほど多くのオーディエンスではありません。それぞれが数千のイベントとリマインダーを作成することは、1,000万のイベント、1,000万のリマインダーを意味します。これは、大規模なリレーショナルデータベースとは見なされません。

古いレコードのパーティション分割とパージについて心配する必要があるかもしれません。これらのイベントやリマインダーを維持するために、どのようなポリシーを設定しますか?ユーザーは1年後にどのようなアクセス権を持ちますか?5年?10年?それらも考えるのに良いトピックでしょう。

実体/関係モデリングについての良い本を手に入れて、それを注意深く読んでください。アマゾンで現代的なものなら何でもかまいません。

于 2012-06-21T09:51:45.437 に答える
1

私は以前、各ユーザーデータが別々のデータベース(オプション1)に保持されているデータベースで作業していましたが、作業するのは悪夢であり、会社はこれらすべてのデータベースを1つのデータベースに統合するために膨大なリソースを費やしました。それは簡単な作業ではありませんでした。

@duffymoが述べたように、リレーショナルデータベースの目的は1つのデータベース/複数のユーザーです。

于 2012-06-21T15:43:10.113 に答える