在 Rich Hickey 的演讲“价值的价值”中,他认为要获得真实的信息,我们不应该用新的事实代替旧的事实,而要让两者都带有时间戳。
例如,如果用户更改了他们的电子邮件地址,我们不应该用新地址覆盖旧地址,而是要记住“地址在 [timestamp] 时是 user5@example.com,然后是 user5new@example。 com截至[时间戳]”。
这作为数据完整性原则是有道理的,我相信这是构建 Datomic 的原则。但是,如果这是真的,Datomic 是如何处理错误的呢?例如,如果用户输错了他们的电子邮件地址,我们不想报告它曾经是“luser5@example.com”;我们想忘记那个不正确的信息。
这是怎么做到的?