Ayrat
Nikolay
А как изменить уже внесённые данные?
x
или ЗП разделили на две части - чорный нал и белая ) и повышать могут любую. А раньше это была тупо сумма
Vasily
Ayrat
Это плохой пример потому что такого не будет
Ayrat
Поясню
Ayrat
Или твой бизнес не знал о существовании премий, и их не было совсем. И сейчас они появились.
Или это были другие евенты
Ayrat
Существующие евенты никогда не меняются
Vasily
Ayrat
Они же евенты. Они уже случились
Nikolay
Раньше мы везде показывали общую ЗП, но при разработке нового сервиса, оказалось, что нам важно сейчас разделять ЗП на оклад и премию
Nikolay
И нам нужно все данные поменять, чтобы теперь хранить ЗП и премию отдельно
Ayrat
Ayrat
Это правда нереальный пример.
x
вопрос как старые ивенты накатить на новый стейт?
Nikolay
Ну смотри реальный пример
Ayrat
Nikolay
Вот у нас была деталь, и было поле со стандартом изготовления детали
ГОСТ 1234
ТУ 1234
ОСТ 1234
Раньше всё писали в базе в одно поле, потом выяснилось, что нужно разделение, отдельно тип стандарта и его код, соответственно разделили на две ячейки
ГОСТ | 1234
ТУ | 1234
ОСТ | 1234
Чтобы пофиксить существующие данные, мы просто руками прошлись и разнесли их, как быть со стейтом в данном случае?
Ayrat
Ответ тот же)
Берешь евент стрим и фолдишь в модель с раздельными полями.
Код для разбивания строки по пробелам показывать?)
Nikolay
Там не всё так просто, нужно именно руками было разбивать
Nikolay
Так как все пишут по разному
Nikolay
И там 60 разных вариаций
Nikolay
Где-то есть косячные данные
Nikolay
ГОСТ1234
Vasily
Всего 60
Nikolay
Даже были варианты с английскими буквами OCT
Ayrat
Ну сделаешь кастомный мапинг, зашиваешь в код
Ayrat
Или отправляй из сервиса письмо или евент если не может прочитать строчку
Nikolay
Так а дальше так же и продолжать передавать одной строкой?
Nikolay
И фолдить?
Ayrat
И тут появляется снапшот!
Ayrat
Один раз зафолдил, сохранил чекпоинт и все
Nikolay
А если нужно историю изменений одной записи отобразить?
Nikolay
А не только конкретное состояние
Ayrat
Прочитал без снапшота
Nikolay
Тогда нужно опять фолдить?
Ayrat
Очевидно да
Nikolay
И теперь представь, что такое приходится делать раз в месяц
Nikolay
Ну аналогичное
Nikolay
:)
Ayrat
Да хоть 100 раз день
Nikolay
Так у тебя будет всё на костылях работать
Nikolay
И ты просто запутаешься
Ayrat
Ты слабо представляешь как это работает и почему это работает быстро
Nikolay
Ну не знаю, мне кажется это будет трэшем
Nikolay
При этом, не всегда получается извлечь данные, иногда их вообще нет, и нужно руками добавлять
Ayrat
Снапшоты нужны чтобы сервис можно было не держать в памяти и вырубать. Он потом восстановится
Ayrat
Если держать их онлайн то там скорость доступа моментальная
Nikolay
Или вот, чем я сейчас занимаюсь.
Часть деталей было добавлено в один документ, а оказалось, что их нужно было добавить в другой документ, и мне нужно просто в базе ID документа поменять у детали, и всё
Nikolay
Как быть с ивентами?
Nikolay
Ayrat
Ещё раз. Такая архитектура решает проблему связанности, позволяя вытворять любую дичь с кодом и логикой хоть сто раз на дню и даёт изи скалирование.
Если это не проблема для тебя, то лучше не стоит
Nikolay
Проще ID в базе поменять
Ayrat
Nikolay
Ayrat
Nikolay
Nikolay
Юзеры не имеют к этому доступа
Nikolay
Хотя можно сделать так, чтобы они меняли, просто интерфейс надо пилить)
Nikolay
И это будет нормально работать, так как всё логируется
Ayrat
Я думаю тебе надо и дальше юзать реляционку. Это серьезный совет без сарказма
x
как это будет происходить? расковыривалка логов?
Nikolay
Nikolay
У тебя есть деталь, по ней хранится вся история
Nikolay
В том числе, какому документу и когда она принадлежала
Nikolay
И кто когда вносил изменение
x
а вот этот момент со сменой ID документа
x
или это какой-то хак, о котором никому не нужно знать?
Nikolay
Это они накосячили просто)
Nikolay
И добавили не в тот документ
Nikolay
И мне нужно поменять это значение в самом логе