поиск СУБД с иерархической структурой - PullRequest
2 голосов
/ 16 декабря 2010

Существует ли какая-либо иерархическая база данных с открытым исходным кодом или эмуляция поверх существующих СУБД?

Я ищу DMBS (или подключаемый модуль к существующей RDBMS), который может хранить иерархические данные и позволяет выполнять запросы к иерархическим данным (что-то вроде «SELECT LEVEL ... CONNECT BY ...», «SELECT PARENT ... " например). Я знаю, что в Oracle есть какая-то поддержка, но есть ли более сложное решение?

Ответы [ 3 ]

3 голосов
/ 16 декабря 2010

Для этого не существует стандартного плагина.Я смотрел не раз.Тем не менее, есть ряд вариантов.См. Мой предыдущий вопрос на ту же тему:

Какие есть варианты хранения иерархических данных в реляционной базе данных?

Короче говоря, если вы используетеВ таблице с ID и ParentID (он же список смежности) вы используете Common Table Expressions с большинством баз данных (Oracle CONNECT BY является одним из наиболее заметных исключений).OTO, что-то вроде материализованного пути или вложенных множеств может лучше подходить для вашей ситуации - например, возможность легко найти «родословную», где со списком смежности это дорогостоящая операция.

Обычно в конечном итоге происходит с системой, которая должна интенсивно работать с иерархическими данными, например с CMS, это то, что она реализует более одного из этих решений.Предположение, что читает сильно перевешивает пишет.

0 голосов
/ 16 декабря 2010

Реляционные данные не поддерживают напрямую иерархии так, как это делает внутренне иерархическая структура, такая как XML. Для моделирования иерархии необходимо использовать модель данных, например вложенные наборы или прямое самосоединение.

В зависимости от типа вашей системы, Общие табличные выражения позволят вам выполнять иерархические запросы к данным. CTE поддерживаются версиями SQL Server с 2005 года, последними версиями DB / 2 и PostgreSQL - и, возможно, некоторыми другими системами. CTE немного сложнее, чем CONNECT BY, но они работают на довольно разнообразных платформах.

0 голосов
/ 16 декабря 2010

Вы пробовали модель "Набор гнезд" http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/

...