Посмотрев документацию Postgres, вижу поддержку XML. Тогда вопрос: не проще все это хранить и обрабатывать в базе в XML варианте? В MSSQL для меня сегодня гораздо удобнее хранить и обрабатывать в XML чем вот такие хитроумности. Не знаю как в Postgres но MSSQL умеет и древовидные xml строить с уровнями одним запросом. А раз и Postgres работает с XML то вопрос остается чисто в сериализации и десериализации json<>xml.
Я понимаю что это потеря производительности на конвертации но если речь идет об очень больших данных и производительности, тогда и смотреть нужно в сторону mongo redis и т.д.
Вопрос представления данных в проекте. Мы на работе обрабатываем данные в XML (AIXM 5.1). И я бы не сказал, что SQL запросы по XPath удобнее/легче читаются. Просто необходимость вывода данных в XML определила формат. Если разработчику удобнее оперировать JSON, почему бы и нет.
У jsonb есть хорошее преимущество перед xml это возможность делать индексы па самим json объектам, с xml данными это сделать сложно, придется преобразовывать к типу символьной строки и потом создавать индекс. Да и почему бы нет, Potgres сейчас достаточно быстро развивается, приятно когда есть все.
У баз с полноценной поддержкой XML (не знаю, как с этим в Postgres, но думаю, что это там есть) индексы по XML как раз замечательно строятся, и XPath-запросы потом их используют. Собственно, он именно затем и нужен как отдельный от обычных блобов тип данных.
Для расширенных запросов по JSON данным можно использовать JSQuery. Он более функционален, чем встроенные возможности Postgres. Хотя проект только начал развиваться.
JSONB запросы в PostgreSQL