DynamoDB多值拼接的分区键与排序键属性命名最佳实践是什么?
DynamoDB 复合拼接键命名规范最佳实践
以下是行业通用的书面最佳实践参考,可根据你的实际使用场景选择:
场景1:单表单实体设计(整张表仅存储一类数据)
这种场景下优先选择语义化命名,符合你团队对可读性的要求:
- 禁止使用带
+等特殊字符的命名:+不属于多数编程语言的合法标识符字符,读写数据时需要额外加引号转义,会提升编码出错概率 - 可选两种标准分隔格式,根据团队技术栈统一即可:
- 驼峰式:分区键命名为
regionDateLocation,排序键命名为zoneUpdateTimestampMillis,适配Java/JS等偏好驼峰命名的技术栈 - 下划线分隔:分区键命名为
region_date_location,排序键命名为zone_update_timestamp_millis,适配Python/数据开发等偏好下划线命名的技术栈,可读性更高
- 驼峰式:分区键命名为
场景2:单表多实体设计(即DynamoDB官方首推的单表设计模式,一张表存储多类业务数据)
这种场景下通用命名(partitionKey/pk、sortKey/sk)是行业标准:
- 因为单表设计中同一个键位会对应不同实体的拼接规则,用语义化命名反而会产生误导,比如分区键在存用户数据时是用户ID拼接,存设备数据时是设备ID拼接,用
regionDateLocation这种语义化命名完全不适用 - 如果团队担心可读性,可统一键值的拼接格式:给每段值加上业务前缀,比如分区键值格式固定为
REGION#<实际region值>#DATE#<实际date值>#LOCATION#<实际location值>,排序键值格式固定为ZONE#<实际zone值>#TS#<实际毫秒时间戳值>,同时在表注释、团队内部数据字典中明确不同实体的键拼接规则,既符合单表设计规范,也能在查询时直接通过键值识别各段含义,兼顾可读性
两种方案没有绝对的优劣,核心是团队内部统一规则并配套完善的文档说明即可,不用强行套用某一种标准。
内容的提问来源于stack exchange,提问作者CustardBun
相关产品推荐
相关产品推荐

