DynamoDBにMessagesテーブルがあります。送信者、タイムスタンプ、メッセージ、受信者の4つの列があります。私は、4つの列のいずれかを使用してパーティションキーを作成するのではなく、送信者を連結する別の列を作成しないでください&タイムスタンプ&受信者。DynamoDBのパーティションキーの最適化
この列には、JohnSmithID1461754484307SallyMcDonaldIDのようなデータが格納されます。
このようにすると、特定の送信者&受信者のコンボからメッセージを検索するときに、この1つの列を使用してクエリ(like & end with)を使用してクエリできます。この列を利用するにはいくつかの方法があります。
質問1.クエリをいくつかの列に分散するのではなく、1つの列を使用することで、ここで問題が複雑になりますか?
質問2.この方向をとることで、パフォーマンスが大幅に向上しますか?
質問3データサイズの目的で、SenderId &の列を削除すると、このデザインパターンは価値がありますか? (私はソートキーのタイムスタンプ列が必要です)
私は3つのフィルタパラメータを使用してクエリを実行したいと言っていますが、セカンダリインデックスを3つの列すべてに配置したにもかかわらず、dynamodbテーブルを使用するため、 – shle2821
@ shle2821私は、3つ以上の属性の組み合わせで定義できる項目を照会する必要がある場合を想定しています。 DynamoDBでは、最大2つの属性(パーティションキー+ソートキー)を使用してプライマリキーを作成できます。詳細情報[ここをクリック](http://stackoverflow.com/questions/32620215/3-fields-composite-primary-key-unique-item-in-dynamodb) –
情報ありがとうございます。それから、私にあなたにこれを聞かせてください。プライマリキーだけを残したまま、senderID&timestamp&recipientIDに基づいてソートキーを作成しますか?したがって、ユーザーのデバイスは3つの属性を連結し、DynamoDBに送信します。これはソートキーであるため、「begin with」、「end with」などで照会することができます。このデザインパターンについてはどう思いますか? – shle2821