Встречается на 25% собеседований по Go

Какие БД бывают

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

Реляционные базы данных (SQL)

Реляционные базы данных используют строгую схему и основаны на табличной модели, где данные организованы в строки и столбцы. Они поддерживают SQL — язык запросов, который позволяет выполнять сложные операции над данными. Такие базы данных обеспечивают ACID-транзакции и целостность данных, что делает их хорошим выбором для систем с чёткими связями между сущностями.

Примеры реляционных СУБД: MySQL, PostgreSQL, Oracle Database, Microsoft SQL Server.

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

Нереляционные базы данных хранят данные в различных форматах и не требуют фиксированной схемы. Они часто используются для работы с большими объёмами разнообразных данных и горизонтального масштабирования. NoSQL-базы делятся на несколько подтипов:

  • Документо-ориентированные — данные хранятся в виде документов (JSON, BSON). Примеры: MongoDB, CouchDB.
  • Ключ-значение — простейшая модель, где каждому ключу соответствует значение. Примеры: Redis, DynamoDB.
  • Графовые — данные представлены как узлы и рёбра, что удобно для связей. Примеры: Neo4j, ArangoDB.
  • Столбцовые — данные хранятся в столбцах, а не строках, что ускоряет агрегации. Примеры: Cassandra, HBase.

Другие типы баз данных

Помимо SQL и NoSQL, существуют специализированные типы:

  • Объектно-ориентированные — хранят данные в виде объектов, как в ООП. Подходят для приложений с тесной связью с кодом. Примеры: db4o, ObjectDB.
  • Иерархические — организуют данные в виде дерева, где каждый элемент имеет родителя. Пример: ранние версии IBM IMS.
  • Сетевые — представляют сложные отношения через граф, где узлы — записи, рёбра — связи. Примеры: CA-IDMS, Raima Database Manager.
  • Временные ряды — оптимизированы для данных, собранных через равные промежутки времени. Используются для мониторинга и аналитики. Примеры: InfluxDB, TimescaleDB.
  • Базы данных в памяти — хранят данные в оперативной памяти для максимальной скорости. Примеры: Redis, Memcached.

Как выбрать базу данных

Выбор типа базы данных зависит от нескольких факторов:

  • Тип данных: структурированные, полуструктурированные или неструктурированные.
  • Требования к масштабируемости: вертикальное или горизонтальное масштабирование.
  • Скорость запросов и транзакций: критична ли задержка.
  • Сложность запросов: нужны ли сложные JOIN и агрегации.
  • Согласованность данных: важна ли строгая целостность (ACID) или допустима eventual consistency.

Каждый тип имеет свои сильные и слабые стороны. Например, реляционные базы хороши для транзакционных систем, а документо-ориентированные — для гибких схем и быстрой разработки.

Коротко

  • Реляционные (SQL) — таблицы, строгая схема, ACID; примеры: PostgreSQL, MySQL.
  • NoSQL — гибкая схема, горизонтальное масштабирование; подтипы: документы, ключ-значение, графы, столбцы.
  • Специализированные: объектные, иерархические, сетевые, временные ряды, in-memory.
  • Выбор зависит от структуры данных, требований к скорости, масштабируемости и сложности запросов.
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы