14

我正在尝试将列表存储为 DynamoDB 属性,但我需要能够检索列表顺序。目前我想出的唯一解决方案是通过将键附加到值并将完整值转换为字符串然后将其存储为列表来创建自定义哈希映射。

例如。key = position1, value = value1, 要存储在 DB 中的字符串 = "position1#value1"

要使用该列表,我需要过滤、组织、子字符串并重新转换为原始类型。这似乎是一个很长的路要走,但目前这是我能想出的唯一解决方案。

有没有人有更好的解决方案或想法?

4

3 回答 3

23

新添加的文档类型中的列表类型应该会有所帮助。

文档数据类型

DynamoDB 支持 List 和 Map 数据类型,可以嵌套表示复杂的数据结构。

  • List 类型包含有序的值集合。
  • 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

将范围属性添加到您的主键

范围查询的复合主键

复合主键使您能够在表中指定两个共同形成唯一主索引的属性。表中的所有项目都必须具有这两个属性。一个用作“哈希分区属性”,另一个用作“范围属性”。例如,您可能有一个“状态更新”表,其复合主键由“用户 ID”(散列属性,用于跨多个服务器划分工作负载)和“时间”(范围属性)组成。然后,您可以运行查询以获取: 1) 由 UserID 和 Time 值的组合唯一标识的特定项目;2) 特定散列“桶”的所有项目——在本例中为用户 ID;或 3) 特定时间范围内特定用户 ID 的所有项目。仅当指定了 UserID 哈希存储桶时,才支持针对“时间”的范围查询。

于 2012-05-22T11:25:08.040 回答