|
|
|
Целесообразность использования JSON
|
|||
|---|---|---|---|
|
#18+
Добрый день уважаемые. Собственно прошу поделится опытом использования JSON для хранение. Что чаще всего вы храните в данном типе и почему? Собственно со своей стороны хочу поделиться мыслями. 1. Удобно хранить статические родственные свойства сущности, которые не будет участвовать в выборке или участие будет минимальным и не имеет связных ключей. Например имеем сущность "авто". Есть у него свойство "габарит" которое состоит из длины, ширины и высоты. Вот эти три свойства второго уровня "габарит" удобно хранить json. Иначе пришлось бы создавать три дополнительных столбца. 2. Если необходимо хранить какие то JSON объекты, целостность которых не особо важна или она проверяется приложением. Например мы используем для "сервер - клиент" RPC протокол который состоит из объекта. Удобно его писать, хранить и получать без серилизации. 3. Если используем ORM которая без костылей умеет прозрачно сериализовать объекты "туда - сюда" и контролирует целостность. 4. Если мы имеем многоуровневые данные и действительно не можем их расгрупировать по таблицам - каскадом, деревом, материализациями, вюхами. Вот 4 пунка при которых использование JSON действительно обосновано. Вот всех остальных по моему мнению - это попытка упростить структуру таблицы (на первый взгляд) и усложнить работу с ней. Отказаться от всех плюшек реляционного подхода. Такая попытка сделать лошадь на шестью ногах..На 6 ногах есть NOSQL и Mongo. И вообще я бы как то ограничил поддержку JSON в PG. Потому как много умельцев пытаются засунуть гигабайта JSON в PG. А потом плюются не понимая сильных сторон PG. Кто что скажет?) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2015, 15:35 |
|
||
|
Целесообразность использования JSON
|
|||
|---|---|---|---|
|
#18+
Electric200, начну с конца -- накладывать искусственные ограничения -- это тупиковый путь. пусть оно прострелит себе ногу навылет в 50-ти направлениях -- это его проблемы, пусть на пасту изойдёт -- кому какое дело главное, чтобы мне ,в случае необходимости пальнуть в ногу, -- это было позволено. про 3 поля в джейсоне вместо 3---х в таблице -- поржал. аффтар жжод. пеши исчо. я джейсона не трогаю -- он мне не нужен. а вот шсторе [hstore] пользую. -- для открытого списка ключ--значение. (т.е. переменного числа полей). и массивы типов пользую -- для нарушения реляционной модели -- вместо подчиненки, если мне нужны индексы, исчисляемые из этих массивов и основных полей мастера. - тут однако засада -- вы получаете копию версии более широкой записи, при апдейте одного значения в массиве. т.е. очень узок перечень причин , когда в это стоит вдаваться. Опять же тосты отдельно ночуют. А индексы в них пухнут невозбранно. Могу наверное и массив шсторей поюзать -- для тех же целей. Хотя и вряд ли. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2015, 16:04 |
|
||
|
Целесообразность использования JSON
|
|||
|---|---|---|---|
|
#18+
qwwqпро 3 поля в джейсоне вместо 3---х в таблице -- поржал. аффтар жжод. пеши исчо. qwwqа вот шсторе [hstore] пользую. -- для открытого списка ключ--значение. (т.е. переменного числа полей). qwwqА вот это только для внутреннего использования. Вытянуть это дело куда либо довольно проблемно и совсем удобно. Плюс в посл. версия PG есть нативные штуки по JSON. Та блин, hstote удобен внутри. и массивы типов пользую --. Автор жги еще) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2015, 16:15 |
|
||
|
Целесообразность использования JSON
|
|||
|---|---|---|---|
|
#18+
qwwq - Что ты с этим hstote сделаешь за пределами PG ? Без сериализатора получишь строку. Чем тебе моя идея с одним JSON вместо трех не понравилась? Обоснуй. Я c массивами не сравниваю, имхо разная структура. Массив набор линейных данных, JSON же в контексте ассоциативного массива. Интересен именно опыт использования JSON с учетом недостатков и преимуществ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2015, 16:22 |
|
||
|
Целесообразность использования JSON
|
|||
|---|---|---|---|
|
#18+
Electric200qwwqа вот шсторе [hstore] пользую. -- для открытого списка ключ--значение. (т.е. переменного числа полей). А вот это только для внутреннего использования. Вытянуть это дело куда либо довольно проблемно и совсем удобно. Плюс в посл. версия PG есть нативные штуки по JSON. Та блин, hstote удобен внутри. он, hstore который, просто правильно устроен на своём месте. именно для реляционной БД. для написания именно внутреннего всякого api -- всевозможных механизмов однотипной обработки разных табличек. наружу его и светить --то не надо. а json -- овно какое--то. но пусть себе будет -- для жаба-дрочеров. мож и я какого-нть уеп--клиента прямо из базы с ним напишу. как с xml[soap]. но не для хранения, конечно же. а для обмена. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2015, 16:28 |
|
||
|
Целесообразность использования JSON
|
|||
|---|---|---|---|
|
#18+
Electric200 qwwq - Обоснуй. сам ты -- "обоснуй" от обоснуя слышу ты ещё фио в одно поле паклодь и парси, парси, и парси его потом до потери пульса, йоптель. единственно ,когда нужны мягкие типы -- когда вы не знаете ,что в них будет лежать -- переменное число либо ключей, либо только значений. во всех остальных -- потрудитесь ручками -- оно себя 100 раз потом оправдает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2015, 16:36 |
|
||
|
Целесообразность использования JSON
|
|||
|---|---|---|---|
|
#18+
qwwq, Все бы думали как ты, так бы и сидели в эпоху 95 винды... Мне с ORM парсить вообще нечего не нужно. Все прозрачно. Я в общем говорю о целесообразности использования JSON. И его целесообразность, благодаря нативных функциям - намного полезней, чем хранение "мягких" данных. Можно и ФИО запихнуть. почему нет? Индексы с джоинами - с коробки. В общем твои доводы я понял. Хотелось бы еще кого то услышать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2015, 09:49 |
|
||
|
Целесообразность использования JSON
|
|||
|---|---|---|---|
|
#18+
Electric200, JSON использую, но в основном, только для ввода-вывода, где может быть разные структуры данных как параметры и/или возвращяется разное количество полей в результате т.е. в основном для динамичного эскуеля. пробралось и в таблицу такое несщястье. тогда думал что идея хорошая, этим полем пользуется только веб фронтэнд. однако, мир меняется, также меняется его отображение в данных в самой базе, и тут уже хочется и чтоб foreign key был и работал и т.д. и т.п. так что сейчяс мысли о том как поменять ситуацию, может придётся отказатся от JSON, а может с костылями оставлю. P.S. да, есть JSON которого менять не буду. в нём шаблоны документов, которые рисуются на фронт-енде, хранятся. лучше чем двоичный формат, да и поиск/идентификация документа возможна с индексацией конечно. но это, думаю, не общее правило, а просто подходящий юзкейс. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2015, 11:07 |
|
||
|
Целесообразность использования JSON
|
|||
|---|---|---|---|
|
#18+
Electric200qwwq, <>В общем твои доводы я понял. "не льстите себе, мсье" ((це)баян) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2015, 12:40 |
|
||
|
Целесообразность использования JSON
|
|||
|---|---|---|---|
|
#18+
Electric200, мне json где-то пару раз всего пригодился: 1) когда надо было сохранять в одной таблице данные, поступающие из нескольких источников, каждый отдавал их со своими полями и число полей могло быть разным, теоретически и массивы какие-то внутри могли быть. удобно было запихать все в json, учитывая что доступа к ним не предолагалось (в будущем данные могли пригодиться, но выборки/join'ы по ним все врядли бы делались все равно). 2) когда нужно было сформировать довольно сложную вложенную структуру в json и отдать ее сразу клиенту аяксом, не обрабатывая приложением. функции типа row_to_json очень тут пригодились. для плоских данных лучше наверное использовать массивы/hstore. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2015, 13:45 |
|
||
|
Целесообразность использования JSON
|
|||
|---|---|---|---|
|
#18+
Electric200, я использую у себя jsonb в самом простом варианте :) мне нужно было сохранить историю изменения пользователей... решил попробовать подчинённые таблицы (не основная инфа) сохранить как слепок в виде jsonb скорее ради эксперимента с данным типом поля, чем по необходимости. Получилось, что-то типа: '[{"name": "Администратор", "id_role": 1}, {"name": "Расширенный доступ", "id_role": 2}]' Поиск работает, а большего мне с этим не надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2015, 14:24 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=39059469&tid=1997757]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
165ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 207ms |
| total: | 455ms |

| 0 / 0 |
