由于 DynamoDB 现在支持 JSON 文档( map 类型)和到文档的投影,是否有 性能或成本差异将 map 存储为一个属性与将字段存储为单独的属性之间?
例如,我有一个表,用于访问不同站点的 API。大多数使用 client_id
和 client_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/