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

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

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

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

26 ответов

8 просмотров

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

ну вотя. вам реальный кейс и расписал. Это нужная нагрузка. Считайте что куча девайсов пишут хартбит(свое состояние) постоянно. Инсертом заменить можно, но через 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 двидок эластика - жутко медленный, у меня есть опыт работы с базой на этом движке

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

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

Сообщение* в закодированном виде. То есть, просто сделать sendMessage?text=Привет бла-бла! не получится, надо в HEX переводить, и добавлять процент, типа такого: sendMessage?t...
КТ315
21
А случайно нет ли в паскале штатной возможности передать указатель и количество туда где array of в качестве аргумента?
zamtmn
25
Anyone here suffers from unexplained aural migraines, who would be up for talking for a bit? Doesn't *have* to be aural, but I am not asking about headaches, I mean actual mi...
Martin Rys
58
Всем привет. Испытываю проблемы в работе БД, а именно огромного роста логов, такого характера: 024-05-16 18:39:07 +05 sentry sentry [unknown] 1050169 7-1 app-sentry01.corp.ru>...
Alexey
2
Если подытожить: По мнению Розыча и Хемуля и др. - предпочтительно по возможности объявлять в секции имплементации потому-что: 1) Выше скорость компиляции 2) Не замусоривается...
notme
7
Хм. А телеграм апи работают через HTTP?
The Bird of Hermes
14
Ну раз я пока тут, задам пару глупых вопросов. Зачем писать на ассемблере если компилятор довольно умный, а ассемблер много времени занимает? В каких прикладных задачах сейчас...
Максим Рябцев
20
Почему Telegram пишет, что объект media не найден, хотя на самом деле я его передаю? Делаю на urllib, без зависимостей, так надо. Вызываю метод sendMediaGroup с таким JSON: ...
Alexey S
1
В дельфе нет никакого коробочного (без установки третьих либ) способа получить CallStack с расшифровкой отладочных символов?
notme
7
Приветики всем!)) Подскажите: есть функция, которая записывает число типа Cardinal в четыре байта, хранимые в TBytes. Можете помочь мне, показав, как должна выглядеть функци...
Моринаро
5
Карта сайта