Datomic 데이터베이스의 모든 파티션을 나열하는 쿼리는 무엇입니까?Datomic의 모든 파티션을 나열하는 쿼리
이 ....
는 사용자 정의 된 모든 파티션이다
[[:db.part/db] [:db.part/tx] [:db.part/user] .... ]
를 반환한다.
Datomic 데이터베이스의 모든 파티션을 나열하는 쿼리는 무엇입니까?Datomic의 모든 파티션을 나열하는 쿼리
이 ....
는 사용자 정의 된 모든 파티션이다
[[:db.part/db] [:db.part/tx] [:db.part/user] .... ]
를 반환한다.
당신은 :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
을 직접 처리해야합니다.
첫번째 방법 - 사용 쿼리
=> (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 내장 파티션이 반환되지 않습니다.