Поиск СУБД с иерархической структурой

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

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

3 ответа

Решение

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

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

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

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

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

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

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

Другие вопросы по тегам