查询以列出Datomic中的所有分区

MRo*_*lin 6 database clojure datomic

列出Datomic数据库的所有分区的查询是什么?

这应该回来了

[[:db.part/db] [:db.part/tx] [:db.part/user] .... ]
Run Code Online (Sandbox Code Playgroud)

....所有用户定义的分区在哪里.

mty*_*aka 7

您应该能够:db.part/db通过以下:db.install/partition属性搜索与实体关联的所有实体来获取数据库中所有分区的列表:

(ns myns
  (:require [datomic.api :as d]))

(defn get-partitions [db]
  (d/q '[:find ?ident :where [:db.part/db :db.install/partition ?p]
                             [?p :db/ident ?ident]]
       db))
Run Code Online (Sandbox Code Playgroud)

注意

Datomic(build 0.8.3524)的当前版本有一个缺点,即:db.part/tx:db.part/user(三个内置分区中的两个)被特殊处理并且实际上并不与:db.part/dbvia 相关联:db.install/partition,因此上述查询函数的结果不会包括两个.

这个问题在未来的Datomic构建中得到解决.在此期间,您应该自己处理包含:db.part/tx:db.part/user结果集.