1️⃣ 1 day: Dig into DB
Вводная часть. Почему нет
База данных — это организованный набор данных, который хранится и управляется с помощью системы управления базами данных (СУБД), чтобы обеспечить удобный доступ, управление и обработку информации.
Типы баз данных
- Реляционные базы данных (SQL): MySQL, PostgreSQL, SQLite, Oracle, MS SQL Server.
- Нереляционные базы данных (NoSQL): MongoDB, Redis, Cassandra, DynamoDB.
- Гибридные базы данных (например, PostgreSQL с JSON).
Реляционные базы данных
SQL
SQL (от англ. Structured Query Language) — это структурированный язык запросов, созданный для того, чтобы получать из базы данных необходимую информацию. Если описать схему работы SQL простыми словами, то специалист формирует запрос и направляет его в базу. Та в свою очередь обрабатывает эту информацию, «понимает», что именно нужно специалисту, и отправляет ответ. (3)
Данные хранятся в виде таблиц, они структурированы и разложены по строкам и столбцам, чтобы ими легче было оперировать. Такой способ хранения информации называют реляционными базами данных (от англ. relation — «отношения»). Название указывает на то, что объекты в такой базе связаны определенными отношениями. (3)
:::info NEXT STEP: TODO: Написать продвинутый материал по SQL. Добавить сюда ссылку и/или якорь
:::
Как работают запросы
Чтобы разобраться, как именно работает магия запроса, давайте представим его путь от пользователя до нужных ему данных:
Пользователь → Клиент → Запрос → Система управления → База данных → Таблица с базами данных
Сами БД (Система управления)
Реляционная база данных (РБД) — это система для хранения и управления данными, организованными в виде взаимосвязанных таблиц. В каждой таблице строки представляют отдельные записи, а столбцы содержат атрибуты данных. Такое табличное представление позволяет легко устанавливать связи между различными элементами данных и эффективно управлять ими. (1)
Для управления реляционными базами данных используются системы управления реляционными базами данных (СУБД), которые предоставляют интерфейс между пользователями и базой данных, а также обеспечивают административные функции для контроля хранения данных, их производительности и доступа к ним. (1)
Реляционные базы данных широко применяются в различных сферах, где требуется хранение структурированных данных с обеспечением их целостности и возможности выполнения сложных запросов. Примеры таких СУБД включают MySQL, PostgreSQL, SQLite, Oracle, MS SQL Server. (2)
GUI взаимодействие (c Базами данных)
Обычное взаимодействие с СУБД происходит через консоль или Driver's в коде. Вариаций множество. Но привычные GUI — это отдельные программы. Инструменты с графическим интерфейсом (GUI) для управления СУБД — это приложения, которые упрощают работу с базами данных, предоставляя удобный визуальный интерфейс
Примеры популярных GUI-инструментов:
- phpMyAdmin
- pgAdmin
- DBeaver
и тд
Таблицы
Отношение — это сама таблица, она двумерная и состоит из столбцов и строк.
:::info Самое простая аналогия: xy, декартова система координат
:::
Ключ — это самый важный столбец в таблице, за счет этих значений и происходит взаимодействие в реляционной базе данных, он связывает таблицы между собой.
:::info Есть разные виды ключей
:::
Кортеж (строка или запись) — это табличная строка с порядковым номером, в которой содержится информация об одном конкретном объекте.
Атрибут — столбец в таблице, который содержит один конкретный параметр: название, тип, дату, стоимость или другую характеристику.
Значение — элемент таблицы, который находится на пересечении столбцов и строк.
Примеры таблицы из GUI-инструментов
Пробуем сами
Public: https://w.ntcad.ru/s/psql-first-steps
Private: 2️⃣ Day 2: Dig into DB, Postgres SQL install and tables
Нереляционные базы данных
Нереляционные базы данных, часто называемые NoSQL (Not Only SQL), — это тип баз данных, которые предназначены для хранения, управления и обработки данных, не структурированных в виде традиционных таблиц и схем, характерных для реляционных баз данных (SQL). Они разработаны для решения задач, связанных с большими объемами данных, высокой скоростью операций и гибкостью хранения данных. (*ChatGPT) Такие СУБД появились в 2000-х годах как попытка решить проблемы масштабируемости при сохранении простоты и гибкости. (4)
Почему мы не говорим про общий принцип работы
В нереляционных БД строго определенной схемы взаимосвязи между данными нет. То есть информационная модель определяется СУБД «по ходу дела» в процессе работы приложения (ключевое отличие от SQL (далее так буду прописывать реляционные бд)). Это позволяет быстро адаптировать базу данных в зависимости от того, с каким типом информации в конкретный момент времени работает приложение.
Типы нереляционных баз данных:
Документные базы данных: Хранят данные в виде документов (например, JSON), что обеспечивает гибкость и удобство при работе с неструктурированными данными. (4)
Базы данных "ключ-значение": Используют простую модель хранения данных в виде пар "ключ-значение", что обеспечивает высокую скорость доступа к данным. (4)
Графовые базы данных: Ориентированы на хранение и обработку данных, представленных в виде графов, что полезно для приложений, требующих анализа сложных взаимосвязей. (4)
Колонно-ориентированные базы данных: Хранят данные в виде столбцов, что позволяет эффективно обрабатывать большие объемы информации и выполнять аналитические запросы. (4)
Разберемся на примере базы данных "ключ-значение"
Базы данных "ключ-значение" являются одними из самых простых и производительных типов NoSQL-систем. Они представляют данные в виде пар: ключ (уникальный идентификатор) и значение (ассоциированные данные). Такой подход делает их идеальными для задач, где требуется быстрая запись, чтение и обновление данных.
:::info TODO: Применение редиски. Отдельный файл
:::
Гибридные базы данных
Гибридные базы данных — это системы управления базами данных (СУБД), которые объединяют несколько типов хранения и обработки данных в одной платформе, предоставляя пользователю возможность использовать различные подходы в зависимости от потребностей приложения. Они предлагают сочетание традиционных реляционных баз данных и возможностей для работы с нереляционными данными (например, документоориентированными, графовыми или ключ-значение). Это дает большую гибкость и производительность в работе с разными типами данных.
Характеристики гибридных баз данных:
- Смешанное хранение данных: Гибридные базы данных поддерживают одновременно реляционные данные (структурированные таблицы) и нереляционные данные (например, JSON, XML, графы). Это позволяет эффективно обрабатывать как традиционные данные, так и большие объемы неструктурированных данных.
- Поддержка различных моделей данных: В отличие от традиционных реляционных баз данных, гибридные СУБД могут использовать несколько моделей хранения данных в одном решении:
- Реляционная модель (таблицы, строки, столбцы).
- Документоориентированная модель (JSON, BSON).
- Графовая модель (вершины и ребра).
- Модель ключ-значение.
- Гибкость запросов: Гибридные базы данных часто поддерживают использование разных типов запросов: SQL для реляционных данных и NoSQL-запросы для обработки нереляционных данных. Это дает возможность выбирать наиболее подходящий инструмент в зависимости от контекста.
- Поддержка транзакций: Некоторые гибридные СУБД предоставляют возможность использовать транзакции в обоих типах данных (реляционных и нереляционных)
Примеры гибридных баз данных:
- Oracle Database: Oracle имеет поддержку как реляционных, так и документов JSON и XML, предоставляя гибкость работы с различными типами данных.
- Microsoft SQL Server: SQL Server поддерживает хранение и обработку данных в формате JSON, а также интеграцию с неструктурированными данными.
- Couchbase: Это гибридная СУБД, которая сочетает в себе возможности документоориентированной базы данных и реляционной обработки.
- ArangoDB: Гибридная графовая база данных, которая также поддерживает работу с документами и ключ-значение.
- PostgreSQL: С поддержкой расширений для хранения JSON, графов и других форматов, PostgreSQL является гибридным решением для множества сценариев.
:::warning Далее будет рассмотрение только в аспекте реляционных БД
:::
Основы проектирования баз данных
- Нормализация данных: минимизация избыточности.
- Создание схем данных (таблиц, коллекций).
- Связи между таблицами (1:1, 1:М, М:М).
- Индексы для ускорения поиска.
\
\
\
Хранение данных
- Типы данных (строки, числа, даты, JSON и т.д.).
- Масштабирование: вертикальное (увеличение ресурсов) и горизонтальное (добавление узлов).
Производительность
- Использование индексов.
- Оптимизация запросов.
- Кэширование (Redis, Memcached).
- Транзакции и управление блокировками.
Безопасность
- Контроль доступа (права пользователей).
- Шифрование данных.
- Резервное копирование и восстановление.
Инструменты и технологии
- Управляющие системы (PostgreSQL, MySQL, MongoDB и др.).
- Инструменты миграции и резервного копирования.
- ORMs (Object-Relational Mapping), например, SQLAlchemy, Hibernate, Django ORM.
Администрирование
- Мониторинг работы (загрузки, ошибки, медленные запросы).
- Управление конфигурацией.
- Обслуживание и обновление базы данных.
Современные подходы
- Работа с большими данными (Big Data): Hadoop, Apache Spark.
- Технологии распределенных баз данных: CockroachDB, Cassandra.
- Использование облачных баз (AWS RDS, Google BigQuery, Azure SQL).
Источники
- https://aws.amazon.com/ru/relational-database
- https://www.oracle.com/cis/database/what-is-a-relational-database/
- https://blog.skillfactory.ru/glossary/sql/
- https://blog.skillfactory.ru/glossary/nosql
\