this questionに関連する、より具体的な答えを探しています。これを非主観的に保つために、ここでは、簡単な例の回答で終わることができる固執点を持つ活動表を作成するための完全な思考プロセスがあります。DynamoDBテーブルのセカンダリグローバルインデックスを最適化して、すべてのレコードをソート可能にしたままレコードを均等に分散させる方法を教えてください。
DynamoDBをよりよく理解するために、私はDynamoDBテーブルからのアクティビティフィードを含む個人用Webサイトを作成しています。目標はパーティションキーを均等に分散しながら、すべてのパーティションキーをソートできるようにすることです(私はこの部分で苦労しています)。
ブログの投稿、プロジェクト、twitter投稿の参照、LinkedInの投稿の参照など、さまざまな種類のアクティビティが含まれます。アクティビティタイプをパーティションキーとして使用することは、ブログ投稿を作成することはほとんどありません。
DynamoDBパーティション間でアクティビティを均等に分散させるために、一意のアクティビティIDが最適なオプションのようです。しかし、これは、クエリが最初にパーティションIDを知っている必要があるため、アクティビティを開始するためのソート機能を完全に削除します。これはセカンダリグローバルインデックス(SGI)が役立つところです。これにより、ソートキーはプライマリパーティションキーでは必要なくなりますが、SGIでペアになります。
これは私が立ち往生している部分です。 SGIパーティションキーの基礎は何ですか?現時点では、「日付」のソートキーを持つすべてのアクティビティの単一の値「アクティビティ」を考えていますが、それはすべてのエントリの単一のパーティションです。 単一のSGIパーティションキーの値でこのプロジェクトのパフォーマンスが制限されますか?
これは小規模なプロジェクトです。しかし、私は大規模プロジェクトについて考えています。これを構築し、すべてのテーブルレコードを柔軟にソートできるように、最適化されたパーティション分配に関して最高のDynamoDBテーブルを作成しようとしています。
この回答は非常に役に立ちました。 –