В настоящее время я пытаюсь найти лучший способ хранения дерева в базе данных (возможно, mysql, если это возможно). Эти ограничения и использование дерева:Хранить дерево в базе данных
- Каждый узлы могут иметь 4 детей максимум, но лучше, если она является масштабируемой и до х детей
- каждого ребенка имеют вес (если родитель имеет 3 листа, вероятность использования каждого из них может составлять 40%, 40% и 20%, например).
- около 40K узлы будут храниться в базе данных, но это лучше, если она является масштабируемой и хорошо с 1M, например
- Нет данных будут записаны в базу данных, только чтение
- Цель состоит в том, чтобы иметь очень хорошая производительность чтения от корня до определенного листа, чтобы не быть в состоянии отобразить все дерево сразу
на данный момент я думал использовать модель списка смежности: https://www.simple-talk.com/content/article.aspx?article=1234 с весом, хранящимся в качестве поля.
Это нормально для вас, или есть лучший способ сохранить это в базе данных?
Насколько я знаю, базы данных SQL имеют низкую производительность со связанными или рекурсивными данными, такими как деревья. –
@SergeRogatch: тогда вы использовали неправильные базы данных (или неправильные запросы). Рекурсивные запросы довольно эффективны. –
Какая СУБД вы используете? –