首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >AWS DynamoDB命名公约

AWS DynamoDB命名公约
EN

Stack Overflow用户
提问于 2022-07-27 22:36:50
回答 1查看 251关注 0票数 0

我正在尝试为DynamoDB中的不同对象创建一个命名约定,例如表、分区和排序键、LSI、GSI、属性等。我阅读了很多文章,但没有通用的方法来做到这一点,但我想从实时示例中学习选择哪一个最适合我们的需求。

我正在研究的基础设施是基于微服务的。此外,我们的一些开发环境共享相同的AWS帐户。在此基础上,我得到了这样的结果:

代码语言:javascript
运行
复制
Tables: [Environment].[Service Name].[Table Name].ddb-table
GSIs/LSIs: [Environment].[Service Name].[Table Name].[GSI/LSI Name].ddb-[gsi/lsi]
Partition Key: pk ??? (in my understanding, the keys should have abstract names, because the single table stores versatile data in the same key)
Sort Key: sk ??? (in my understanding, the keys should have abstract names, because the single table stores versatile data in the same key)
Attributes: meaningful but as short as possible as they are kept for every item in the table

case

  • Tables/GSIs/LSIs (.)
  • 不同的元素用点(.)
  • 分隔,所有的名称都用破折号(kebab-case)分隔,在较低的
  • 中,

为单数形式。

下面是一个示例:

代码语言:javascript
运行
复制
Table: dev.user-service.user-order.ddb-table
LSI: dev.user-service.user-order.lsi1pk.ddb-lsi
GSI: dev.user-service.user-order.gsi1pk.ddb-gsi

你遵循什么命名规则?提前谢谢!

EN

回答 1

Stack Overflow用户

发布于 2022-07-27 23:16:16

我的建议是:

  • 使用PK和SK作为分区键和排序键。
  • 不将表名放入代码中。使用ParameterStore。例如,如果您做过一个表还原,它将被还原为一个新的表名,如果您想向新名称发送通信量,您将不希望更改代码。因此,
  • 不会太固定到任何特定的表名。永远不要试图让代码预测表名。只有让它们保持一致才能帮助人类。
  • 不将区域放在您的表名中。切换到全局表时,它们都保持相同的名称。尴尬!
  • GSI可以被称为GSI1、GSI2等。GSI键是GSI1PK和GSI1SK等。如果您希望以后跟踪每个表的成本,则
  • 会用它们的名称标记您的表。
  • 短而有意义的属性名是很好的,因为它减少了存储,如果您在4kb或1kb的线附近,可以减少RCU/WCU。
  • 使用的是开发、暂存和生产的差异帐户。如果您也希望将名称放入表中,以帮助您识别"OMG在生产中“,这很好。
  • 如果您有很多属性作为项有效负载,这些属性不是用于GSI或筛选,而是总是一起返回,那么可以考虑将它们存储为字符串或二进制文件,然后解析客户端。你甚至可以压缩它们。因为它跳过了数据封送处理.

,所以它效率更高,延迟更短。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73145303

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档