Datomi c многие ко многим с данными об отношениях - PullRequest
0 голосов
/ 23 апреля 2020

Я хотел бы реализовать отношение многие ко многим, в котором также есть метаданные, описывающие отношения. Можно думать об отношениях как о помеченном крае. В частности, путь состоит из упорядоченного набора рядов, и ряд может находиться в пределах более чем одного пути, причем каждый раз имеет положение в пределах такого пути. Если я правильно понимаю, в datomi c требуется некоторое повторение отношения (поскольку мы не можем пометить ребра напрямую), например, в объединяемой сущности, такой как:

:path/path-member      ; ref, many

:path-member/series    ; ref, one
:path-member/position  ; long, one

Или для ее более полной реализации:

:path-member/series    ; ref, one
:path-member/path      ; ref, one
:path-member/position  ; long, one

Есть ли другие варианты моделирования данных, которые могли бы работать?

Уместны ли здесь составные атрибуты?

Этот вопрос был задан ранее , но мне было интересно, предлагают ли какие-либо дополнения к datomi c с тех пор, как этот вопрос был задан (2015), какие-либо новые возможности.

1 Ответ

0 голосов
/ 24 апреля 2020

Почти все сталкиваются с этим вопросом, когда начинают моделирование данных с помощью datomi c, о чем свидетельствует большое количество вопросов о переполнении стека в одной и той же точке.

Есть замечательные новости: Гетерогенно кортежи , добавленные в июне 2019 года, представляют собой мощную новую функцию, которая прекрасно решает эту проблему - это именно та функция, о которой мы все думали, что упустили.

Что это означает, это значение атрибута, то есть v eavto 5-кортеж теперь может сам по себе быть кортежем.

Это вектор замыкания макс. Длины 8. Хотя это ограничение длины не go дает полный путь к тому, чтобы произвольное количество метаданных можно было хранить в виде меток на ребре, как в истинном graph db, он добавляет большую мощность моделирования к датоми c, сохраняя при этом все остальные рычаги и простоту, которые предоставляет c.

Официальное сообщение в блоге объявление.

Обсуждение релиза на twitter .

Чтобы использовать это в журнале данных, все, что вам нужно, это tuple и untuple функции. Это красиво просто, и это именно та функция, которая была «пропущена».

...