【发布时间】:2017-11-24 16:31:15
【问题描述】:
我想使用 Datomic 分区来提高我的应用程序的可扩展性。
首先,我首先在一个事务中创建了一个分区:
{:db/id "communities"
:db/ident :communities}
[:db/add :db.part/db :db.install/partition "communities"]
其次,我在另一个事务中创建了数据库模式:
{:db/ident :person/name
:db/valueType :db.type/string
:db/cardinality :db.cardinality/one
:db.install/_attribute :communities}
{:db/ident :person/age
:db/valueType :db.type/int
:db/cardinality :db.cardinality/one
:db.install/_attribute :communities}
{:db/ident :person/sibblings
:db/valueType :db.type/int
:db/cardinality :db.cardinality/one
:db.install/_attribute :communities}
下面是一个简单查询的示例:
(d/q '[:find ?name ?age
:where
[?p :person/name ?name]
[?p :person/age ?age]]
db)
当我发出此查询时,我收到以下错误:
Unhandled datomic.impl.Exceptions$IllegalArgumentExceptionInfo :db.error/not-an-entity Unable to resolve entity: :person/name {:db/error :db.error/not-an-entity}
当我将每个属性的 :db.install/_attribute :communities 替换为 :db.install/_attribute :db.part/db 时,查询工作正常。我的所有其他查询都有同样的问题。
我错过了什么吗?
【问题讨论】: