Я создам приложение с большим количеством похожих элементов (миллионы), и я хотел бы их хранить в базе данных 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-запрос в этом случае?