Skip to content

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-инструментов:

  1. phpMyAdmin
  2. pgAdmin
  3. 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: Применение редиски. Отдельный файл

:::

Гибридные базы данных

Гибридные базы данных — это системы управления базами данных (СУБД), которые объединяют несколько типов хранения и обработки данных в одной платформе, предоставляя пользователю возможность использовать различные подходы в зависимости от потребностей приложения. Они предлагают сочетание традиционных реляционных баз данных и возможностей для работы с нереляционными данными (например, документоориентированными, графовыми или ключ-значение). Это дает большую гибкость и производительность в работе с разными типами данных.

Характеристики гибридных баз данных:

  1. Смешанное хранение данных: Гибридные базы данных поддерживают одновременно реляционные данные (структурированные таблицы) и нереляционные данные (например, JSON, XML, графы). Это позволяет эффективно обрабатывать как традиционные данные, так и большие объемы неструктурированных данных.
  2. Поддержка различных моделей данных: В отличие от традиционных реляционных баз данных, гибридные СУБД могут использовать несколько моделей хранения данных в одном решении:
  3. Реляционная модель (таблицы, строки, столбцы).
  4. Документоориентированная модель (JSON, BSON).
  5. Графовая модель (вершины и ребра).
  6. Модель ключ-значение.
  7. Гибкость запросов: Гибридные базы данных часто поддерживают использование разных типов запросов: SQL для реляционных данных и NoSQL-запросы для обработки нереляционных данных. Это дает возможность выбирать наиболее подходящий инструмент в зависимости от контекста.
  8. Поддержка транзакций: Некоторые гибридные СУБД предоставляют возможность использовать транзакции в обоих типах данных (реляционных и нереляционных)

Примеры гибридных баз данных:

  • 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).

Источники

  1. https://aws.amazon.com/ru/relational-database
  2. https://www.oracle.com/cis/database/what-is-a-relational-database/
  3. https://blog.skillfactory.ru/glossary/sql/
  4. https://blog.skillfactory.ru/glossary/nosql

\