DynamoDB 大于 400KB 的项目
DynamoDB larger than 400KB items
我打算创建一个商家 table,其中将包含商家的商店位置。大多数商家都是小企业,他们只有几家商店。但是,也有可能有数百个位置的奇数 multi-chain/franchise。
如果我想在商户中包含位置属性,我的解决方案是什么 table?如果我必须将其拆分为多个 table,我该如何实现?
谢谢!
编辑:拆分 table 怎么样?为了迎合大多数人的需要,我最多可以将 5 个位置放在同一个 table 中。但是超过 5 个,它将溢出到一个标准化的 table,在主 table 上有一个指示器,表示有超过 5 个位置。关于如何实现这一点有什么想法吗?
根据您的访问模式,您有几个选项:
- 压缩数据并将二进制对象存储在 DynamoDB 中。
- 将基本详细信息存储在 DynamoDB 中,并将 link 存储到 S3 以处理较大的内容。 DynamoDB 和 S3 之间没有事务支持,因此您的数据可能会变得不一致。
- 您可以规范化您的 table 并将该数据放在一个单独的 table 中,与您的商家 table 的外键等效,而不是嵌入位置属性。但是,您随后可能需要两次查询来检索每个商家的数据,这将计入您的吞吐量成本。
- 应对溢出 table 必须在应用程序代码中处理,而不是在数据库级别处理:
if (store_count > 5) then execute another query to retrieve more data
如果您不需要 DynamoDB 的性能和可扩展性,也许 RDS 是更好的解决方案。
我打算创建一个商家 table,其中将包含商家的商店位置。大多数商家都是小企业,他们只有几家商店。但是,也有可能有数百个位置的奇数 multi-chain/franchise。
如果我想在商户中包含位置属性,我的解决方案是什么 table?如果我必须将其拆分为多个 table,我该如何实现?
谢谢!
编辑:拆分 table 怎么样?为了迎合大多数人的需要,我最多可以将 5 个位置放在同一个 table 中。但是超过 5 个,它将溢出到一个标准化的 table,在主 table 上有一个指示器,表示有超过 5 个位置。关于如何实现这一点有什么想法吗?
根据您的访问模式,您有几个选项:
- 压缩数据并将二进制对象存储在 DynamoDB 中。
- 将基本详细信息存储在 DynamoDB 中,并将 link 存储到 S3 以处理较大的内容。 DynamoDB 和 S3 之间没有事务支持,因此您的数据可能会变得不一致。
- 您可以规范化您的 table 并将该数据放在一个单独的 table 中,与您的商家 table 的外键等效,而不是嵌入位置属性。但是,您随后可能需要两次查询来检索每个商家的数据,这将计入您的吞吐量成本。
- 应对溢出 table 必须在应用程序代码中处理,而不是在数据库级别处理:
if (store_count > 5) then execute another query to retrieve more data
如果您不需要 DynamoDB 的性能和可扩展性,也许 RDS 是更好的解决方案。