amazon-web-services - 从 DynamoDB 中的嵌套结构创建索引

标签 amazon-web-services indexing amazon-dynamodb

我想知道是否可以创建一个看起来像这样的索引

{
  "dispenserId": "my-dispenser-123",  // primary key
  "users": ["user5", "user12"],
  "robotId": "my-robot-1",
  "enabled": true,
  "side": left
}

基于我的 DynamoDB 文档,看起来像这样

{
  "robotId": "my-robot-1",    // primary key
  "dispensers": {
    "left": "left-dispenser-123",
    "right": "right-dispenser-123",
    "users": ["user5", "user12"]
  },
  "enabled": true,
  "users": ["user1", "user32"]
}

我不知道如何指向 dispensers.leftdispensers.right 并将其用作键,我也不知道如何制作side: left/right 属性基于分配器 ID 的路径。

用现在的结构能实现吗?如果没有,你们会建议什么文件结构。这让我可以保存相同的数据?

最佳答案

DynamoDB 不支持您尝试执行的操作(使用 map 元素作为索引的键属性)。

The index partition key and sort key (if present) can be any base table attributes of type string, number, or binary. (Source)

您不能将 map 属性(的元素)用作索引的键属性,因为键属性必须是基表中的字符串、数字或二进制属性。

考虑使用 adjacency list design pattern为您的数据。它可以让您轻松地将左侧和右侧分配器添加到您的索引中。

关于amazon-web-services - 从 DynamoDB 中的嵌套结构创建索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52000819/

相关文章:

amazon-web-services - 如何配置 AWS S3 以允许 POST 像 GET 一样工作

amazon-web-services - 通过cloudformation模板创建lambda函数时SourceArn是什么

sql-server - SQL Server 更新查询不使用索引

python-3.x - Python DynamoDB 从特定表条目创建自定义的last_evaluated_key

node.js - Node lambda 未写入 DynamoDB 且没有错误

amazon-web-services - 宽限期? - AWS EC2 容器服务和弹性负载均衡器

node.js - AWS Lambda 使用 node.js 将文件上传到 S3 时消耗时间

Python - 为什么查找和索引方法的工作方式不同?

sql - 非聚集索引在 SQL Server 中的工作原理

node.js - DynamoDB 应用程序架构