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 の可能なプロパティのうち、独自のプロパティのサブセットを持っています。
最も重要なことは次のとおりです。
次のクエリをできるだけ早く実行するには: email=xx@xx.com OR car=Mercedes OR food=pasta OR color=black OR color=blue OR userid=10 OR userid=20 のすべてのユーザーを見つけてください。各クエリで、プロパティのさまざまなサブセットをクエリします。
新しいプロパティを DB に簡単に追加できるようにするため。つまり、いつの日か「Gender」プロパティも追加したいと思うでしょう。このプロパティのクエリを高速にしたいと考えています。
各ユーザーはプロパティのサブセットのみを持っています
クエリは「property=value」になります。「property>value」や「property start with value」などのクエリは必要ありません。すべての値を定数キーとして扱います。
多くの場合、新しいユーザーを追加しますが、最も重要なことは、すばやくクエリを実行することです。
永続的でスケーラブルで、フェイルオーバーを備えている必要があります
よろしければ、私の Web アプリは Java で作成します