Как создать раздел Datomic без использования db.part

В официальных документах Datomic (http://docs.datomic.com/schema.html) под заголовком «Создание новых разделов» написано, что новый раздел (сообщества) можно создать так:

{:db/id #db/id[:db.part/db]
 :db/ident :communities}

Здесь ':communities' не записывается как 'db.part/communities'

Я не могу установить новый раздел таким образом. Для меня это должно быть с ведущим «db.part/». Документация неверна, или я не вижу общей картины?


person Zuriar    schedule 26.03.2016    source источник
comment
Можете ли вы уточнить, что вы пробовали и что пошло не так?   -  person Valentin Waeselynck    schedule 27.03.2016
comment
Кстати, вам не хватает :db.install/partition attribute   -  person Valentin Waeselynck    schedule 28.03.2016


Ответы (1)


Если вы прочитаете документацию дальше, вы увидите, что вам не хватает еще одного элемента данных, необходимого для этой транзакции (помеченного как "Вот полная транзакция..."). Этот datom (с назначенным пользователем tempid как -1 необязательно):

[:db/add :db.part/db :db.install/partition #db/id[:db.part/db -1]]

Любая транзакция с временным идентификатором, который разрешается в системный раздел (:db.part/db), также должна включать датум, обозначающий установку, как в случае с :db.install/partition и :db.install/attribute (более распространена обратная версия ref для атрибута, включенного в карту).

Транзакция полного примера из документов работает нормально:

(def tx [{:db/id #db/id[:db.part/db -1]
          :db/ident :communities}
         [:db/add :db.part/db :db.install/partition #db/id[:db.part/db -1]]])
@(d/transact conn tx)
;; returns successful tx map
person Ben Kamphaus    schedule 31.03.2016