Парсер BSON
BSON (Binary JSON) — это формат двоичной сериализации, используемый MongoDB для хранения документов. Он расширяет JSON дополнительными типами, такими как ObjectId, Date, Binary и Decimal128. Этот инструмент разбирает файлы BSON и отображает содержимое в виде JSON с информацией о типах.
Спецификации
Типичные сценарии использования
- Просмотр файлов дампа MongoDB (.bson)
- Отладка данных BSON в очередях сообщений или кешах
- Анализ перехваченных пакетов проводного протокола MongoDB
- Конвертация BSON в JSON для внешних инструментов
- Аудит структуры и типов документа
Возможности
- Разбор двоичных файлов BSON с помощью перетаскивания или выбора файла
- Декодирование hex-кодированных данных BSON
- Отображение всех типов BSON, включая ObjectId, Date, Binary, Regex, Decimal128
- Конвертация в JSON с нотацией расширенного JSON
- Показ метаданных документа (размер, количество полей, максимальная глубина)
- Список всех ObjectId и дат, найденных в документе
- Отображение размеров двоичных полей и типов расширений
- Hex-просмотрщик для инспектирования сырых двоичных данных
Примеры
Простой документ BSON
Попробовать →Минимальный документ BSON с одним полем: {"hello":"world"}
16 00 00 00 02 68 65 6c 6c 6f 00 06 00 00 00 77 6f 72 6c 64 00 00Hex-кодированный BSON
Попробовать →Документ BSON со строкой, числом и логическим значением: {"name":"Alice","age":30,"active":true}
27 00 00 00 02 6e 61 6d 65 00 06 00 00 00 41 6c 69 63 65 00 10 61 67 65 00 1e 00 00 00 08 61 63 74 69 76 65 00 01 00Советы
- Вы можете вставить hex-кодированные данные BSON напрямую для их разбора.
- Файлы BSON можно создать с помощью: mongoexport --collection=users --out=users.bson
- ObjectId содержат временную метку; извлекайте с помощью: new ObjectId().getTimestamp()
- BSON поддерживает больше типов, чем JSON: даты, двоичные данные, регулярные выражения и десятичные числа.
- Максимальный размер документа BSON в MongoDB составляет 16 МБ.
Описание Парсер BSON
BSON (Binary JSON) — это формат двоичной сериализации, используемый внутри MongoDB для хранения и передачи документов. В то время как JSON представляет все данные в виде строк, чисел, логических значений, массивов и объектов, BSON расширяет это дополнительными типами, необходимыми базам данных: ObjectId (12-байтовый уникальный идентификатор), Date (временные метки с точностью до миллисекунды), Binary (произвольные массивы байтов), Decimal128 (точная десятичная арифметика) и регулярные выражения.
Документы BSON имеют префикс длины, что означает, что каждый документ и встроенный документ начинается с 4-байтового поля размера. Это позволяет парсерам пропускать документы без их полного декодирования, обеспечивая эффективное сканирование и индексирование. Каждый элемент помечен байтом типа, за которым следует имя поля в виде C-строки, а затем значение в кодировке, специфичной для типа.
MongoDB хранит документы как BSON внутри, передаёт их по проводному протоколу и экспортирует с помощью mongodump в файлы .bson. Понимание BSON необходимо для отладки приложений MongoDB, анализа файлов дампа и работы с проводным протоколом. Формат расширенного JSON обеспечивает человекочитаемое представление, сохраняющее информацию о типах BSON.
BSON не всегда меньше JSON. Короткие строки и маленькие числа могут быть фактически больше в BSON из-за накладных расходов на байт типа и префикс длины. Преимущество BSON не в размере, а в скорости — формат с префиксом длины обеспечивает быстрый обход, а расширенные типы предоставляют нативную поддержку дат, двоичных данных и десятичных чисел высокой точности без соглашений о кодировании.
ObjectId — это 12-байтовый тип BSON, используемый как значение _id по умолчанию в документах MongoDB. Он содержит 4-байтовую временную метку (секунды с начала эпохи), 5 байт случайного значения (уникального для машины/процесса) и 3-байтовый инкрементный счётчик. Такой дизайн гарантирует уникальность на распределённых серверах без какой-либо координации. Встроенная временная метка позволяет извлечь время создания документа с помощью ObjectId.getTimestamp().
Файлы дампа MongoDB (.bson), созданные с помощью mongodump, представляют собой сырые документы BSON, объединённые вместе. Вы можете вставить hex-кодированные данные BSON в этот инструмент для разбора отдельных документов. Также утилита bsondump (входящая в состав MongoDB Database Tools) может конвертировать файлы .bson в JSON через командную строку для массовой проверки.