Я хотел бы сохранить BLOB-объект JSON в моей таблице (Postgres). Таблицу нужно часто читать. После того, как мое приложение читает таблицу, оно возвращает JSON-сериализацию этого большого двоичного объекта вместе с другими атрибутами этой таблицы клиенту.
# To illustrate, imagine an object like this
{
name: 'foo',
blob: {...} # this is blob that needs to be stored
}
и когда клиент запрашивает это, я хотел бы вернуть JSON-ответ, например
{"name": "foo", "blob": [...]}
При наличии базы данных Postgres очевидным выбором является хранение большого двоичного объекта в столбце json / jsonb. Но как насчет текстового столбца? Предполагая, что BLOB-объект не используется приложением, хранение сериализованной строки в текстовом столбце означает, что серверу не нужно десериализовывать BLOB-объект, а затем сериализовать обратно в JSON всякий раз, когда клиент отправляет запрос. Другими словами, сервер может просто рассматривать большой двоичный объект как строку. Звучит более эффективно, верно?
Однако, поскольку blob теперь обрабатывается как строка, полученная сериализация становится
{"name": "foo", "blob": "[...]"} # note the extra " around the array brackets
Это приводит к неправильному синтаксическому анализу в клиентском приложении, поскольку теперь blob анализируется как строка, а не как массив.
Так что мой вопрос
а. Правильно ли я считаю, что текстовый столбец будет более эффективным, чем jsonb (если эта проблема решена)?
б. если так, есть ли способ вернуть уже сериализованный объект JSON, не рассматривая его как строку? Если нет, то каков наилучший способ избежать такого типа десериализации, а затем немедленной сериализации отходов?