3

私は、プライベートプロジェクトとしてdynamoDBにgoogle+のような投稿/返信シナリオを実装しようとしています。nosqlテーブルを実装しようとしているのはこれが初めてであり、概念に頭を悩ませようとしています。関連するテーブル列を次のように元のテーブルに埋め込むことができることを理解しています...

Post { userid:1, 
       postdata: "hello",Comment[
                                  {userid: 2, postdata: "howdy", date: some-date},
                                  {userid: 3, postdata: "higuys", date: some-other-date}
                                ], 
       date: today}

これが注釈付きテーブルをコーディングする方法である場合、ユーザーIDで簡単に取得し、1つの会話のすべての投稿とコメントに日付を付けることができます。しかし、特定のコメントを見つけて更新する必要がある場合、それは可能ですか、それともテーブルを「スキャン」する必要がありますか?スキャンについて読んだ結果、大きなデータのスループットの制約が破られ、使用したくありません。クエリは、比較と取得のための演算子に制限されているようです。だから、私はこの方法でテーブルを作成するのに正しい道を進んでいますか?「会話」ごとに、オーディオ、ビデオドキュメント、写真などの他のデータをテーブルに埋め込む必要がある場合があります。任意の入力をいただければ幸いです。

4

1 に答える 1

4

DynamoDBでは、エンティティ全体を64kBより大きくすることはできないため、コメントが非常に小さいことがわかっている場合を除いて、コメントを投稿に直接埋め込むことは避けてください。

投稿にコメントIDのリストと、取得するメタデータを知るために必要なメタデータを含めると、おそらくより適切に機能します。DynamoDBのレイテンシーが低いということは、数が固定されている限り、ページロードごとにリクエスト->取得->リクエストのサイクルを数回持つことができることを意味します。

大きな埋め込みコンテンツ(ブログ投稿などのさらに大きなテキスト)はDynamoDBには適していません。おそらく、S3やCloudFrontのようなものが必要です。

于 2012-02-28T16:19:32.570 に答える