QDM
В этой статье не хватает ссылок на источники информации. Информация по спорным неочевидным темам должна быть проверяема, иначе она может быть поставлена под сомнение и удалена.
Вы можете отредактировать эту статью, добавив ссылки на источники. Эта отметка была добавлена 6 декабря 2019 |
Эта статья содержит оригинальное исследование. Здесь присутствует авторское исследование, не подтверждённое источниками.
|
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 — экономное хранение различных атрибутов сущности, а основа самодостаточной системы управления данными.
Недостатки[править]
- Избыточность хранения
В квинтетной модели все данные проиндексированы, что ведет к кратной избыточности хранения информации, как плата за возможность быстрого поиска по любому атрибуту любого объекта.
Примечания[править]
Ссылки[править]
- Квинтет как базовая сущность для описания предметной области, блог Неофлекс на платформе коллективных блогов "Хабр", 14 декабря 2018
- Семенов Алексей Петрович, Оригинальное описание модели данных и подхода (ЭЛЕКТРОННАЯ БАЗА ДАННЫХ И СПОСОБ ЕЁ ФОРМИРОВАНИЯ, патент RU 2 650 032 C1)