memgraphdb: поддержка запросов на перемещение во времени в графовых базах данных.
Допустим, я хочу смоделировать график с продавцами. Они принадлежат организации, имеют менеджера и т. Д. Они закреплены за определенными территориями и / или учетными записями клиентов. Ваша компания может работать с внешними партнерами, которыми нужно управлять, и так далее. Хороший, нетривиальный график.
Элементы в этом графике постоянно меняются: продавцы приходят и уходят или перемещаются внутри организации и, таким образом, меняют обязанности; клиенты подписывают контракт или отменяют их,...
В моих конкретных случаях использования момент времени очень важен. Как выглядел график в конце прошлого месяца? Конец прошлого финансового года? в прошлый понедельник, когда мы запускаем работу ABC. Например, какой была иерархия менеджеров в конце прошлого месяца? Какими клиентами управлял продавец в конце прошлого месяца? и так далее.
В наших случаях использования DELETE ничего не удаляет, но какая-то дата end_date обновляется. ОБНОВЛЕНИЕ ничего не обновляет, но новая версия записи создана.
Я уверен, что могу добавить свойства CREATED и START-/END_DATE к узлам, а также к отношениям, и наверняка я также могу создавать запросы. Но эти запросы трудны для написания, и почти нечитаемы, с кучей повторяющихся фраз везде.
Мне бы хотелось, чтобы базы данных графов (и их построитель графических запросов) позволили бы мне легче перемещаться во времени, например, путем установки переменной сеанса в определенный момент времени, и все предложения where автоматически добавляются для всех узлов и ссылок, которые имеют начало Свойства даты окончания. Алгоритм не должен давать сбой для объектов, которые не имеют этих свойств, но учитывают выполненное условие.
Что вы думаете об этом сценарии использования и какую помощь предоставляет memgraph для этих вариантов использования?
спасибо большое Юрген
1 ответ
Насколько мне известно, нет ни одной графической базы данных, которая бы поддерживала тот тип функций, о котором вы спрашиваете напрямую, хотя, как указывает @buda, вы можете моделировать и запрашивать данные временных рядов. Я согласен с @buda, что способ, которым вы хотели бы, чтобы это работало, кажется немного неопределенным и очень специфичным для приложения, поэтому я не ожидаю, что это будет особенностью любой базы данных.
Самая близкая из всех возможных вариантов поддержки чего-либо подобного - использование базы данных с поддержкой Tinkerpop с PartitionStrategy или SubgraphStrategy для создания подграфа только того времени, которое вам нужно, и последующего запроса. Другой вариант - создание языка, специфичного для домена, чтобы минимизировать количество повторений кода в запросах.