Я сделаю приложение с большим количеством похожих элементов (миллионы), и я хотел бы хранить их в базе данных MySQL, потому что я хотел бы делать много статистики и искать определенные значения для определенных столбцов.
Но в то же время я буду хранить отношения между всеми элементами, которые связаны во многих связанных двоичных древовидных структурах (транзитивное замыкание), а реляционные базы данных не годятся для таких структур, поэтому я хотел бы хранить все отношения в Neo4j, которые имеют хорошую производительность для такого рода данных.
Мой план состоит в том, чтобы все данные, кроме отношений в базе данных MySQL, и все отношения с item_id
хранились в базе данных Neo4j. Когда я хочу найти дерево, я сначала ищу в Neo4j все item_id
:s в дереве, затем я ищу в базе данных MySQL все указанные элементы в запросе, который будет выглядеть так:
SELECT * FROM items WHERE item_id = 45 OR item_id = 345435 OR item_id = 343 OR item_id = 78 OR item_id = 4522 OR item_id = 676 OR item_id = 443 OR item_id = 4255 OR item_id = 4345
Хорошая ли это идея или я сильно ошибаюсь? Раньше я не использовал графовые базы данных. Есть ли лучшие подходы к моей проблеме? Как в этом случае будет работать MySQL-запрос?