Как создать раздел Datomic без использования db.part
В официальных документах для Datomic ( http://docs.datomic.com/schema.html) под заголовком "Создание новых разделов" говорится, что новый раздел (сообщества) может быть создан следующим образом:
{:db/id #db/id[:db.part/db]
:db/ident :communities}
Здесь ": community" не записывается как "db.part / community"
Я не могу установить новый раздел таким образом. Для меня это должно быть с ведущим 'db.part /'. Документация неверна или я не вижу более широкой картины?
1 ответ
Если вы прочтете дальше в документации, вы увидите, что вам не хватает другого элемента данных, необходимого для этой транзакции (с пометкой "Вот полная транзакция..."). Это дата (с пользователем, назначенным tempid как -1, необязательно):
[:db/add :db.part/db :db.install/partition #db/id[:db.part/db -1]]
Все, что было обработано с помощью tempid, которое разрешается в системный раздел (:db.part/db
) также должен включать в себя обозначение установки, как с :db.install/partition
а также :db.install/attribute
(обратная версия для атрибута, включенного в карту, встречается чаще).
Работа с полным примером из документации работает нормально:
(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