Хранение графиков в MySQL - это хорошая идея? - PullRequest
10 голосов
/ 06 марта 2011

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

Ответы [ 3 ]

5 голосов
/ 06 марта 2011

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

3 голосов
/ 29 мая 2011

Обычный SQL обычно не подходит для манипулирования структурой данных графа. Однако существуют методы для индексации.

Например, если ваш обновляется не часто, использование индекса GRIPP позволит вам очень хорошо обрабатывать запросы обхода графа. Последний позволяет отвечать на запросы типа «родители-потомки» и «глубины» в более или менее фиксированное время - независимо от количества узлов графа или плотности ссылок.

1 голос
/ 08 марта 2011

Базы данных SQL в целом плохо обрабатывают графические данные.Проблема заключается в том, что для обхода графа вам нужно либо вытащить весь граф в память одним запросом, затем манипулировать им и сохранить изменения, либо вам нужно выполнить огромное количество объединений, чтобы пересечь граф по одному узлу за раз, который становится непомерно медленным.С графиками масштаба, которые вы смотрите, вероятно, было бы лучше использовать базу данных графиков или базу данных памяти, такую ​​как REDIS, в качестве слоя быстрого кэширования, а затем сохранить его в фоновом режиме.

...