Развитие баз данных
Простые и структурированные файлы
Модель данных простого файла
Структура
- Заголовок (названия столбцов)
- Данные (просто текст)
Пример
ФИО,Предмет,Оценка Иванов И.И.,Java,4 Иванов И.И.,Базы данных,5 Петров П.П.,Java,5 Петров П.П.,Базы данных,4
Модель данных структурированного файла
Структура
- Заголовок (названия столбцов, типы и длины)
- Данные (записи одинаковой структуры)
Пример
ФИО Предмет Оценка String, 14 String, 12 Number, 1 Иванов И.И. Java 4 Иванов И.И. Базы данных 5 Петров П.П. Java 5 Петров П.П. Базы данных 4
Достоинства
- Простота чтения
- В структурированном файле можем быстро находить строчку по номеру
Недостатки
- Сложность поиска
- Сложность обработки (в каждом месте для этого нужен будет свой код)
- Сложность хранения данных разны типов (например, для дат не понятно, в каком порядке идут данные)
- Нет проверки целостности (но можно проверять количество столбцов или добавить модуль чтения и записи типизированных файлов)
Реализации
- Данные на перфокартах
- dBase
- Excel / LibreOffice Calc
Файловые системы
Файловая модель данных
Представление данных
- Файл – одна запись
- Каталоги – подчиненные записи
Пример
- Иванов И.И./Данные – ФИО, адрес, etc
- Иванов И.И./Оценки/Java – 4
- Иванов И.И./Оценки/Базы данных – 5
- Петров П. П./Данные – ФИО, адрес, etc
- Иванов П. П./Оценки/Java – 5
- Петров П. П./Оценки/Базы данных – 4
Достоинства
- Структурирование данных
- Простота реализации
Недостатки
- Сложно извлекать требуемые данные (в примере сложно посчитать среднюю оценку по предмету)
- Нет проверки целостности (но можно, например, добавить проверку уникальности)
- Большое количество файлов (не все файловые системы такое потянут)
Реализации
- FATx, ExtX, NTFS, APFS
- DOM
Иерархические базы данных
Иерархическая модель данных
Иерархия это полезно, но складывать это в файловую систему не очень эффективно. Предложена и реализована IBM в 1966.
Представление данных
- Дерево записей
- Отношения родитель – ребенок (как каталоги и подкаталоги)
Пример
Достоинства
- Проверка целостности записей и отношений (также можем разрешать добавлять дубликаты, где необходимо)
- Последовательное расположение записей
- Эффективность реализации (за счет группировки данных одного типа)
Недостатки
- Представление только древовидных данных
- Существенно меняющееся время запроса в отношении многие-ко-многим в зависимости от того кто выше в иерархии. Можно хранить две версии, однако возникает проблема с их согласованием, то есть в этот момент мы начинаем допускать некорректные данные.
Реализации
- IBM Information Management System
- Windows registry
Сетевые базы данных
Сетевая модель данных
Нет единой строгой иерархии, могут существовать дополнительные. Предложена CODASYL в 1969.
Представление данных
- Ориентированный граф записей
- Отношения владелец – запись
Пример
Достоинства
- Представление всех типов связей
- Возможность описания структуры
- Эффективность реализации (сильно меняется от основной иерархии к дополнительной)
Недостатки
- Сложность реализации
- Жесткое ограничение структуры
Реализации
- Integrated Data Store
- Integrated Database Management System
- TurboIMAGE
Реляционные базы данных
Реляционная модель данных
Предложена Э. Ф. Коддом в 1969.
Структура
- Данные хранятся в таблицах
- Проверка целостности заданных связей
- Связи задаются в запросах
Пример
Достоинства
- Представление всех типов связей
- Гибкая структура данных
- Математическая модель (благодаря этому можем находить более эффективные эквивалентные запросы)
Недостатки
- Сложность реализации
- Сложность представления иерархических данных
- Сложность составления эффективных запросов (сильно зависит от оптимизатора)
Реализации
- Oracle Database
- SQLite
Объектные базы данных
Объектная модель данных
Уметь хранить графы объектов в памяти очень полезно. Предложена в 1985. Сейчас такие базы данных в основном реализуются через слой трансляции в реляционную базу.
Структура
- Сущность – объект
- Связь – поле
- Ограничения целостности – определение объекта
Пример
Достоинства
- Простота представления объектов
- Гибкая структура данных
- Логичное направление ссылок (соответственно направлению в обьектах)
Недостатки
- Сложность реализации
- Сложность миграции схемы
- Малая распространенность
Реализации
- Oracle Database Objects
- ObjectDB
NoSQL
Документ-ориентированные
Представление данных
- Слабоструктурированные документы
- XML
- JSON
- Выборка по свойствам
Пример
Ключ-значение
Представление данных
- Ключ
- Произвольное значение
Пример
Другие
Табличные
- Одна большая таблица
- Хранится построчно
Столбчатые
- Одна большая таблица
- Хранится по столбцам
Графовые
- Граф объектов
- Данные в узлах
- Данные на ребрах
Достоинства
- Большой выбор
- Гибкость (возникают проблемы если появляется незапланированный сценарий использования)
- Скорость работы
Недостатки
- Множество вещей делается в коде
- Нет оптимизатора
- Легко ошибиться (так как большинство вещей делается в коде)