Как реализовать мультиклиентную возможность в Neo4j?

Исходная ситуация

У меня есть несколько независимых и несвязанных графов, каждый из которых имеет иерархическую структуру с локальным корневым элементом. Каждый из этих графов состоит примерно из 8 миллионов узлов и 40 миллионов отношений. Я успешно создал трехзначное количество запросов Cypher, которые теперь следует применять только к одному графу, а не ко всем графам. Граф, к которому должны применяться запросы, определяется его корневым узлом.

grpah

Задача, которую предстоит решить

Как я могу реализовать своего рода псевдо-мультиклиентную возможность для графа, если все графы должны оставаться в общей базе данных Neo4j по причинам отчетности и сопоставления с образцом?


подход к проблеме / предварительный результат

  • Реализовать единственный кратчайший путь к заданному корневому элементу для целей выбора действительно в каждом запросе в начале? Минусы:

    • huge performance losses expected
    • с высокими затратами на разработку
  • Разворачивать каждый график отдельной дополнительной меткой? Минусы:

    • complex queries, high development effort

person ThirstForKnowledge    schedule 11.12.2018    source источник


Ответы (1)


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

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

person InverseFalcon    schedule 11.12.2018