2

boto で dynamoDB を使用していますが、テーブルの設計/クエリに少し問題があります。

データを次のようにしたい

+---------------------------------------+
hash_key    account_id    mykey
-----------------------------------------
1           12345         myvalue1
2           12345         myvalue2
3           12345         myvalue3
4           123456        myvalue4
+---------------------------------------+

次に、アカウント 12345 のすべてのデータを取得します。boto ドキュメントを見ると、hash_key を常に利用できるようにしておく必要があります。この標準 SQL / MongoDB を照会する方法は知っていますが、boto の解決策が見つかりません。これは可能だと思いますか?ありがとう!

編集:これはうまくいくようです

+---------------------------------------+
hash_key    range_key    mykey
-----------------------------------------
12345       12568        myvalue1
12345       53890        myvalue2
12345       12322        myvalue3
123456      23432        myvalue4
+---------------------------------------+

に続く

> res = table.query(hash_key='12345')
> for item in res:
>    print i

アカウント番号 12345 のすべてのエントリを取得したいので、range_key に関係なく、get_itemの代わりにクエリを実行する必要があります

4

1 に答える 1

5

hash_key私はそれらを区別するためにいくつかと一緒にaccount_idを使用しrange_keyます。

DynamoDBでは、主キーはオプションの(hash_keyrange_keyrange_keyで構成されます。このタプルは一意である必要があります。を使用して特定の要素にアクセスするには、タプル全体が必要になることに注意してくださいget_item

'auto_increment'を持つことhash_keyは、SQLの世界では悪い習慣です。

このテーマについてもっと知りたい場合は、dynamodb-mapperのドキュメントにモデリングデータに関する背景情報を書きました:http://dynamodb-mapper.readthedocs.org/en/latest/api/model.html#auto-increment -いつ使用するか

于 2012-09-18T20:47:26.960 に答える