14

リストを DynamoDB 属性として保存しようとしていますが、リストの順序を取得できる必要があります。現時点で私が思いついた唯一の解決策は、キーを値に追加して完全な値を文字列に変換し、それをリストとして保存することでカスタム ハッシュ マップを作成することです。

例えば。キー=位置1、値=値1、DBに格納する文字列=「位置1#値1」

リストを使用するには、フィルターで除外し、整理し、部分文字列を作成して、元の型に再変換する必要があります。それは長い道のりのように思えますが、現時点では私が思いつくことができる唯一の解決策です.

誰かがより良い解決策やアイデアを持っていますか?

4

3 に答える 3

23

新しく追加されたドキュメント タイプのリストタイプが役立ちます。

ドキュメントのデータ型

DynamoDB は List および Map データ型をサポートしており、ネストして複雑なデータ構造を表すことができます。

  • リスト型には、順序付けられた値のコレクションが含まれます。
  • Map 型には、名前と値のペアの順序付けられていないコレクションが含まれています。

リストとマップは、JSON ドキュメントの保存に最適です。List データ型は JSON 配列に似ており、Map データ型は JSON オブジェクトに似ています。List 要素または Map 要素に格納できるデータ型に制限はなく、要素が同じ型である必要はありません。

于 2014-10-26T11:03:36.433 に答える
3

DynamoDB は単一値および (順序付けされていない) セット属性のみをサポートするため、順序付けられたリストを属性として保存できるとは思いません。ただし、行のすべての属性を合わせて 64KB 未満にする必要があるという事実を考えると、カンマ区切りの値の文字列 (またはその他の区切り記号スキーム) を格納するパフォーマンスのオーバーヘッドはおそらくごくわずかです。

(ソース: http://docs.amazonwebservices.com/amazondynamodb/latest/developerguide/DataModel.html )

于 2012-06-18T20:43:25.177 に答える
0

主キーに範囲属性を追加します。

範囲クエリの複合主キー

複合主キーを使用すると、まとめて一意の主インデックスを形成する 2 つの属性をテーブルに指定できます。テーブル内のすべてのアイテムには、両方の属性が必要です。1 つは「ハッシュ パーティション属性」として機能し、もう 1 つは「範囲属性」として機能します。たとえば、「UserID」(複数のサーバー間でワークロードを分割するために使用されるハッシュ属性)と「Time」(範囲属性)で構成される複合主キーを持つ「Status Updates」テーブルがあるとします。その後、クエリを実行して次のいずれかをフェッチできます。1) UserID 値と Time 値の組み合わせによって一意に識別される特定のアイテム。2) 特定のハッシュ「バケット」のすべてのアイテム – この場合は UserID; または 3) 特定の時間範囲内の特定の UserID のすべてのアイテム。「Time」に対する範囲クエリは、UserID ハッシュ バケットが指定されている場合にのみサポートされます。

于 2012-05-22T11:25:08.040 に答える