使用 MD5 作为版本标识符
Using MD5 as a versioning identifier
我正在用键定义的 DynamoDB table 中存储一些 JSON 模式:
- 类型 - 哈希键
- 版本 - uuid
JSON 架构将存储在 schema
属性中。
我想知道的是,与随机生成的 uuid 相比,使用模式 blob 的 MD5 或其他散列作为 version
uuid 是否合适?
这有点主观,因为它取决于版本属性的语义,但如果您通常认为相同的模式是相同的版本,即使是乱序的,那么是的。如果没有,那就没有。
我的意思是,考虑这种情况:
- "Schema A"被添加到table,它的散列推导出的版本是“1”
- 项目已修改,现在有 "Schema A1",派生版本有“2”
- 项目再次修改,与"Schema A"相同,因此版本再次变为“1”
这对你有用吗?在某些情况下这是可以的,在其他情况下则不行。
注:"Schema A"和"Schema A1",“1”和“2”只是不失一般性的简化。
编辑
正如评论中指出的那样,另一个需要考虑的问题是 white-space 和顺序更改是否应被视为不同的模式或相同的模式。
我正在用键定义的 DynamoDB table 中存储一些 JSON 模式:
- 类型 - 哈希键
- 版本 - uuid
JSON 架构将存储在 schema
属性中。
我想知道的是,与随机生成的 uuid 相比,使用模式 blob 的 MD5 或其他散列作为 version
uuid 是否合适?
这有点主观,因为它取决于版本属性的语义,但如果您通常认为相同的模式是相同的版本,即使是乱序的,那么是的。如果没有,那就没有。
我的意思是,考虑这种情况:
- "Schema A"被添加到table,它的散列推导出的版本是“1”
- 项目已修改,现在有 "Schema A1",派生版本有“2”
- 项目再次修改,与"Schema A"相同,因此版本再次变为“1”
这对你有用吗?在某些情况下这是可以的,在其他情况下则不行。
注:"Schema A"和"Schema A1",“1”和“2”只是不失一般性的简化。
编辑
正如评论中指出的那样,另一个需要考虑的问题是 white-space 和顺序更改是否应被视为不同的模式或相同的模式。