我想使用Datalevin作为我的应用程序的数据库。README提到:db/id
作为实体的标识符,我看到这些实体在插入时会得到一个自动递增的整数值。
然而,在源代码中也多次提到:db/ident
,例如隐式常量。
这两个关键词的目的是什么?有什么区别?
:db/ident
称为实体标识符Datomic。
它们被用来允许更容易的";指向";其他,众所周知事物;就像一个枚举。因此,您可以将枚举值作为基准,但是仍然可以通过关键字引用它们(无需查找每次使用之前(。
例如
(def conn (d/create-conn "./tst" {}))
(d/transact! conn
[{:db/id 1, :customer-type/name "Fictional", :db/ident :fictional}
{:db/id 2, :customer/name "ACME", :customer/type :fictional}])
(d/pull @conn
[:db/id :customer/name {:customer/type [:db/id :customer-type/name]}]
2)
; ⇒ {:db/id 2, :customer/name "ACME",
; :customer/type {:db/id :fictional,
; :customer-type/name "Fictional"}}