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

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

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

17 ответов

44 просмотра

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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