Развитие баз данных

Материал из Викиконспекты
Версия от 22:59, 18 декабря 2021; Roman Ageev (обсуждение | вклад) (Недостатки)
Перейти к: навигация, поиск

Простые и структурированные файлы

Модель данных простого файла

Структура

  • Заголовок (названия столбцов)
  • Данные (просто текст)

Пример

ФИО,Предмет,Оценка
Иванов И.И.,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.

Представление данных

  • Дерево записей
  • Отношения родитель – ребенок (как каталоги и подкаталоги)

Пример

Intro hierarch.png

Достоинства

  • Проверка целостности записей и отношений (так же можем разрешать добавлять дубликаты где необходимо)
  • Последовательное расположение записей
  • Эффективность реализации (за счет группировки данных одного типа)

Недостатки

  • Представление только древовидных данных
  • Существенно меняющееся время запроса в отношении многие-ко-многим в зависимости от того кто выше в иерархии. Можно хранить две версии, однако возникает проблема с их согласованием, то есть в этот момент мы начинаем допускать некорректные данные.

Реализации

  • IBM Information Management System
  • Windows registry

Сетевые базы данных

Сетевая модель данных

Нет единой строгой иерархии, могут существовать дополнительные. Предложена CODASYL в 1969.

Представление данных

  • Ориентированный граф записей
  • Отношения владелец – запись

Пример

Intro network.png

Достоинства

  • Представление всех типов связей
  • Возможность описания структуры
  • Эффективность реализации (сильно меняется от основной иерархии к дополнительной)

Недостатки

  • Сложность реализации
  • Жесткое ограничение структуры

Реализации

  • Integrated Data Store
  • Integrated Database Management System
  • TurboIMAGE

Реляционные базы данных

Реляционная модель данных

Предложена Э. Ф. Коддом в 1969.

Структура

  • Данные хранятся в таблицах
  • Проверка целостности заданных связей
  • Связи задаются в запросах

Пример

Intro relational.png

Достоинства

  • Представление всех типов связей
  • Гибкая структура данных
  • Математическая модель (благодаря этому можем находить более эффективные эквивалентные запросы)

Недостатки

  • Сложность реализации
  • Сложность представления иерархических данных
  • Сложность составления эффективных запросов (сильно зависит от оптимизатора)

Реализации

  • Oracle Database
  • SQLite

Объектные базы данных

Объектная модель данных

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

Структура

  • Сущность – объект
  • Связь – поле
  • Ограничения целостности – определение объекта

Пример

Intro object.png

Достоинства

  • Простота представления объектов
  • Гибкая структура данных
  • Логичное направление ссылок (соответственно направлению в обьектах)

Недостатки

  • Сложность реализации
  • Сложность миграции схемы
  • Малая распространенность

Реализации

  • Oracle Database Objects
  • ObjectDB

NoSQL

Документ-ориентированные

Представление данных

  • Слабоструктурированные документы
    • XML
    • JSON
  • Выборка по свойствам

Пример

Intro history document.png

Ключ-значение

Представление данных

  • Ключ
  • Произвольное значение

Пример

Intro history keyvalue.png

Другие

Табличные

  • Одна большая таблица
  • Хранится построчно

Столбчатые

  • Одна большая таблица
  • Хранится по столбцам

Графовые

  • Граф объектов
  • Данные в узлах
  • Данные на ребрах

Достоинства

  • Большой выбор
  • Гибкость (возникают проблемы если появляется незапланированный сценарий использования)
  • Скорость работы

Недостатки

  • Множество вещей делается в коде
  • Нет оптимизатора
  • Легко ошибиться (так как большинство вещей делается в коде)