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 ответов

4 просмотра

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

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

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

Anyone here suffers from unexplained aural migraines, who would be up for talking for a bit? Doesn't *have* to be aural, but I am not asking about headaches, I mean actual mi...
Martin Rys
55
Я тут за тем, чтобы задать вопрос, так как не знаю ассемблер, учу с/с++. Короче, насколько дорога операция перехода в функцию при ее вызове? Дело в том, что в с++ есть макросы...
Максим Рябцев
12
А какие чаты вообще в ходу? Auto aim? И что еше
do you think you're better off alone? А
13
hello friends. Do you know how can I learn getx? I have a software project that I should deliver it up to 5 weeks later and I need to learn firebase too. I will be thankfull
AmirHossein Razavi
15
Привет, нужен совет старших товарищей. Есть глобальная переменная var DefaultDataFolder:string; инициализируем DefaultDataFolder:='a:\_OUT\'; есть примитивная процедур...
Max Otto
14
Доброе время суток! у меня тут иноды закончились. и понял почему по сути кстит, я периодически очищаю постгрес и сентри контайнер: postgres=# DELETE FROM nodestore_node WHER...
Юсиф Насиров
9
Вопрос. Теоретический. Есть список команд. Команды отправляю в обработку некой функции, по очереди. Разные команды могут давать разные результаты после обработки. В зависимос...
Serjone
7
Какой дос блять?
007
9
lazarus-3.2.0/gtk, linux патч "имя проекта по умолчанию project1 -> prj" день добрый не нравится "именя проекта по умолчанию" (project1), к.раз приходится переименовывать (н...
livontiy
5
Коллеги, а в чём сейчас хорошо писать на перле, в смысле ide? Пробовал в идее с плагином, подсветка есть, даже какие-то предупреждения есть, но рефакторинга считай нет. Перене...
Дмитрий Петров
9
Карта сайта