使用 MD5 作为版本标识符

Using MD5 as a versioning identifier

我正在用键定义的 DynamoDB table 中存储一些 JSON 模式:

JSON 架构将存储在 schema 属性中。

我想知道的是,与随机生成的 uuid 相比,使用模式 blob 的 MD5 或其他散列作为 version uuid 是否合适?

这有点主观,因为它取决于版本属性的语义,但如果您通常认为相同的模式是相同的版本,即使是乱序的,那么是的。如果没有,那就没有。

我的意思是,考虑这种情况:

  1. "Schema A"被添加到table,它的散列推导出的版本是“1”
  2. 项目已修改,现在有 "Schema A1",派生版本有“2”
  3. 项目再次修改,与"Schema A"相同,因此版本再次变为“1”

这对你有用吗?在某些情况下这是可以的,在其他情况下则不行。

注:"Schema A"和"Schema A1",“1”和“2”只是不失一般性的简化。

编辑

正如评论中指出的那样,另一个需要考虑的问题是 white-space 和顺序更改是否应被视为不同的模式或相同的模式。