假设我有要存储在 datomic 中的实体。如果所有属性都是事先已知的,我只需将它们添加到我的数据模式一次,然后就可以使用它们。
如果除了已知属性之外,实体还可以拥有任意数量的任意键,映射到任意值,会怎样呢?当然,我可以将该列表存储在我也添加到架构中的某个“blob”属性中,但这样我就无法轻松查询这些属性。
我想出的解决方案是在 datomic 中定义一个 key
和一个 value
属性,每个都是 string
类型,并使用上述属性将这些附加键/值条目中的每一个都视为独立的实体。然后我可以使用 ref
类型通过 1:n 关系将所有这些键/值实体连接到实际实体。
这让我可以查询。这是要走的路还是有更好的方法?
最佳答案
我不愿意失去属性定义的力量。 Datomic 属性可以随时添加,并且限制相当高 (2^20),因此在动态键和值出现时对其进行建模可能是合理的,为每个创建一个新属性。
https://stackoverflow.com/questions/23282374/