0

1B ユーザーの DB があり、各ユーザーには複数のプロパティがあります。例えば:

{userid : 1, emails : {xx@xx.com, yy@yy.com, zz@zz.com}, countries : {Italy, France, USA}, food : {pasta}}

各プロパティには複数の値を含めることができます。

Web アプリの有効期間中に、車、色などのプロパティを追加したいと考えています。

したがって、通常、10 億人のユーザーがいて、それぞれが 3 ~ 20 のプロパティを持っています。すべてのユーザーは、20 の可能なプロパティのうち、独自のプロパティのサブセットを持っています。

最も重要なことは次のとおりです。

  1. 次のクエリをできるだけ早く実行するには: email=xx@xx.com OR car=Mercedes OR food=pasta OR color=black OR color=blue OR userid=10 OR userid=20 のすべてのユーザーを見つけてください。各クエリで、プロパティのさまざまなサブセットをクエリします。

  2. 新しいプロパティを DB に簡単に追加できるようにするため。つまり、いつの日か「Gender」プロパティも追加したいと思うでしょう。このプロパティのクエリを高速にしたいと考えています。

  3. 各ユーザーはプロパティのサブセットのみを持っています

  4. クエリは「property=value」になります。「property>value」や「property start with value」などのクエリは必要ありません。すべての値を定数キーとして扱います。

  5. 多くの場合、新しいユーザーを追加しますが、最も重要なことは、すばやくクエリを実行することです。

  6. 永続的でスケーラブルで、フェイルオーバーを備えている必要があります

  7. よろしければ、私の Web アプリは Java で作成します

4

1 に答える 1

1

速いとはどういう意味ですか?

ほとんどのデータベースは、あなたが望むことをできる限り速く実行します。特定の遅延要件がない限り、mongodb のような一般的な nosql データベースを選択します。

パフォーマンスを向上させるために、このタイプのクエリ用に設計された LDAP データベースを使用できます。これらは、1 秒あたり 10 万件以上のクエリと 10 万件以上のユーザーがいる場合に特に役立ちます。

于 2012-06-28T11:27:15.597 に答える