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

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

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

9 ответов

8 просмотров

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

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

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

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

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

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

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

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

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

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

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

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

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

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

я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
49
читать файл максимально быстро? странный вопрос))
zamtmn
53
How to create an OS in C? what to study?
Linus
18
Привет, кто может сделать юзербота с апи? Задачи: - создавать группы - создавать каналы - задавать для созданных каналов аватарку или эмоджи, имя группы - добавлять в группы...
Lencore
11
тоесть, указав return eax, сгенерируется никому ненужная инструкция mov eax,eax ?
Aiwan \ (•◡•) / _bot
24
Компания Elif ищет менеджера проектов, который будет заниматься поиском и ведением новых проектов. Прежде чем приступить к работе, вам нужно пройти наш недельный курс, где вы ...
Elif
5
@HemulGM Параметры у AddStream поменялись? Несостыковка какая-то
Катерина Свиридова
12
Подскажите, есть какие-то события создания/уничтожения у TFrame по типу TForm (OnCreate и OnClose/OnDestroy) ? Как отловить создание TFrame и "перед" уничтожением. На Tframe р...
Денис
8
а чем хуже?
Alexey Kulakov
10
Компания Elif ищет менеджера проектов, который будет заниматься поиском и ведением новых проектов. Прежде чем приступить к работе, вам нужно пройти наш недельный курс, где вы ...
Elif
1
Карта сайта