Что такое NoSQL (нереляционная) база данных?

«Что такое NoSQL (нереляционная) база данных?» — вопрос из категории Базы данных и SQL, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

NoSQL (Not Only SQL) — это класс баз данных, не использующих реляционную (табличную) модель с фиксированными схемами и строгими связями. Они предназначены для работы с большими объемами неструктурированных, полуструктурированных данных и обеспечивают горизонтальную масштабируемость.

Основные типы NoSQL БД:

  1. Документные (MongoDB, CouchDB): Хранят данные в виде документов (JSON, BSON, XML).

    // Пример документа MongoDB
    {
      "_id": "user_123",
      "name": "Анна",
      "email": "anna@example.com",
      "preferences": {
        "theme": "dark",
        "language": "ru"
      }
    }
  2. Ключ-значение (Redis, Amazon DynamoDB): Простейшая модель, где данные — это пары ключ-значение. Идеально для кэширования и сессий.

    SET user:session:abc123 "{"userId": 456}"
    GET user:session:abc123
  3. Колоночные (Apache Cassandra, HBase): Данные хранятся по столбцам, а не по строкам. Оптимизированы для аналитики и обработки больших данных.

  4. Графовые (Neo4j, Amazon Neptune): Хранят данные как узлы, связи и их свойства. Эффективны для сложных взаимосвязей (соцсети, рекомендации).

Преимущества перед реляционными БД:

  • Гибкость схемы: Структура данных может меняться без дорогостоящих миграций.
  • Горизонтальное масштабирование: Легче распределить нагрузку на множество серверов (шардирование).
  • Высокая производительность для специфичных сценариев (например, операций записи или графовых запросов).

Недостатки:

  • Отсутствие ACID-транзакций в чистом виде (хотя некоторые БД их поддерживают).
  • Менее стандартизированный язык запросов по сравнению с SQL.