Масштабирование графовой базы данных Neo4j

Все СУБД которые хотят отвечать современным требованиям должны хорошо масштабироваться. Neo4j поддерживает горизонтальное масштабирование master-slave. Каждый узел разбит на две части, непосредственно база данных и компонент управления кластером. Этот компонент постоянно держит связь с другими узлам и принимает соответствующие решения. Когда необходимо выбрать главный узел, этот компонент проверяет, правильно ли выбран главный узел. Это происходит в автоматическом режиме, что по моему мнению является удобным для разработчиков поскольку не требует ручной конфигурации. Не главные узлы подтягивают транзакционные обновления с главного узла, следовательно все операции записи согласуются с главным узлом. Это является недостатком, так как необходимо обновлять данные в главном узле, или ждать синхронизацию узлов. Приоритетным является первый вариант поскольку он быстрее.

Еще одним недостатком кластерной архитектуры Neo4j есть все граф полностью копируется на подконтрольные узлы. С одной стороны это хорошо так как при падении всех узлов кроме одного останутся узел последним правильным данными. Но это чрезмерное использование ресурсов, это может проявиться при сохранении больших данных. Один узел Neo4j может хранить 34 миллиарда вершин, 34 миллиардов связей а также 68000000000 атрибутов, только компании как Google, Facebook могут превысить этот лимит, поэтому пока не стоит беспокоиться из-за этого.

neo4j architecture

Архитектура Neo4j

Заключение

В отличие от популярных СУБД, позволяющих распределять данные по нескольким серверам, в Neo4j такой возможности до сих пор не реализовано. И поэтому многие предпочитает её  базам данных ключ-значение или документо-ориентированным, поскольку они хорошо разделяются. Это объясняется тем, что они сохраняют отдельные записи и им не надо сохранять целостность данных. Стоит отметить проблема оптимального разбиения большого графа между несколькими серверами является NP-полной задачей, то есть ее очень трудно решить быстро и эффективно. Будем надеяться, что будут разработаны приемлемое решение.

 

nazarmsx

 

Leave a Reply

Your email address will not be published. Required fields are marked *