Size: a a a

Чат подкаста «Разбор Полётов»

2021 June 29

D

Dima in Чат подкаста «Разбор Полётов»
и тд и тп
источник

PD

Phil Delgyado in Чат подкаста «Разбор Полётов»
В теории - можно. На практике это уже нарушение 1НФ, могут быть неприятные сюрпризы.
Тебе сложно гарантировать, что поле внутри json всегда будет, за сериализацию applayer отвечает.
Разве что прикручивать валидацию на сохраняемый json, но это уже сложно и противно.
источник

PD

Phil Delgyado in Чат подкаста «Разбор Полётов»
Ага, там много удобного для разработчика. Но не все поддерживается нормально jdbc и прочими серверными библиотеками.
источник

D

Dima in Чат подкаста «Разбор Полётов»
1 нф применимо для документов?
источник

AR

Andrei Rebrov in Чат подкаста «Разбор Полётов»
это не гарантирует вообще ничего. у тебя сегодня бэкэнд одно пишет в json, через месяц другое. потом ты читаешь старое значение и все идет по одному месту. мы несколько лет хранили корзину клиента в json и потом отказались, очень много проблем
источник

D

Dima in Чат подкаста «Разбор Полётов»
первый момент, второй момент, если у меня типизация на клиенте, имеет ли вообще смысл беспокоится? ну кроме разве что перестройки индексов
источник

D

Dima in Чат подкаста «Разбор Полётов»
но это икусство, подобрать верный, исходя из текущих данных
источник

PD

Phil Delgyado in Чат подкаста «Разбор Полётов»
Хм, вот именно поэтому я храню версию типа вместе с json. И делаю миграции в актуальный тип.
И никаких проблем это не вызывает, все гораздо проще, чем хранить в таблицах.
источник

D

Dima in Чат подкаста «Разбор Полётов»
можешь конкретный пример с кодом?
источник

AR

Andrei Rebrov in Чат подкаста «Разбор Полётов»
проблема в том, что структура jsonb никак не модерируется миграцями
источник

PD

Phil Delgyado in Чат подкаста «Разбор Полётов»
В смысле, не модерируется? А в чем проблема?
источник

AR

Andrei Rebrov in Чат подкаста «Разбор Полётов»
@dmsol вот тот же пример с корзиной покупателя. в корзине лежат продукты, меняется структура продукта и нужно положить экстра поле в этот объект. в итоге есть старые корзины, с продуктами без этого поля, если новые с этим. в итоге пишешь обработчик старых корзин и это не sql миграция, а код, в итоге работает медленнее и все выглядит как костыль
источник

D

Dima in Чат подкаста «Разбор Полётов»
ну если взять тот же джэксон, у тебя это поле новое у старых корзин будет с дыркой - null
источник

D

Dima in Чат подкаста «Разбор Полётов»
но ведь это нормально абсолютно
источник

PD

Phil Delgyado in Чат подкаста «Разбор Полётов»
Ну а зачем вы храните старые корзины, запустите миграцию, которая возьмет старую корзину и добавит новую.
И не надо использовать миграции на sql, это все равно не работает в реальной системе.
источник

D

Dima in Чат подкаста «Разбор Полётов»
у тебя же версионность
источник

D

Dima in Чат подкаста «Разбор Полётов»
тоже хороший вопрос
источник

PD

Phil Delgyado in Чат подкаста «Разбор Полётов»
На самом же деле миграции на json реализуются в разы проще, чем на sql
источник

D

Dima in Чат подкаста «Разбор Полётов»
думали разработчики, что будет со старыми корзинами?
источник

D

Dima in Чат подкаста «Разбор Полётов»
окей, забыли про жсонб
источник