← Назад к вопросам

Какие документы хранятся в не реляционных базах данных

1.0 Junior🔥 141 комментариев
#Базы данных и SQL#Клиент-серверная архитектура

Комментарии (1)

🐱
deepseek-v3.2PrepBro AI5 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Документы в NoSQL базах данных

В нереляционных (NoSQL) базах данных само понятие "документ" имеет специфическое значение. Документные (документно-ориентированные) СУБД хранят данные в формате, максимально близком к объектам в современных языках программирования, что и определяет типы хранимых данных.

Ключевой формат: полуструктурированные данные

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

  • JSON (JavaScript Object Notation) — самый распространенный формат. Документ представляет собой набор пар "ключ-значение" и вложенных массивов.
  • BSON (Binary JSON) — бинарное представление JSON, используемое в MongoDB для эффективного хранения и обработки (поддерживает дополнительные типы данных, например, Date, BinData).
  • XML (eXtensible Markupup Language) — используется в некоторых системах (например, старых версиях MarkLogic), но JSON сегодня доминирует.

Конкретные типы хранимых документов (на примере MongoDB)

В классической документной БД MongoDB, единицей хранения является BSON-документ. Вот какие данные он может содержать:

{
  "_id": ObjectId("507f1f77bcf86cd799439011"), // Уникальный идентификатор, аналог PRIMARY KEY
  "userName": "Иван Тестировщиков",
  "email": "ivan.test@example.com",
  "age": 30,
  "address": { // Вложенный документ
    "city": "Москва",
    "street": "Ленина",
    "house": 42
  },
  "hobbies": ["тестирование", "автоматизация", "чтение"], // Массив
  "registrationDate": ISODate("2023-05-15T10:00:00Z"),
  "preferences": { // Динамическая структура без предопределенной схемы
    "theme": "dark",
    "notifications": true
  },
  "orders": [ // Массив сложных вложенных документов
    {
      "orderId": "ORD-001",
      "amount": 1500,
      "items": ["Mouse Logitech", "Keyboard mechanical"],
      "status": "delivered"
    }
  ]
}

Категории данных в таком документе:

  1. Атрибуты сущности: Поля userName, email, age.
  2. Составные объекты: Вложенный документ address.
  3. Списки/коллекции: Массив hobbies.
  4. Связанные данные (денормализованные): Массив заказов orders, встроенный прямо в документ пользователя для быстрого чтения, без JOIN.
  5. Метаданные: Поле _id, registrationDate.

Области применения документных моделей

Такая модель идеально подходит для хранения:

  • Профили пользователей и данные учетных записей (социальные сети, SaaS-продукты).
  • Контент-ориентированные данные: Статьи, посты в блогах, каталоги товаров с разнообразными атрибутами (например, у книги — автор, страницы, у одежды — размер, цвет, материал).
  • Данные конфигурации и настроек, которые часто меняются.
  • Данные с эволюционирующей схемой, когда новые поля добавляются постепенно без дорогостоящего миграции БД (ALTER TABLE).
  • Журналы событий (Logs) и телеметрия, где каждый событие может иметь разный набор полей.
  • Кэшированные агрегированные данные, например, результаты сложных вычислений, готовые для отображения на дашборде.

Преимущества хранения данных в документах с точки зрения QA

  1. Гибкость при тестировании: Можно легко добавлять тестовые данные с новыми полями, не изменяя схему БД.
  2. Наглядность: Данные в JSON/BSON формате легко читаемы и могут быть напрямую использованы в API (REST, GraphQL).
  3. Простота запросов: Запросы часто соответствуют структуре самого объекта. Например, поиск всех пользователей из Москвы: db.users.find({"address.city": "Москва"}).
  4. Отсутствие проблем с JOIN: Вместо выполнения ресурсоемких операций соединения, связанные данные часто уже встроены в документ, что ускоряет чтение.

Важные нюансы для понимания

  • Не все NoSQL — документные. Помимо документных (MongoDB, Couchbase), существуют ключ-значение (Redis), колоночные (Cassandra), графовые (Neo4j) БД, и в них "документы" хранятся иначе или вообще не хранятся.
  • Денормализация и дублирование данных: Это плата за скорость. Один и тот же факт (например, адрес доставки) может дублироваться в документах "Пользователь" и "Заказ". При изменении адреса нужно обновлять все документы, где он упоминается, что усложняет тестирование на целостность данных (Data Integrity).
  • Валидация схемы: Современные документные БД (MongoDB с версии 3.2+) поддерживают JSON Schema для валидации, что позволяет внедрять контроль структуры данных, критически важный для тестирования.

Таким образом, в нереляционных базах данных (конкретно в документных) хранятся сложные, иерархические, полуструктурированные сущности, представленные в форматах JSON/BSON/XML. Это позволяет эффективно моделировать предметные области, которые плохо ложатся на таблицы с фиксированными строками и столбцами, что необходимо учитывать при проектировании тестовой стратегии и работе с данными.

Какие документы хранятся в не реляционных базах данных | PrepBro