memgraphdb: поддержка запросов на перемещение во времени в графовых базах данных. - PullRequest
0 голосов
/ 17 ноября 2018

Допустим, я хочу смоделировать график с продавцами.Они принадлежат организации, имеют менеджера и т. Д. Они закреплены за определенными территориями и / или учетными записями клиентов.Ваша компания может работать с внешними партнерами, которыми нужно управлять, и так далее.Хороший, нетривиальный график.

Элементы в этом графике постоянно меняются: продавцы приходят и уходят или перемещаются внутри организации и таким образом меняют обязанности;клиенты подписывают контракт или отменяют их, ...

В моих конкретных случаях использования момент времени очень важен.Как выглядел график в конце прошлого месяца?Конец прошлого финансового года?в прошлый понедельник, когда мы запускаем работу ABC.Например, какой была иерархия менеджеров в конце прошлого месяца?Какими клиентами управлял продавец в конце прошлого месяца?и так далее.

В наших случаях использования DELETE ничего не удаляет, но какая-то дата end_date обновляется.UPDATE ничего не обновляет, но создается новая версия записи.

Я уверен, что могу добавить свойства CREATED и START- / END_DATE к узлам, а также к отношениям, и, конечно, я могу такжесоздавать запросы.Но эти запросы труднее писать, и почти нечитаемы, с кучей повторяющихся фраз везде.

Мне бы хотелось, чтобы базы данных графов (и их построитель графических запросов) позволили бы мне быстрее перемещаться во времени, например, путем установки переменной сеанса в определенный момент времени, и все предложения where автоматически добавляются для всех узлови ссылки, которые имеют свойства даты начала / окончания.Алгоритм не должен давать сбой для объектов, которые не имеют этих свойств, но учитывают выполненное условие.

Что вы думаете об этом сценарии использования и какую помощь Memgraph предоставляет для этих вариантов использования?

спасибо большое Юрген

1 Ответ

0 голосов
/ 19 ноября 2018

Насколько мне известно, нет ни одной графической базы данных, которая бы поддерживала тот тип функций, о котором вы спрашиваете напрямую, хотя, как указывает @buda, вы можете моделировать и запрашивать данные временных рядов. Я согласен с @buda, что способ, которым вы хотели бы, чтобы это работало, кажется немного неопределенным и очень специфичным для приложения, поэтому я не ожидал бы, что это будет особенностью любой базы данных.

Самая близкая из всех возможных вариантов поддержки чего-либо подобного - это использование базы данных с поддержкой Tinkerpop с PartitionStrategy или SubgraphStrategy для создания подграфа только того времени, которое вы хотели, и затем запрос к нему. Другой вариант - создание языка, специфичного для домена, чтобы минимизировать количество повторений кода в запросах.

PartitionStrategy

SubgraphStrategy

Специфичные для домена языки

...