Я использую MySQL для хранения отчетов с помощью инструмента. Я очень доволен скоростью и гибкостью, с которой пользователи могут запрашивать данные. Инструмент также имеет некоторые данные, которые представляют собой график. Мой вопрос: хорошо ли хранить граф в MySQL? Количество узлов и ребер в графе находится в миллионах, а запросы обычно являются обходными графами.
Является ли хранение графиков в MySQL хорошей идеей?
Ответ 1
MySQL не создается и оптимизируется как база данных графа в частности. Возможно, вы захотите попробовать Neo4J, которая является хорошей графической базой данных.
Ответ 2
Обычный SQL обычно непригоден для манипулирования структурой данных графа. Однако есть способы его индексирования.
Например, если ваш часто не обновляется, использование показателя GRIPP позволит вам очень хорошо обрабатывать запросы об обращении к графу. Последний позволяет вам отвечать на запросы родитель-ребенка и глубины в более или менее фиксированное время - независимо от количества узлов узлов или плотности ссылок.
Ответ 3
Базы данных SQL не очень хорошо обрабатывают данные графа. Проблема в том, что для выполнения обхода графика вам нужно либо вытащить весь график в память в одном запросе, а затем манипулировать им и сохранить изменения, или вам нужно выполнить огромное количество объединений для перемещения по графу node в время, которое становится чрезмерно медленным. С графами масштаба, на который вы смотрите, вероятно, было бы лучше использовать базу данных графа или использовать базу данных памяти, такую как REDIS, в качестве быстрого слоя кеширования, а затем сохранить ее в фоновом режиме.