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

Может стоит оптимизировать ненужную нагрузку? в плане — если вместо 100

апдейтов можно сделать один, или вообще один INSERT сделать — то так и поступить?

возвращаясь к вчерашнему разговору — не пытаемся ли мы тут натянуть технический долг на возможности базы и/или железа?

26 ответов

19 просмотров

Или хотя бы не в один поток...

ну вотя. вам реальный кейс и расписал. Это нужная нагрузка. Считайте что куча девайсов пишут хартбит(свое состояние) постоянно. Инсертом заменить можно, но через 24 часа база кончиться ))) Ну понятно что в той или иной степерни, можно частично решать железом, купить х5 сервер, ядра с большей частотой диски выдающие в 100 раз больше перфонмас - и наверно будет чуть лучше. Но мы говорим про целесообразность. На одном среднем (не дешевом) железе база для моего, специального патеррна нагрузки выдает вот такой плохой результат. Конечно по хорошему - надо логически шардировать и сделать много белких баз. Но иногда это можно, иногда сложно и не целосообразно а иногда вообще не возможно

Виктор-Егоров Автор вопроса
Jamal Sale
ну вотя. вам реальный кейс и расписал. Это нужная ...

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

Виктор Егоров
угу. т.е. мы уже уходим в детали реализации и, как...

Как-будто нагрузку ДБА создают... Мы только имеем, что имеем, и страдаем от этого. А уже есть ли инструментарий, как проблему пофиксить, или нет, зависит, в том числе, и от СУБД...

Виктор Егоров
угу. т.е. мы уже уходим в детали реализации и, как...

ну акционеры и руководство обычно не оценивают закупку серверов на млн$, как «что-то подшаманить». Я повторюсь что в описанном выше кейсе - кроме как шардировать и распилить базу на много мелких - другого целесообразного рещения нет

Jamal Sale
ну вотя. вам реальный кейс и расписал. Это нужная ...

здесь архитектура базы должна быть построена под такую нагрузку. Это типичный случай append-only и постгрес справится не хуже оракла. А вот с десятками тысяч случайных апдейтов от десятка до нескольких сотен строк одной таблицы с миллиардами записей - уже нет

Jamal Sale
ну акционеры и руководство обычно не оценивают зак...

Ещё нанять спецыалиста по постгресу (хотя бы временно).

Виктор-Егоров Автор вопроса

а почему бы не поставить перед посгресом что-то (kafka) с пред-агрегацией всех апдейтов и подачей в постгрес готового результата за временной промежуток?

потому что это могут быть тысячи клиентов и время ответа системы каждому регламентировано sla

Виктор-Егоров Автор вопроса
Nikita Malakhov
потому что это могут быть тысячи клиентов и время ...

вы говорите про общий случай, Jamal говорил про Golden-Gate репликацию из Oracle в Postgres и я отвечал именно на его частный случай

Виктор Егоров
а почему бы не поставить перед посгресом что-то (k...

Да все можно сделать, просто одно можно сделать быстро и не напрягаясь, а с другим и с бубном поплясать надо будет, но все равно сделать. :)

Виктор Егоров
а почему бы не поставить перед посгресом что-то (k...

накапливать батч - можно было бы (репликакция кстати так и делает, я тестировал и батчем по 1к строк и по 5-10к строк), но это сильно не помогает. Но это не решает в общем то проблему. Представьте у вас есть 10млн девайсов и бизнес требование - кажлдые 10 сек получать их стейт. То есть в сек вам нужно обновлять 1млн устройств. И разумеется они пишут в случайное время а не все сразу в одну миркосек. Накапливая батчи - вы просто не уложитесь никогда в подобные требования и девайсы будут обновлять не каждые 10 сек а намного намного реже

Nikita Malakhov
потому что это могут быть тысячи клиентов и время ...

ну да я примерно это и расписал, чуть подробней

Jamal Sale
накапливать батч - можно было бы (репликакция кста...

А вы уверены что вам ОЛТП нужно? А не носкуел какой нить?

Jamal Sale
накапливать батч - можно было бы (репликакция кста...

А там что-то ценное в этих стейтах есть? Я к тому, чего б это тупо в клик не писать? У него скорость записи будет в разы больше реляционок строчных... 🤔 Ну, и аналитику гонять из него тоже проще. Без апдейтов, разумеется. Он их не умеет

Виктор-Егоров Автор вопроса
Jamal Sale
накапливать батч - можно было бы (репликакция кста...

выглядит как проблема сайзинга под конкретные требования. и, также, следует рассмотреть другие БД, как коллеги советуют выше

Shuliar Honeybadger 🦡
А там что-то ценное в этих стейтах есть? Я к тому,...

Там не аналитика а real time платформа. Да и клик вообще апдейты плохи кушает. Еще хуже чем ПГ, но это другая тема ))

Виктор Егоров
выглядит как проблема сайзинга под конкретные треб...

Или хотя бы не в один поток этот миллион update запускать... Так-то в общем выглядит не так чтобы чрезмерно для пары сотен ядер.

Владимир Наумов
А вы уверены что вам ОЛТП нужно? А не носкуел како...

ну тоже вариант конечно. Но вы можете предложить другую БД для этого кейса (оракл не предлагать, в нем итак счас все работает хорошо) ?

Jamal Sale
ну тоже вариант конечно. Но вы можете предложить д...

Я пропустил определение базовой задачи. Вам надо собирать и хранить сосояние кучи объектов и строить аналитику по ним?

давайте хотя бы без аналитики, Бог с ней. просто иметь всегда стейт 10млн строк, которые обновляются с огромным апдейт-рейтом и делать селект по ключу/девайсу. Вот такая задача, чистый oltp

Владимир Наумов
ELK-стек гляньте

нет, ELK это вообще другая и медленная тема, и к тяжелым oltp не подходит. Lucen двидок эластика - жутко медленный, у меня есть опыт работы с базой на этом движке

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

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

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Ребят в СИ можно реализовать ООП?
Николай
33
у вас два процесса. один посылает другому сигнал. у вас есть код обоих процессов? если всё не так - расскажите как оно на самом деле. а именно кто кому чего, есть-ли консоли,...
Karagy
6
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Карта сайта