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

Здравствуйте. Подскажите плиз, как более корректно разделить доменные данные и

аналитку/логи на разные БД и нужно ли.
О чем речь, просто пример. Например есть сущность баланс и история. История атомарно меняется с балансом в одной транзакции, все жестко и это устраивает. Не устраивает то, что история по большей части к работе домена никакого отношения не имеет. Записываем чтобы было и чтобы потом анализировали мы и клиенты через UI. Опять же база разрастается данными, которые там особо и не нужны для корректной работы приложения.
Возникла мысль складывать в какой нить nosql типа эластики, опять же через кибану все это удобно смотреть в случае чего.
При этом все же хотелось бы сохранить имеющуюся жесткость, чтобы история и баланс сохранялись атомарно и не нарушалась консистенция. Как насчет того чтобы сохранять так же в реляционку, но паралельно сохранять в nosql, например через ивенты для скорости обновления на UI, а потом еще периодически досинхронивать периодично по крону какой либо промежуток, для избежания неконсистенции. А в sql хранить только за последний месяц-два.
Норм, не норм вариант или какие есть хорошие практики?

17 ответов

9 просмотров

Эластику не надо рассматривать как надежное хранилище, ибо там потерять индекс проще, чем в rdbms. Я бы оставил как есть сейчас history, разве что порезал ее на партишны, чтобы быстрее данные доставать и проще их удалять целыми порциями по месяцу, допустим. И раз в сутки индексировал в solr/elastic для построения аналитики.

Разделять нужно. Но менять формат данных не факт. Если у вас коректно подобраны структуры данных и вы используєте подходящую базу, тогда или не стоит менять это вовсе, или стоить менять с учетом того какого вида аналитика вам нужна. В любом случае, ваше приложение не должно знать ни о какой аналитике. Ваша аналитика должна собираться отдельно посредством подключения к реплике основной базы и/или к шине данных куда ваше приложение ложило бы информацию о своей работе

Павел-Г. Автор вопроса
Max Grom
Разделять нужно. Но менять формат данных не факт. ...

Ну это не совсем аналитика, это история. И для атамарности сохранения, она не может не знать совсем. Тут скорее идея, чтобы разгрузить а не освободить. И не просто про модель чтения. Задача уменьшить объем информации зранящайся в основной базе. От объёма все же и скорость записи зависит, да и вообще бОльшая часть бд захламлена именно такими "историями"

Павел Г.
Ну это не совсем аналитика, это история. И для ата...

Если сделать там партицирование, то скорость будет норм

Павел Г.
Ну это не совсем аналитика, это история. И для ата...

Вы просто начали за "аналитику/логи" а теперь это таки данные которые относятся к домену, если я правильно понял. Тогда не понимаю что вам разделять и зачем. Пишите тогда в две базы в место одной - вот и разгрузите

Павел-Г. Автор вопроса
Anton K.
Если сделать там партицирование, то скорость будет...

Для истории партицирование не и знаю как выйдет. Делать по юзерам - жёстко чёт. Делать по времени - не угадать партицию. Например история заказа. Не разбивать же в ui по месяцам.

Павел-Г. Автор вопроса
Max Grom
Вы просто начали за "аналитику/логи" а теперь это ...

Ну они как бы домен, но с другой стороны в логике не участвуют, просто пишутся

Anton K.
Если сделать там партицирование, то скорость будет...

Так им писать нужно, а не читать, зачем им партицирование? 😊

Павел Г.
Ну они как бы домен, но с другой стороны в логике ...

Ну пишите в две базы вместо одной - устраивает вас такой кейс?

читать когда анализируешь данные, потом уже.

Павел-Г. Автор вопроса
Андрей Рудин
читать когда анализируешь данные, потом уже.

Ну так потом и будут читать и смотреть устраивает их скорость чтения или нет. В любом случае не вижу причин добавлять туда "партиции для скорости" прям сейчас

Павел-Г. Автор вопроса
Max Grom
Почему не получится?

Распределеные транзакции за счёт бд ?

Павел Г.
В две базы не получится атомарно

ну это можно сделать через репликацию данных, для истории прям атомарно и не нужно. так или иначе с этим данными нужно будет работать когда то потом.

Павел Г.
Распределеные транзакции за счёт бд ?

Вы у меня спрашиваете? 😁 Я ж не знаю что там у вас и почему не получится. Потому и задал вопрос. Очевидно что если разделять то разделять нужно будет слегка больше чем просто создать ещё одну базу

Павел-Г. Автор вопроса
Max Grom
Вы у меня спрашиваете? 😁 Я ж не знаю что там у вас...

Ну может технологии из коробки есть :)

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

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

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