Право Писквора в кодировке base64 - все длиннее, чем raw. Вы кодируете что-то с помощью base64, чтобы получить его по каналу с ограниченным набором символов, а не как средство уменьшения размера.
Возможно, вопрос должен звучать так: BSON в кодировке Base64 меньше JSON ?
Если это так, то JSON-vs-BSON очень сильно зависит от содержимого. Например, произвольные числа с плавающей запятой, такие как 1.2345678901234567
, более эффективно хранятся в 8 двоичных байтах в BSON, чем версия строковых цифр JSON. Но более распространенные числа, такие как, скажем, 1
, гораздо эффективнее хранятся в виде строк в JSON.
Для строковых значений BSON теряет 4 байта для длинного слова, но возвращает некоторые обратно для каждых "
и \
JSON должен быть экранирован, плюс еще в строках с управляющими символами, где JSON должен использовать шестнадцатеричную последовательность. (Некоторые JSON-кодеры также \u
-экранируют каждый не-ASCII-символ для обеспечения безопасной передачи независимо от набора символов.)
IMO: BSON не имеет большого преимущества в компактности перед JSON в целом. Его сила заключается в простоте декодирования на низкоуровневом языке, а также в типах данных, которые JavaScript не имеет. Это может иметь незначительные преимущества для двоичных строк и нескольких других случаев; это, безусловно, стоит проверить для конкретной рабочей нагрузки. Но это говорит о том, что примеры в самой спецификации BSON значительно меньше в JSON.
Что касается BSON в кодировке base64: то же самое, за исключением 33%.