2012-09-16 2 views

답변

7

당신은 :db.install/partition 속성을 통해 :db.part/db 엔티티와 관련된 모든 기관을 검색하여 데이터베이스에있는 모든 파티션의 목록을 얻을 수 있어야 :

(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)) 

현재 버전 Datomic (빌드 0.8.3524)에는 :db.part/tx:db.part/user (3 개의 내장 파티션 중 2 개)이 특별히 처리되고 0을 통해 실제로 :db.part/db과 연결되지 않는 단점이 있습니다이므로 위 쿼리 함수의 결과에는이 두 함수가 포함되지 않습니다.

Datomic의 향후 빌드 중 하나 인이 문제 is going to be addressed. 그 동안 결과 세트에 :db.part/tx:db.part/user을 직접 처리해야합니다.

1

첫번째 방법 - 사용 쿼리

=> (q '[:find ?i :where 
     [:db.part/db :db.install/partition ?p] [?p :db/ident ?i]] 
    (db conn)) 

둘째 방법 - 객체 DB로부터는

(filter #(instance? datomic.db.Partition %) (:elements (db conn))) 

번째 방법은 반환 할 수있다 datomic.db.Partition 오브젝트의 시퀀스 파티션에 대한 추가 정보를 얻고 자 할 때 유용합니다.

두 가지 방법 모두 알려진 버그/불일치가 있습니다. db.part/tx 및 db.part/user 내장 파티션이 반환되지 않습니다.

관련 문제