Skip to content

Документо-ориентированные базы данных

Документо-ориентированные базы данных — это тип NoSQL баз данных, которые хранят и управляют данными в формате документов. Эти базы данных оптимизированы для работы с неструктурированными и полуструктурированными данными, что делает их особенно подходящими для приложений, где структура данных может изменяться или не быть заранее известной.

Основные характеристики документо-ориентированных баз данных

Хранение данных в виде документов

Данные представляются в виде документов, которые обычно имеют формат JSON (JavaScript Object Notation), BSON (Binary JSON) или XML. Каждый документ может иметь произвольную структуру, что позволяет хранить сложные вложенные данные.

Гибкость схемы

Документо-ориентированные базы данных не требуют строгой схемы, что позволяет легко изменять структуру данных без необходимости модификации всей базы данных. Это дает разработчикам возможность быстро адаптироваться к изменениям в требованиях.

Индексация

Большинство документо-ориентированных баз данных поддерживают индексацию на уровне документов, что позволяет быстро выполнять запросы и фильтрацию данных по различным полям.

Масштабируемость

Эти базы данных легко масштабируются как по вертикали, так и по горизонтали. Это означает, что вы можете добавлять больше ресурсов к существующим серверам или добавлять новые серверы в кластер.

Поддержка сложных запросов

Документо-ориентированные базы данных часто предоставляют возможности для выполнения сложных запросов, включая фильтрацию, агрегацию и сортировку данных.

Документо-ориентированные базы данных предлагают гибкость и масштабируемость, что делает их отличным выбором для современных приложений, которые требуют обработки разнообразных и быстро меняющихся данных.

Пример кода

Давайте посмотрим, на примере MongoDB, как будет выглядеть код на создание небольшой структуры данных:

json
{
    "_id": ObjectId("60c72b2f9b1e8d3e8c8f1e0a"),
    "first_name": "Иван",
    "last_name": "Иванов",
    "date_of_birth": "2000-05-15",
    "enrollment_date": "2018-09-01",
    "major": "Информатика",
    "courses": [
        {
            "course_id": ObjectId("60c72b2f9b1e8d3e8c8f1e0b"),
            "grade": 4.5
        },
        {
            "course_id": ObjectId("60c72b2f9b1e8d3e8c8f1e0c"),
            "grade": 3.8
        }
    ]
}

{
    "_id": ObjectId("60c72b2f9b1e8d3e8c8f1e0b"),
    "course_name": "Введение в программирование",
    "department": "Компьютерные науки",
    "credits": 5,
    "professor_id": ObjectId("60c72b2f9b1e8d3e8c8f1e0d")
}

{
    "_id": ObjectId("60c72b2f9b1e8d3e8c8f1e0d"),
    "first_name": "Алексей",
    "last_name": "Петров",
    "department": "Компьютерные науки",
    "hire_date": "2015-08-15"
}

{
    "_id": ObjectId("60c72b2f9b1e8d3e8c8f1e0e"),
    "student_id": ObjectId("60c72b2f9b1e8d3e8c8f1e0a"),
    "course_id": ObjectId("60c72b2f9b1e8d3e8c8f1e0b"),
    "grade": 4.5,
    "date_assigned": "2021-12-01"
}