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

Приветствую. Подскажите плиз, как грамотнее разруливать кейс появления новых таблиц/сущностей которые

логически привязаны к уже существующим.
Кейс: есть пользователи, уже целая база. Появляется фича оповещений, где есть настройки оповещений для каждого пользователя. Т.е. user_id, is_sms_receive, is_email_receive и прочее.
Получается на момент создания фичи база настроек пуста, а пользователи сами есть. Выходит есть проблемы с чтением, там null а не true/false ( на true/false не акцентируем, вполне могут быть и стоки и to_boolean() - не панацея) , а так же с записью, так как настройки для определенного пользователя not_found.
Какие есть варианты решения проблем? Я просто вижу, что в каждом write экшене создавать настройки пользователя, если их нет, а на чтении ставит дефолтные значения какие то.
Но получается что в каждом экшене будет проверка и создание, какой то болерплейт отчасти, а в разных частях чтения можно записать теоретически разные дефолтные значения, или вообще забыть про эту особенность.
Вариант забить всю таблицу данными на момент создания фичи - требует времени по выполнению и возможны краши пока это выполняется. Или же делать двух этапно: забить базу а потом выложить фичу в пользование?

9 ответов

25 просмотров

мне кажется проще при чтении проставлять дефолтное значение, если той или иной настройки нет в БД

Миграцию накати

Павел-Г. Автор вопроса
Nikolay Underground
Миграцию накати

Миграция это самый простой вариант, но что если уже куча данных и миграция будет выполняться полчаса, час?

Павел Г.
Миграция это самый простой вариант, но что если уж...

ты можешь сначала зарелизить скрипт для заполнения бд данными, запустить его (запомнив ID последнего юзера) потом зарелизить фичу и еще раз запустить скрипт с оффсетом этого ID чтобы дозаполнить тех юзеров, которые появились за время деплоя фичи

Павел Г.
Миграция это самый простой вариант, но что если уж...

Проведи миграцию в самое ненагруженное время и я не думаю что пользователей настолько много что просто insert into … select id, false, false from users будет полтора часа длиться

Павел-Г. Автор вопроса

с uuid возможно посложнее будет, но так да, вариант возможно

Bat
ты можешь сначала зарелизить скрипт для заполнения...

Зачем так сложно, просто начать для новых челов писать настройку а в след деплое добавить where not exists

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
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
Карта сайта