172 похожих чатов

> А я поддержу https://t.me/pgsql/268012 ;) И добавлю проблемы с

консистентностью (в JSON легко "сохранить" всё что угодно вместо корректных данных).
> А почему не нормализованная схема? Даже с учётом "ибо ответ может быть bool/timestamp/int/string" — что там получается, если спроектировать, Вы смотрели?

В логике программы там всё равно будут методы приведения типов. То есть и так и так, то, что достанется из базы данных конвертировать в типы языка (тут go). Если это json, то сама анкета хранит информацию о типах и прога к нормальным типам привести сможет, даже с учётом всяких деталей типа 32/64 бита, деятичные знаки float и т.д.. Вся разница в двух подходах лишь в том, что с json все нюансы продумывать самому, а с "нормальной" моделью частично драйвер. Но там всё равно, либо делать колонки под каждый тип, либо в базу заливать бинарные значения, а потом их расшифровывать. Логику и так и так писать.

И разница получается такая. В случае с JSON одну запись БД по сути можно представить как BINARY, которая парсится в программе. Я получаю строку JSON, которую потом обрабатываю. Это одна строка БД на одну заполненную анкету.

С другой стороны, когда храню ключ-значение в BINARY, мне всё равно надо парсить это BINARY. Даже если хранить не BINARY, а делать в БД одну колонку на каждый тип (что тоже такое себе...), то всё равно в программе надо будет собирать кусками всё. Но при этом добавляются индексы, существенно увеличивается число записей БД. А логика программы такая, что доставать всё равно надо будет целиком данные анкеты. То есть не надо доставать два ответа на первые вопросы, а остальные ответы не доставать.

Вот в результате таких рассуждений пришёл к выводу, что JSON больше подходит.

1 ответов

14 просмотров

> То есть и так и так, то, что достанется из базы данных конвертировать в типы языка (тут go). Хмм... и что, у go существенные проблемы с типами данных (я просто не в курсе)? > Вся разница в двух подходах лишь в том Не только же? С нормализованной моделью "нюансы" может взять на себя СУБД, и определяются они декларативно или являются частью модели (CHECK, FK и т.п.). > Но там всё равно, либо делать колонки под каждый тип, То есть Вы уже пробовали моделировать? И только такая (примерно) схема получается? > Логику и так и так писать. Но сложность написания разная, см. выше. > С другой стороны, когда храню ключ-значение в BINARY, мне всё равно надо парсить это BINARY. Нет, если СУБД должно быть всё равно, что там хранится (если для PostgreSQL это не более чем blob), то можно хоть bytea использовать, хоть text, хоть JSON — то, с чем удобнее работать приложению (при условии, что оно будет только одно). Т.е. если PostgreSQL используется "тупо для хранения" — почему нет?

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта