LINUX.ORG.RU

История изменений

Исправление k0valenk0_igor, (текущая версия) :

Это может оказаться совсем не одним и тем же. Предположим я положил коллекцию документов в поле JSONB. Но с точки зрения PostgreSQL это может оказаться вовсе не коллекция документов, а массив данных типа JSON! И разница будет очень существенна: в поддерживаемых операциях на стороне сервера.

Я, предположим, захочу во всех документах изменить определенных атрибут. Так вот, с точки зрения «поле JSONB - это набор данных типа JSON» я должен буду считать эти данные на сторону клиента, парсировать их и изменив то, что мне надо вернуть «на базу». И скажу прямо такой подход не дает никакого профита!

Куда интереснее передать серверу js-выражение, меняющее все что надо, на его стороне. Атомарно меняющее. Но для этого надо что бы:

- сервер поддерживал такие (не реляционные) выражения

- сервер считал поле JSONB не набором JSON-данных, а коллекцией документов

И признаться, я сильно сомневаюсь, что разрабы PostgreSQL на это пойдут. Уж хотя бы по причине архитектурных сложностей.

И это я еще не затрагиваю такие концепции как map-reduce. Потому что пока речь у нас шла об операциях с коллекциями документов хранящихся в единичном поле JSONB. А вот как только мне понадобится сделать распределенный запрос к набору таких полей (быть может в разных таблицах).... вот тогда начнется настоящее веселье

Исходная версия k0valenk0_igor, :

Это может оказаться совсем не одним и тем же. Предположим я положил коллекцию документов в поле JSONB. Но с точки зрения PostgreSQL это может оказаться вовсе не коллекция документов, а массив данных типа JSON! И разница будет очень существенна: в поддерживаемых операциях на стороне сервера.

Я, предположим, захочу во всех документах изменить определенных атрибут. Так вот, с точки зрения «поле JSONB - это набор данных типа JSON» я должен буду считать эти данные на сторону клиента, парсировать их и изменив то, что мне надо вернуть «на базу». И скажу прямо такой подход не дает никакого профита!

Куда интереснее передать серверу js-выражение, меняющее все что надо, на его стороне. Атомарно меняющее. Но для этого надо что бы:

- сервер поддерживал такие (не реляционные) выражения

- сервер считал поле JSONB не набором JSON-данных, а коллекцией документов

И признаться, я сильно сомневаюсь, что разрабы PostgreSQL на это пойдут. Уж хотя бы по причине архитектурных сложностей.