如何获取当前的Datomic架构?

时间:2014-10-26 16:38:21

标签: schema datomic

由于Datomic架构本身存储在Datomic中,如何查询Datomic以获取当前安装的架构?我想只获取用户级架构,不包括具有分区之类的系统级架构。

2 个答案:

答案 0 :(得分:3)

根据Datomic docs,应将用户级架构安装到:db.part/db分区。在给定Datomic连接的情况下,以下函数获取该分区中的所有模式属性。

(defn get-user-schema [conn]
  (d/q '[:find ?id
         :where [?e :db/ident ?id]
                [_ :db.install/attribute ?e]
                [?e :db.install/partition :db.part/db]]
       (d/db conn)))

相关:is there a canonical way to grab all idents from a particular datomic partition?

答案 1 :(得分:1)

我最近才开始学习Datomic和Datalog,所以我不知道自从上一个回答以来的三年内是否发生了变化,或者这只是做同样事情的另一种方式: / p>

[:find ?attr ?type ?card
 :where
 [_ :db.install/attribute ?a]
 [?a :db/valueType ?t]
 [?a :db/cardinality ?c]
 [?a :db/ident ?attr]
 [?t :db/ident ?type]
 [?c :db/ident ?card]]

它会给你一些看起来像这样的东西:

schema query results

取自http://www.learndatalogtoday.org/chapter/4(底层挑战2的解决方案)。