Вопрос

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

Я ищу DMBS (или плагин к существующей RDBMS), который может хранить иерархические данные и позволяет выполнять запросы к иерархическим данным (что-то вроде "ВЫБЕРИТЕ УРОВЕНЬ...ПОДКЛЮЧИТЬСЯ ПО ...", "ВЫБРАТЬ РОДИТЕЛЬСКИЙ ...", например).Я знаю, что в Oracle есть некоторая поддержка, но есть ли более сложное решение?

Это было полезно?

Решение

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

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

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

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

Другие советы

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top