QDM

Материал из Циклопедии
Перейти к навигации Перейти к поиску


QDM (англ. quintet data model — «квинтетная модель данных») — оригинальная инновационная модель данных, которая описывает любую структуру данных как единый взаимосвязанный список базовых типов и основанных на них терминов (метаданные), а также экземпляров объектов, хранимых согласно этим метаданным (данные).

Концепция[править]

Квинтеты являются развитием идеи модели EAV (Entity-Attribute-Value — «Сущность-атрибут-значение»)[1], но они содержат пять компонентов, а не три (отсюда название «квинтет» — пять составляющих). В результате структура хранения такова: ID-Entity-Attribute-Value-Order, где:

  • ID — уникальный идентификатор записи
  • Entity (Parent ID, родитель) — идентификатор родительской записи
  • Attribute (Type ID, тип) — идентификатор определения типа записи
  • Value — значение записи
  • Order — порядок записи среди равных по подчиненности данному родителю (Parent ID)

Структура данных QDM дополняется тремя B-деревьями (индексами) для поиска по ID, родителю и типу. Индексация необходима для сохранения свойств реляционной базы данных — самого простого и популярного инструмента. Индекс по родителю на самом деле составной (ID родителя + тип). Индекс по типу также составной (тип + значение) для быстрого поиска объектов заданного типа. Такой подход избавляет от рекурсии при сборе объектов по метаданным: например, чтобы найти все реквизиты заданного объекта используется индекс по ID родителя. Если же требуется поиск объектов определенного типа, то используется индекс по ID типа. Тип здесь — это аналог имени таблицы и поля в реляционной СУБД.

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

Обеспечение целостности[править]

Для обеспечения целостности данных при работе с QDM необходимо выполнение условий:

  • уникальность ID (обычно это автоинкрементное значение);
  • недопустимость пустых значений Value;
  • недопустимость удаления записи, ID которой присутствует в поле Entity или Attribute любой другой записи.

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

Применение[править]

Способ организации данных квинтетами применяется для облегчения управления данными с помощью команд DDL и DML, включая автоматическое построение запросов SQL в том случае, когда данные хранятся в реляционной базе данных [2].[нет в источнике]

Преимущества и недостатки[править]

Преимущества[править]

Независимость от конкретной СУБД

Квинтетная модель — это обычный список, который может быть реализован в любой из существующих реляционных СУБД, а также портирован между различными СУБД без необходимост трансформации и без привязки к особенностям окружения.

Основа платформы разработки

QDM дает возможность создать конструктор приложений, решая проблему производительности, свойственную решениям на EAV, за счет применения фиксированного количества индексов по данным этой структуры [3]. Таким образом, это не отдельный компонент решения, в отличие от EAV — экономное хранение различных атрибутов сущности, а основа самодостаточной системы управления данными.

Недостатки[править]

Избыточность хранения

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

Примечания[править]

Ссылки[править]