Типов современных баз данных: краткие описания, схемы и примеры БД
Любые данные где-то хранятся. Будь это интернет вещей или пароли в *nix. Показываем схемы основных типов баз данных, чтобы наглядно представить различия между ними.
Типы баз данных, называемых также моделями БД или семействами БД, представляют собой шаблоны и структуры, используемые для организации данных в системе управления базами данных (СУБД). Выбор типа повлияет на то, какие операции сможет выполнять приложение, как будут представлены данные, на функции СУБД для разработки и рантайма.
I. Простейшие типы баз данных
Начнём с трёх типов БД, которые всё ещё могут встречаться в специализированных средах, но в основном заменены надежными и производительными альтернативами.
Простые структуры данных
Первый и простейший способ хранения данных – текстовые файлы. Метод применяется и сегодня для работы с небольшими объёмами информации. Для разделения полей используется специальный символ: запятая или точка с запятой в csv-файлах датасетов, двоеточие или пробел в *nix-подобных системах:
|
|
/etc/passwd в *nix системе
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
syslog:x:102:106::/home/syslog:/usr/sbin/nologin
bob:x:1000:1000:Bob Smith,,,:/home/bob:/bin/bash
Следствия:
· ограничен тип и уровень сложности хранимой информации;
· трудно установить связи между компонентами данных;
· отсутствие функций параллелизма;
· практичны только для систем с небольшими требованиями к чтению и записи;
· используются для хранения конфигурационных данных;
· нет необходимости в стороннем программном обеспечении.
Примеры:
· /etc/passwd и /etc/fstab в *nix-системах
· csv-файлы
Иерархические базы данных
В отличие от текстовых таблиц, в следующем типе БД появляются связи между объектами. В иерархических базах данных каждая запись имеет одного «родителя». Это создаёт древовидную структуру, в которой записи классифицируются по их отношениям с цепочкой родительских записей.
Пример построения иерархических связей
Следствия:
· информация организована в виде древовидной структуры с отношениями «предок-потомок»;
· каждая запись может иметь не более одного родителя;
· связи между записями выполнены в виде физических указателей;
· невозможно реализовать отношения «многих-ко-многим».
Примеры:
|
|
· файловые системы
· DNS
· LDAP
Сетевые базы данных
Сетевые базы данных расширяют функциональность иерархических: записи могут иметь более одного родителя. А значит, можно моделировать сложные отношения.
Пример связей в сетевой базе данных
Следствия:
· сетевые базы данных представляются не деревом, а общим графом
· ограничены теми же шаблонами доступа, что иерархические БД
Примеры:
· IDMS
II. Реляционные БД
SQL базы данных
Реляционные базы данных – старейший тип до сих пор широко используемых БД общего назначения. Данные и связи между данными организованы с помощью таблиц. Каждый столбец в таблице имеет имя и тип. Каждая строка представляет отдельную запись или элемент данных в таблице, который содержит значения для каждого из столбцов.
Следствия:
· поле в таблице, называемое внешним ключом, может содержать ссылки на столбцы в других таблицах, что позволяет их соединять;
· высокоорганизованная структура и гибкость делает реляционные БД мощными и адаптируемыми ко различным типам данных;
· для доступа к данным используется язык структурированных запросов (SQL);
· надёжный выбор для многих приложений.
Примеры:
· MySQL
· MariaDB
· PostgreSQL
· SQLite
III. NoSQL базы данных
NoSQL – группа типов БД, предлагающих подходы, отличные от стандартного реляционного шаблона. Говоря NoSQL, подразумевают либо «не-SQL», либо «не только SQL», чтобы уточнить, что иногда допускается SQL-подобный запрос.