Найти тему

Мир баз данных | обзор основных видов БД

Баз данных в нашем мире существует великое множество! Эта статья - путеводитель, который поможет вам разобраться, чем примечательна каждая из них.

Честно признаться, разнообразие баз данных и меня когда-то очень покорило. Да-да, оказалось, что помимо стандартного варианта "табличек" существует и много других. И в каждой из них используются принципиально разные подходы в хранении, обработке, извлечении и самое главное - построении связей между данными.

Поэтому сегодня поговорим об основных видах БД, их особенностях и обязательно рассмотрим интересные и наглядные примеры, чтобы уложить всю информацию по полочкам!

2 главных категории:

Все существующие Базы Данных можно поделить на 2 больших клана: Реляционные и Нереляционные.

Первые как раз являются представителями "табличного" хранения и предполагают, что данные являются структурированными. Однако не всегда информацию можно представить в виде связанных таблиц. Существует большой пласт слабоструктурированных и неструктурированных данных, для обработки и хранения которых используются нереляционные БД. Их еще называют NoSQL.

Корни второго названия идут из факта, что для манипуляций с реляционными данными всегда используется язык запросов SQL (structured query language). Именно с помощью него мы можем крутить-вертеть нашими данными. В случае же с нереляционными БД этот подход не работает, но работают другие..))
поэтому группа получила название NoSQL.

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

Это самый распространенный тип БД. Сегодня более 80% обрабатываемой информации представляют собой структурированные реляционные данные.

Тут само название уже намекает на суть механизма работы. Реляционные от слова "relational" - имеющие отношения. Основной структурной единицей здесь выступают таблицы. Каждая таблицы представляет собой набор записей, где каждая запись представляет собой кортеж (строку), а столбцы - атрибуты (поля).

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

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

Как это работает?

Рассмотрим импровизированную базу данных Риэлтерского агентства. В ней есть 5 таблиц с данными. См. схему ниже

-2
  • Информация о риелторах
  • Покупателях
  • Продавцах
  • Объектах продажи
  • Совершенных сделках

У каждой таблиц есть поле ID - уникальный идентификатор одной записи. Это Первичные ключи, они помечены желтым ключиком. (Первичный ключ может быть представлен и несколькими полями)

Также эти поля могут выступать Внешними ключами в других таблицах базы. В схеме ниже они помечены синим ключиком. В этом случае по этим столбцам мы можем подтягивать информацию из других таблиц.

Для работы с реляционными базами данных используют реляционные СУБД (системы управления базами данных)

Наиболее распространенные СУБД:

-3

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

В этой категории начинается магия!

Существует несколько разновидностей нереляционных БД. Отличаются они типами связей.

Виды нереляционных Баз данных
Виды нереляционных Баз данных

Документо-ориентированные (Document Stores)

Хранение данных реализовано в "документах"- (обычно в формате JSON или BSON). Каждый документ - самодостаточная единица данных. Прелесть такого вида хранения в том, что мы можем иметь разный набор полей для каждого документа и этот набор варьировать. Более того, можно легко работать с вложенными данными и документами.

Рассмотрим игрушечный пример хранения каталога книг в библиотеке. Синтаксис: MongoDB.

Здесь каждая книга представлена в виде документа. Документ содержит информацию о названии, авторе, жанре и т.д.

-5
  • _id - уникальный идентификатор документа.
  • title, author, genre, publish_date - это поля, содержащие информацию о книге.
  • reviews - это вложенный документ, представляющий отзывы книги. Это может быть массив объектов.

Графовые (Graph Databases)


Спроектированы для эффективной работы с данными, организованными в виде графа. Используется для решения задач, связанных с анализом связей и сетей. Основные элекменты в графах

  1. Узлы (Nodes):Экземпляры данных или сущности.
    Представляют объекты для отслеживания, например, людей, заказы, подразделения.
  2. Рёбра (Edges): Показывают взаимосвязи между узлами.
    Могут иметь направление (одно- или двунаправленные).
  3. Свойства (Properties):Содержат описательную информацию, связанную с узлами и, иногда, с рёбрами.
    Могут включать различные атрибуты, описывающие характеристики узлов или связей.

Рассмотрим пример графовой БД. Здесь фиксируется не только список фильмов, актёров и режиссёров. Не меньшее внимание уделяется связям, что позволяет одновременно хранить информацию о том, в каких фмильмах снимался актер, и какие актеры снимались в 1 фильме, и тд. Также у ребер могут быть свойства:

  • У фильмов: год выпуска, жанр, длина
  • У личностей: возраст, происхождение.
-6


Примеры СУБД: Neo4j, OrientDB, Amazon Neptune.

Ключ-значение (Key-Value Stores)

Данные хранятся в виде пар "ключ-значение". Ключ служит идентификатором, а значение представляет собой данные, связанные с этим ключом.

Примером такого хранения может стать кеш-хранилище сессий для пользователей веб-приложения.

Каждая сессия помечается уникальным ключом (например, ID сессии), и ей соответствует значение, содержащее информацию о пользователе, его предпочтениях и статусе.

SessionID123: {"userID": "user123", "username": "john_doe", "preferences": {"theme": "dark", "language": "en"}, "status": "active"}
SessionID456: {"userID": "user456", "username": "jane_smith", "preferences": {"theme": "light", "language": "fr"}, "status": "inactive"}

Этот формат - один из наиболее простых и производительных для быстрого доступа к данным. Часто используется для кэширования и хранения простых данных, таких как сессии и настройки.

Примеры СУБД: Redis, DynamoDB, Riak.

Тот, кто дошел до сюда, герой! А мы приходим к последнему на сегодня, но не менее интересному виду БД.

Колоночные БД (Column-Family Stores/wide column)

Данные организованы не в виде строк, как в традиционных реляционных базах данных, а в виде семейств столбцов. Давайте рассмотрим основные аспекты колоночных баз данных более подробно:

Посмотрим на пример колоночной базы данных для отслеживания оценок студентов:

-7

Каждая таблица представляет атрибуты студентов и их оценки, и каждый столбец содержит значения для конкретного атрибута.

Если бы у нас появился новый атрибут, например, "Спортивные достижения", мы могли бы легко добавить новый столбец без изменения всей структуры таблицы студентов.

Для сравнения в традиционной реляционной БД таблица с оценками выглядела бы следующим образом:

-8

Здесь уже данные организованы по строкам, где каждая строка представляет уникальную комбинацию атрибутов. Также добавление новых атрибутов требует расширение структуры, что снижает гибкость БД.

В целом, колоночные БД хороши тем, что за счет хранения по столбцам и сжатия они требуют меньше места и позволяют многие запросы обрабатыват быстрее

В заключении, хочется сказать, что в современном информационном обществе базы данных - Это База!

БД являются фундаментальным инструментом для хранения, управления и анализа данных. Выбор типа базы данных всегда зависит от конкретных требований и потребностей проекта.

Но БД продолжают оставаться ключевым элементом цифровой эры, и понимание их особенностей является важным элементом успешного управления информацией в различных областях.