Для очень большой базы данных данных (более миллиарда строк), где есть очень глубокое дерево данных, какова наиболее эффективная структура? Чтение загрузки является наивысшим использованием, но также есть изменения в дереве на регулярной основе.Эффективная структура базы данных для данных глубокого дерева
Существует несколько стандартных алгоритмов для представления дерева данных. Я нашел эту ссылку в качестве части руководства Mongodb отличным сводкой: http://docs.mongodb.org/manual/tutorial/model-tree-structures/
Моя система имеет свойства, которые плохо сопоставляются ни с одним из этих случаев. Проблема в том, что глубина дерева настолько велика, что держать «предков» или «путь» очень велико. Дерево также часто изменяется настолько, что подход «Вложенные наборы» неэффективен. Я рассматриваю гибрид подхода «Материализованные пути» и «Родительские ссылки», где вместо пути я храню хэш, который не гарантированно является уникальным, но в 90% случаев он является. Затем в 10% случаев происходит столкновение, исходная ссылка разрешает его. Идея состоит в том, что в 90% случаев существует быстрый запрос для хэша пути. Эта идея похожа на технологию фильтра цветения. Но это все для фона: вопрос находится в первой строке этого сообщения.
Не могли бы вы уточнить, что вы подразумеваете под «чтением загрузки»? –
Я имел в виду запросы против вставок, я должен был это сказать. Я имею в виду, что в БД есть регулярные вставки, но большинство запросов - это запросы. Важно то, что это не статическое дерево, вставки могут происходить где угодно в дереве, но 70% доступа для запросов. – tradetree
Какие запросы? Получение всего дерева (из «дерева»)? Получение (прямой) детей данного узла? Получение (рекурсивных) потомков данного узла? Получение (прямой) родительского узла данного узла? Получение (всех) предков данного узла? –