«Сериализация» - это процесс преобразования данных (которые могут включать в себя массивы, объекты и аналогичные структуры) в одну строку, чтобы их можно было легко хранить или передавать. Например, одно поле базы данных не может хранить массив, потому что механизмы базы данных не понимают эту концепцию. Для сохранения в базе данных массив должен быть либо разбит на отдельные элементы и сохранен в нескольких полях (что работает, только если ни один из элементов не является самим массивом или объектом), либо он должен быть сериализован, чтобы его можно было сохранить как один строка в одном поле. Позже, строка может быть извлечена из базы данных и десериализована, давая копию исходного массива.
«Кодирование» - это очень общий термин, относящийся к любому формату, в котором могут быть представлены данные, или к процессу преобразования данных в конкретное представление.
Например, в большинстве языков программирования последовательность элементов данных может быть закодирована как массив. (Обычно мы называем массивы «структурами данных», а не «кодировками», но технически все структуры данных также являются кодировками.) Аналогично, само слово «кодирование» может быть закодировано как последовательность английских букв. Сами эти буквы могут быть закодированы как письменные символы или как битовые комбинации в текстовой кодировке, такой как ASCII или UTF8.
Процесс кодирования преобразует данный фрагмент данных в другое представление (другое кодирование, если вы хотите быть техническим в этом отношении.)
Как вы, возможно, уже поняли, сериализация является примером процесса кодирования; он преобразует сложную структуру данных в одну последовательность текстовых символов.
Эта последовательность символов может быть затем закодирована в какое-то двоичное представление для более компактного хранения или более быстрой передачи. Я не знаю, какая форма двоичного кодирования используется в BSON, но, вероятно, она более эффективна, чем битовые шаблоны, используемые в кодировках текста.