Можете ли вы разделить базу данных графа? Если так, то как? - PullRequest
4 голосов
/ 17 марта 2011

Я знаю, что базы данных в целом могут масштабироваться горизонтально, используя репликация master / slave . Это отличная стратегия, когда число одновременных операций чтения растет.

По мере того, как число одновременных записей или просто объема данных начинает расти, однако, репликация master / slave ничего вам не дает, поэтому вам нужно разделить ваши данные .

Это прекрасно работает для сценариев ключ-значение. Классическим примером для меня является TinyURL / bit.ly; чтение / запись данных для короткого URL-адреса foo может быть полностью независимым от чтения / записи данных для короткого URL-бара.

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

Я не могу понять, как можно разбить граф, не отказавшись от цели использования базы данных графов (эффективные обходы).

1 Ответ

4 голосов
/ 17 марта 2011

Вы редко пересекаете всю структуру графа.

Кроме того, графовые структуры редко сильно связаны между всеми узлами.

С небольшой осторожностью вы можете найти кластеры хорошо соединенных узлов, разделенных небольшим количеством соединений с другими кластерами.

http://en.wikipedia.org/wiki/Cluster_analysis

Если разделить на основе кластеризации, то обход внутри кластера может быть более быстрым, но обход к другому кластеру будет медленнее.

Общее преимущество разделения зависит от соотношения обходов в кластере по сравнению с обходами между кластерами.

...