2016-09-18 7 views
0

私は入札用ウェブサイトを持っており、各ユーザーは製品のために自分の価格を入札することができます。 スキーマ:しかしdynamodbでの製品入札価格履歴の表を作成するにはどうすればよいですか?

SELECT userId, bidPrice FROM product-history WHERE productId = "sony-tv" AND day between "2016-01-05" AND "2016-05-05"

日:

productId: S // the product, probably the Hash key 
day: S // for example: "2016-08-05" 
userId: S // the user id that offer his bid for this day 
bidPrice: N 

私はテーブル(複数可)を設計する方法がわからないが、私はこのようなクエリにできるようにする必要があります私はまた、入札価格を更新できるようにする必要がありますPRODUCTID +日

ごとに複数の行を格納することはできませんのでフィールドは、レンジキーをすることはできませんユーザーのために...のようなもの:

UPDATE product-history SET price = 12 WHERE productId = "sony-tv" and day="2016-01-05" and userId = "steve"

何最善の方法は、これにアプローチするには?

+0

SQL構文を使用している場合、なぜSQLデータベースを使用していないのですか? –

+0

これは、どのような種類のクエリを実行したいのかのデモンストレーションです。 –

+0

私は理解しています。私は単純にAmazonデータベースサービスを使用してこれらのクエリを実行するためのMySQLデータベースを設定することができたときにDynamoDBで質問をタグ付けしたのかと尋ねています –

答えて

0

ここでは、上記の使用例の設計を示します。

ハッシュキー:ユーザーID

レンジキー:プロダクトIDの

各ユーザーは、製品IDに入札することができます。

このデザインでは、複数の商品IDにも入札することができます。

は、製品IDと日付でグローバルセカンダリインデックス(GSI)を作成します -

あなたが製品IDと日付を使用してデータベースを照会するためにGSIを使用することができます。 GSIの作成時には、少数の属性またはメインテーブルのすべての属性を含めるオプションがあります。

GSI Link

制限: -

製品IDのユーザー入札履歴が利用できないでしょう。たとえば、ユーザーが製品IDの入札を複数回変更している場合、このデータモデルでは利用できません。

関連する問題