Базы данных. Часть 1. Типы баз данных
Что такое базы данных
База данных (БД) — это набор информации, которая хранится упорядоченно в электронном виде.
Например, Моника и Фиби из «Друзей» решили открыть свою кофейню и размышляют, какие напитки будут продавать. Для начала они хотят проанализировать меню в других точках своего города. Затем составить базу данных из меню конкурентов, чтобы понять, какие напитки пользуются спросом и будут делать выручку, а какие — привлекать посетителей уникальностью: например, капучино с фисташками или матча-латте на банановом молоке.
Основные преимущества баз данных перед обычными таблицами:
- Базы данных позволяют обрабатывать, хранить и структурировать намного большие объёмы информации, чем таблицы.
- Удалённый доступ и система запросов позволяет множеству людей одновременно использовать базы данных.
- Объём информации в базах данных может быть огромным и не влиять на скорость работы.
Свойства базы данных
Удобное использование баз данных основано на их свойствах:
- Быстродействие Современные БД проектируются по принципу «получить данные прямо сейчас», чтобы пользователь не ждал отклик на запрос.
- Простота получения и обновления данных Какой бы высокой ни была скорость, это бессмысленно, если нужно сделать много сложных операций, чтобы получить, обновить или добавить данные в базу.
- Независимость структуры Изменения в любом количестве и качестве информации не должны влиять на структуру базы данных. Также изменения не должны касаться программного обеспечения и средств хранения, например жёсткого диска.
- Стандартизация Аналогично свойству независимости структуры: при обновлении программного обеспечения или СУБД (сокращение от «системы управления базами данных»), база данных не должна менять свою структуру или свойства.
- Безопасность данных Для каждой категории пользователей делают список ограничений и доступов, согласно которым можно взаимодействовать с информацией из БД.
- Интегрированность Данные должны быть логически связаны. И эти связи должны прослеживаться по структуре таблиц.
- Многопользовательский доступ Удалённо вносить изменения и получать информацию из БД могут сразу несколько человек с разных устройств.
Типы баз данных
БД чаще всего классифицируют в зависимости от того, как в них структурирована информация и как с ней взаимодействовать.
Иерархические
Простейшая структура, где записи, как ветви, отходят от «родителя». Информация связана по аналогии с папками на рабочем столе. У каждой записи есть физическая связь только с одной предыдущей, а отношение многих ко многим невозможно.
На примере базы данных для кофейни в виде иерархической структуры можно представить сорта кофе: Арабика (англ. Arabica), Робуста (англ. Robusta) и Либерика (англ. Liberica).
Сетевые
В отличие от иерархической структуры, у каждой записи может быть более одного родителя. Сетевые БД представляют собой не древовидный, а общий граф.
Можно построить граф с рецептами напитков, где связаны «Капучино» с «Эспрессо» и «Молоком», а «Эспрессо» — с «Кофейными зёрнами» и «Водой». «Латте» имеет связи с «Эспрессо», «Молоком» и «Молочной пеной».
Объектно-ориентированные
Базы данных, где информация о реальных вещах представлена в виде объектов под уникальным идентификатором. К ООБД обращаются на языке объектно-ориентированного программирования (ООП). Состояние объекта описывается атрибутами, а его поведение — набором методов. Объекты с одинаковыми атрибутами и методами образуют классы.
Объект в ООП создаётся как отдельная сущность со своими свойствами и методами работы. И как только объект создан, его можно вызвать по «имени», или коду, а не разрабатывать заново.
Например, при разработке руки главного героя в компьютерной игре программист один раз создаёт объект «рука». И когда нужно запрограммировать движения, достаточно сказать на языке программирования: «рука, сожми кулак» или «рука, поднимись вверх».
По такому же принципу работают и объектно-ориентированные базы данных. Данные формируются в объекты, и работать с ними можно как с рукой героя в примере.
Реляционные
Их также называют SQL — как язык программирования, с помощью которого создают, преобразовывают и управляют данными в реляционных БД. Записи и связи между ними организованы при помощи таблиц. В таблицах есть поле для внешнего ключа со ссылками на другие таблицы. Благодаря высокой организации и гибкости структуры реляционные БД применяются для многих типов данных.
В кофейне реляционные базы данных пригодились бы для описания рецептов, закупок и связей между ними. В таблице с поставщиками можно указать цены на один и тот же продукт у разных брендов. При выборе бренда данные будут автоматически попадать в таблицу «Закупка ингредиентов». Так можно будет настроить расчёт суммы всей закупки и себестоимости одного напитка. Каждый сотрудник сможет вывести данные по любому поставщику и обновить цены, если они изменятся.
Нереляционные (NoSQL)
Эту группу называют также NoSQL, потому что к таким базам данных нужны отличные от SQL-запросы.
В свою очередь такие БД делятся на следующие виды:
В таких базах данные сохраняются под ключами. Если хотите получить объект, например, изображение или текст, нужно ввести ключ. Таким образом часто хранят информацию о состоянии объектов, представленную различными типами данных. Каждому хранилищу разрабатывают свою схему именования ключей в зависимости от форматов значений.
Связи в графовых базах данных обозначены узлами, рёбрами и свойствами. Записи в этих БД могут иметь любое количество связанных с ними свойств.
Например, взаимодействия между сотрудниками кофейни можно обозначить с помощью графа. В его узлах находятся карточки сотрудников с именем, возрастом и должностью, а каждое ребро показывает функции и задачи, которые связывают этих людей.
Подобно реляционным, в этих базах данные хранятся в виде таблиц. Но структура колонок строго не регламентирована — они могут объединяться в колоночные семейства с определённым форматом. Строки колоночного семейства имеют уникальные идентификаторы.
Например, в колоночном семействе «Десерты» будут строки «Печенье» и «Круассаны».
NewSQL базы данных
NewSQL совмещают реляционную модель, язык запросов SQL и распределённые горизонтально масштабируемые базы данных NoSQL. Этот тип появился на рубеже 2000-х и 2010-х годов как ответ на потребности рынка, которые существующие БД не могли удовлетворить. Так, SQL-базы не поддерживали масштабируемость на уровне NoSQL, а эти, в свою очередь, не отвечали стандартам точного выполнения оперативных транзакций ACID (англ. atomicity, consistency, isolation, durability — «атомарность, непротиворечивость, изолированность, долговечность»).
Для баз данных NewSQL характерны:
- реляционная модель и транзакционность;
- язык SQL для доступа к данным;
- горизонтальная масштабируемость;
- более быстрая производительность за счёт новых «движков».
Развитие типов баз данных не останавливается на NewSQL. Появляются новые гибридные модели (англ. multi-model databases), так как использование базы данных может решить разные задачи.