これを設定するために、ユーザーとこれらのユーザーを説明する一連のタグを持つ会社があります。各ユーザーには、最大 5000 個のタグを付けることができます。
クライアントが特定のタグを選択してタグ グループを作成できるようにするエンジンがあります。エンジンには、AND/Or 機能と包含/除外機能があります。クライアントはタグ グループを作成でき、当社のエンジンはタグ グループで指定された論理要件を満たすユーザーの総数を見つけます。基本的に、これは単なる交差、結合、および除外であるため、redis セットは完璧です。
これを処理するために、データをそのまま保存します。Tag1:[user1, user2,user3] Tag2:[user1, user5, user6] など
ここから、すべての bool ロジックはスクリプトを使用して実行されます。
しかし、当社の顧客基盤は急速に拡大しています。数年以内に、いくつかの 64 GB の redis サーバーまたは代替サーバーが必要になります。
これが私の質問です。ディスクベースのインターセクトとユニオンを実行するための非常に高速な DB オプションはありますか? Postgres を試してみましたが、パフォーマンスは受け入れられません。たとえば、500k ユーザー セットのセット比較には 1 秒かかります。Postgres では約 30 秒かかりましたが、タグ グループに多くのタグがある場合はそれ以上かかりました。
私は DynamoDB を推奨し、他にもいくつかありましたが、深く掘り下げる前に、知識に基づいた意見が欲しかっただけです。
ありがとう、ダン