我对EAVT的理解是T必须在将事实插入Datomic时。通常在我的工作中,事实可以在它们发生几个月后插入系统。显然,我可以在我的模式中添加“at”属性,但这似乎打败了Datomic的大部分价值。是否有方便处理这种时间断开的模式或技术?
我想避免的主要问题是:
t=1: I receive a fact that at t=0 x=5
t=3: I receive a fact that at t=2 x=6
t=5: I receive a fact that at t=4 x=7
什么是x @ t = 2.5?
要回答这个问题,我想我必须查询x的整个历史记录,并遍历字段中的自定义。或者做一些二进制的搜索。似乎都没有吸引力。
答案 0 :(得分:1)
原则上,:db/txInstant
是系统知道事实的时间记录。如果知道的事实是“当某个事件发生时”,我认为添加该知识的属性没有问题,例如: :person/birthday
或:historical-event/date-time
。
我唯一一次避免添加日期属性的时间是“当系统知道这种情况时”和“发生这种情况时”与相同的。例如,“当todo项目进入数据库时,”用户何时创建此todo项目可以定义为 :db/txInstant
。
答案 1 :(得分:0)