在java(通过JDBC驱动程序)中,当我执行T1(a,b)和T2(x,y)的sql连接查询时,我得到一个包含连接记录J(a,b,x,y)的输出。除此之外,我还得到元数据,告诉我在连接记录J字段中,“a”和“b”来自表T1,字段“x”和“y”来自表T2。
我的问题是,当我在java中运行datomic join查询时,我是否也会获得这种元数据信息,告诉我连接记录中的哪个字段属于哪个输入表?
答案 0 :(得分:0)
Datomic没有表格。它就像一个三重商店。内置时间轴。
三元组是实体属性值。因此,您可以在输出中包含匹配的实体,以及属性和值。
例如,在您的数据库中是三元组:
[joe :likes :pizza]
[joe :favorite-color :gray]
[joe :name "joe"]
[jane :likes :pizza]
[jane :favorite-color :blue]
[jane :name "jane"]
joe和jane是实体(具有唯一标识符且附加属性的东西):: likes,:name和:favorite-color是属性和:pizza,:gray和:blue是值。
查询谁喜欢披萨,还有喜欢的颜色灰色
(d/q '[:find ?person
:where
[?person :likes :pizza]
[?person :favorite-color :gray]]
db)
此处的结果将是实体列表,在本例中为joe
。从该实体,您可以导航到其所有属性(名称,喜欢等)。此查询中没有太多意义,但您可以返回任何变量,可以是实体属性或值。
我会在这里停下来,因为Datomic有很棒的教程以及官方文档。