database-design - 映射或单独属性之间的 DynamoDB 性能/成本差异

标签 database-design amazon-dynamodb nosql

由于 DynamoDB 现在支持 JSON 文档( map 类型)和到文档的投影,是否有 性能或成本差异将 map 存储为一个属性与将字段存储为单独的属性之间?

例如,我有一个表,用于访问不同站点的 API。大多数使用 client_idclient_secret ,有些有一个额外的字段,如 server_token ,还有一些使用其他东西。存储具有单个 map 属性或具有多个属性的项目之间有区别吗?

id | name   | data
———————————————————————————————————————————————————————————————————————
1  | Google | {client_id: XXX, client_secret: XXX}
2  | Uber   | {client_id: XXX, client_secret: XXX, server_token: XXX}

相对
id | name   | client_id | client_secret
————————————————————————————————————————
1  | Google | XXX       | XXX
========================================
id | name | client_id | client_secret | server_token
—————————————————————————————————————————————————————
2  | Uber | XXX       | XXX           | XXX

最佳答案

在性能或成本方面,使用顶级属性与将它们嵌套在 data 下应该没有任何区别。属性。

但是,截至今天,DyanmoDB 不支持在嵌套属性上创建二级索引。假设将来您需要通过 client_id 查询此表,如果您嵌套了该属性,那么您将无法在该属性上添加全局二级索引。

关于database-design - 映射或单独属性之间的 DynamoDB 性能/成本差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33966130/

相关文章:

javascript - DynamoDB Vogels 中索引 stringSet 的 ValidationException

mongodb - MongoDB 可以通过一次查询创建 friend 关系吗?

mysql - 目录中类似标签类别的表格设计

sql - 如何在 SQL 中建立临时多对多关系?

node.js - 检查 dynamodb 中现有的主键

c# - 选择数据库结构/引擎的指南

database - 是否可以在 orientdb 的集群中使用集群?

amazon-web-services - DynamoDB Friends 设计

database-design - 文档与列式数据库的场景

javascript - 如何在发电机数据库中定义 "Map"AttributeType?