Что такое базы данных. Реляционные базы данных
База данных (БД) — это упорядоченный набор структурированной информации: много данных разбивается на несколько простых таблиц, связанных между собой.
Преимущества базы данных
Удобное хранение данных
Базы данных позволяют хранить большие объёмы данных в структурированном виде в различных форматах: таблицах, документах, коллекциях и др.
Надёжное хранение данных
Все БД имеют механизмы для надёжного хранения данных и защиты от сбоев.
Быстрый доступ к большим объёмам данных
Эффективные алгоритмы поиска и индексации позволяют быстро извлекать нужные данные из базы, буквально за секунды.
Целостность данных
Базы данных обеспечивают непротиворечивое состояние данных, которые хранятся в соответствии с заданной структурой.
Многопользовательская среда
Базы данных предоставляют одновременный доступ к данным для множества пользователей с различных устройств.
Безопасность данных
Для каждой категории пользователей можно создать свой список ограничений и доступов, согласно которым можно взаимодействовать с информацией из БД.
Типы баз данных: реляционные и нереляционные
Реляционные базы данных хранят данные в таблицах с фиксированной структурой. Данные в разных таблицах могут быть логически связаны между собой, то есть «иметь отношения».
Нереляционные базы данных не имеют фиксированной структуры и хранят данные в виде документов, графов или других форматов. Это позволяет гибко работать с неструктурированными данными.
Транзакция — это набор связанных операций, которые либо завершаются успешно, либо терпят неудачу как единое целое.
Структура реляционных баз данных
Структура таблиц фиксирована и представляет собой набор столбцов разного типа (числа, строки, даты и др.). Количество столбцов ограничено несколькими сотнями
Набор таблиц и их взаимосвязи называются схемой данных. Связи между таблицами создаются с помощью ключей.
Ключ— это специальный столбец (или комбинация нескольких столбцов), который содержит для каждой строки уникальное значение (или уникальную комбинацию значений) для таблицы и позволяет однозначно идентифицировать строку.
Типы ключей
PK — primary key, первичный ключ
Первый и основной ключ таблицы. Часто содержит порядковый номер записи и имеет название ID. В некоторых базах данных первичный ключ задаёт порядок сортировки по умолчанию.
FK — foreign key, внешний ключ
Столбец в таблице, в котором указывается связь с другой таблицей. Значение поля внешнего ключа должно быть одним из значений ключа в связанной таблице.
Репликация базы данных — это способ держать постоянно обновляемые копии базы данных на нескольких серверах. При этом запись доступна на одном сервере (мастер), и все данные, записанные на мастер, рассылаются на остальные серверы/машины, которые называются репликами. В отказоустойчивой конфигурации в случае сбоя мастера одна из реплик принимает на себя роль мастера, а остальные реплики перестраивают процесс получения данных с нового мастера.
SQL (Structured Query Language) — это язык, который позволяет взаимодействовать с базами данных. С его помощью можно запрашивать данные, изменять их и управлять ими, а также выполнять транзакции.
Управляемые решения (Managed Service) упрощают администрирование баз данных, автоматизируют настройку и резервное копирование. Без такого сервиса пришлось бы самостоятельно разворачивать СУБД на виртуальной машине, заниматься всеми настройками и обеспечением безопасности вручную.
Нереляционные базы данных
Нереляционные базы предполагают соблюдение принципов BASE:
Базовая доступность (Basic Availability)
Система всегда попытается ответить на запрос, даже если результат может быть ошибочным или неудачным. Важно, что каждый запрос завершится, но он может не всегда быть успешным.
Система пребывает в гибком состоянии (Soft-state)
Очерёдность записей необязательна, реплики могут временно оставаться несогласованными. Со временем система учитывает все внесенные изменения, приводя данные к согласованному состоянию.
Окончательная согласованность (Eventual Consistency)
Хотя данные могут быть несинхронизированными в каждый момент времени, система гарантирует, что в итоге все данные придут к единому состоянию. Например, если добавить новую информацию, она не сразу появится во всех репликах, но через какое-то время данные во всех копиях базы данных станут одинаковыми.
Типы нереляционных БД
Базы данных «ключ-значение» (Key-value store)
Key-value store — самый простой и быстрый вид нереляционных баз данных. Данные в таких базах хранятся в виде пар «ключ-значение». У каждого фрагмента данных есть уникальный ключ, по которому можно получить значение.
Valkey хранит данные в формате «ключ-значение» и в качестве значений поддерживает не только строки, но и списки, множества, упорядоченные множества и хеши. Valkey — совместимая с Redis база данных in-memory, то есть данные полностью хранятся в оперативной памяти. Это позволяет считывать и записывать информацию очень быстро.
Документоориентированные базы данных (Document-oriented store)
Данные хранятся в слабоструктурированных документах, таких как JSON или BSON. Набор данных и их полнота зависят от целей конкретного применения.
Вместо таблиц используются коллекции, где хранятся документы — это аналоги строк в реляционной БД. Разные коллекции могут иметь разные структуры. В рамках одной коллекции у документов может различаться набор полей и типы данных.
Таким хранилищам свойственны:
- иерархичность
документы складываются в коллекции, а коллекции группируются логически - гибкость
значения, свойства и структура могут меняться в процессе разработки
Шардирование (шардинг) — это принцип проектирования базы данных, при котором данные разбиваются на части и размещаются на разных шардах. Каждый шард представляет собой отдельный узел внутри кластера, который может состоять из одной или нескольких реплик. Каждый сервер такого кластера отвечает только за определённый набор информации, обрабатывая запросы на его чтение и запись. Это увеличивает скорость обработки данных и пропускную способность приложения.
Колоночные базы данных (Сolumn family store)
Колоночные (столбцовые) БД по своему виду очень сильно похожи на реляционную базу данных: данные хранятся в столбцах, которые управляются как единое целое. При этом столбцы между собой не связаны, удаление или добавление новых не затрагивает остальную систему.
Когда выбирать реляционную базу данных (SQL)
Данные имеют чёткую структуру
Важна целостность данных
Частые операции записи и чтения
Нужны сложные запросы и отчёты
Когда выбирать нереляционную базу данных
Данные имеют гибкую или неизвестную структуру
Необходима высокая скорость и масштабируемость
Не требуются сложные связи между данными
Вы работаете с большими объёмами данных
Вспомогательные инструменты для БД
ETL (Extract, Transform, Load) — трёхэтапный процесс управления данными. Сперва данные извлекаются из внешних источников, трансформируются и очищаются, чтобы они соответствовали потребностям бизнес-модели, и только потом загружаются в DWH (Data Warehouse) для дальнейшего использования в BI-решениях и других прикладных системах.
Процесс сбора данных
Обычно данные компании хранятся в разных местах:
- Файл
- СУБД
- CRM
- Сообщения
- Потоки
- API веб-сервисов
Yandex Data Transfer — основной облачный сервис для передачи данных. В качестве источников и приёмников данных могут выступать СУБД, объектные хранилища или брокеры сообщений, например, Apache Kafka. Данные можно просто скопировать, можно настроить постоянную синхронизацию изменений, а можно использовать комбинацию из этих двух способов.
Yandex Managed Service for Apache Kafka® — сервис управления потоками данных. Основное назначение — это централизованный сбор, обработка, безопасное хранение и передача потока данных между сервисами. Apache Kafka можно сравнить с почтой — одни сервисы передают туда сообщения-письма, а другие — получают.
Yandex Data Streams — масштабируемый сервис для управления потоками данных в режиме реального времени. Данные из различных источников непрерывно поступают в Data Streams как в поток данных, который пересылает их для дальнейшей обработки и хранения. Пропускная способность обрабатываемых потоков может быть от килобайтов до терабайтов в час и более.
Yandex Message Queue — сервис очередей для обмена сообщениями между компонентами распределённых приложений и микросервисов. Этот сервис помогает обмениваться данными.
Инструменты обработки данных
Данные, загруженные из разных источников, имеют различную структуру и типы. Чтобы их обработать и подготовить к загрузке, есть такие сервисы:
- Yandex Data Processing
- Apache Airflow
- Yandex Cloud Functions
DataLens состоит из нескольких сущностей, которые обеспечивают полный цикл работы с данными:
- Подключение — набор параметров для доступа к источнику данных.
- Датасет — описание набора данных из источника.
- Чарт — визуализация данных из источника данных, датасета в виде таблиц, диаграмм и карт.
- Дашборд — набор чартов, селекторов для фильтрации данных и текстовых блоков.