我正在评估项目的数据库。现在我非常喜欢Neo4J的图形性质。
我希望创建一个时间数据库,使用类似"最后一个好的价值"接近(我的话)。
这是使用粗糙的Neo4J伪代码的示例。想象一下,以下事件发生在单独的交易中。
CREATE (a:Person {first: "Charles", last: "Tolliver", timestamp: timestamp() + 00})
CREATE (b:Person {first: "Charlie", timestamp: timestamp() + 10})
CREATE (c:Person {first: "Chuck", timestamp: timestamp() + 20})
CREATE (d:Person { last: "Peters", timestamp: timestamp() + 30})
CREATE (e:Person {age:42, timestamp: timestamp() + 40})
CREATE (a)<-[:UPDATES]-(b)<-[:UPDATES]-(c)<-[:UPDATES]-(d)<-[:UPDATES]-(e)
RETURN a,b,c,d,e;
然后我希望能够做到这样的事情:
MATCH (p:Person)
WHERE p.first="Charles"
return p, collect(
{ first: p.first, last: p.last, age: p.age, timestamp: p.timestamp }
)
我想像这样得到数据:
{ first: "Chuck", last: "Peters, age: 42, timestamp:...}
每个后续插入&#34;掩盖&#34;以前的数据。
理想情况下,我希望能够以相同的方式查询各种时间戳,并获得快照&#34;当时的聚合对象。
问题:
*注意:出于各种原因,我不想使用基于框架的时间性。
注意:我不是要问&#34;哪些数据库最好?&#39;对于这个&#34;或任何主观的。我正在寻找关于支持这种模式/范例的客观信息。
答案 0 :(得分:1)
由于内置的时间性,我最终选择了Datomic。我很享受它(特别是Datalog,它的查询语言)。但我希望它有更实用的文档。