Comments 12
NoSQL (посредством HStore, JSON и JSONB)
Чорт. Перестаньте называть тип данных json NoSQL!
Это вполне себе «реляционный» тип. Он индексируется, он участвует в SQL-запросах.
+3
но значение в JSON-поле — это ведь уже документ! %) вот отсюда и «логика» ;) а то, что по части этого документа можно построить индекс или сделать выборку — это уже приятные плюшки постгреса.
+2
Это не документ, вы не в монге же. Это просто составной тип. Такой же, как, к примеру, массив int[]
+1
какие ваши аргументы?
+1
Документация по postgres. Там нет слова документ.
Это сложный тип. Объект, если вам угодно (да-да, объектно-реляционная БД). Но это не документ.
Перестаньте тащить ваши дурные подходы из монги в почтенную реляционную базу.
Это сложный тип. Объект, если вам угодно (да-да, объектно-реляционная БД). Но это не документ.
Перестаньте тащить ваши дурные подходы из монги в почтенную реляционную базу.
-1
UFO just landed and posted this here
Вы можете привести практичный пример использования в индексе/запросе непосредственно типа json/jsonb? Вы же в курсе, что в результате создания такого индекса планировщик ничего не будет знать о структуре документа и использовать его для поиска по свойствам вашего json вы не сможете?
Другое дело — когда мы создаем функциональные индексы. Скажем, по doc->'item'->>'property'. Но под капотом — это всего лишь тип text полученный в результате выполнения функций json_object_field_text(json_object_field(…
Может я чего-то не понимаю, но где здесь SQL? Смогу я в ANSI найти описание диалекта a->b->>c? А XPath найду, если буду создавать индексы по xpath('/item/@property')? Имхо, это чистой воды NoSQL в интерпретации «Not Only SQL».
Другое дело — когда мы создаем функциональные индексы. Скажем, по doc->'item'->>'property'. Но под капотом — это всего лишь тип text полученный в результате выполнения функций json_object_field_text(json_object_field(…
Может я чего-то не понимаю, но где здесь SQL? Смогу я в ANSI найти описание диалекта a->b->>c? А XPath найду, если буду создавать индексы по xpath('/item/@property')? Имхо, это чистой воды NoSQL в интерпретации «Not Only SQL».
0
Маленькое замечание. В postgresql для json и jsonb нет синтаксиса, который бы позволил обновить только одно поле (поправьте меня если ошибаюсь). Документ нужно перезаписывать целиком. Поэтому, для исключения состояния гонки, приходится навешивать критические секции на код обновляющий json и jsonb. Для hstore же подобный синтаксис имеется.
+1
Два года назад рассказывал в Токио про hstore и jsonb, может кому пригодится — http://www.sai.msu.su/~megera/postgres/talks/semi-structured-postgresql-japan.pdf
+4
Sign up to leave a comment.
Когда использовать неструктурированные типы данных в PostgreSQL? Сравнение Hstore vs. JSON vs. JSONB