Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Вопрос-Ответ Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
 Поясните, в чем преимущество серверов очередей перед базой данных  [new]
Nick-name
Member

Откуда:
Сообщений: 700
Поясню, свой странный вопрос, я впервые с толкнулся с серверами очередей, пример использования был на примере сбора заявок(сообщений) в очередь с последующей их обработкой.
Вот чего я не понял, в чем преимущество перед тем, как если бы я просто писал эти заявки в базу а потом читал?

Наверно просто пример не очень хороший привели.
4 авг 20, 08:20    [22177258]     Ответить | Цитировать Сообщить модератору
 Re: Поясните, в чем преимущество серверов очередей перед базой данных  [new]
WildSery
Member

Откуда: да, оттуда.
Сообщений: 20225
Поставить в очередь можно на порядки быстрее, чем сразу обработать и поместить в БД.
4 авг 20, 09:22    [22177272]     Ответить | Цитировать Сообщить модератору
 Re: Поясните, в чем преимущество серверов очередей перед базой данных  [new]
crutchmaster
Member

Откуда: оттуда.
Сообщений: 2337
Nick-name,

Когда бд сдохнет можно сделать две бд и раскидывать им запросы из очереди.
4 авг 20, 09:50    [22177282]     Ответить | Цитировать Сообщить модератору
 Re: Поясните, в чем преимущество серверов очередей перед базой данных  [new]
Nick-name
Member

Откуда:
Сообщений: 700
WildSery,

Смотрите, мы в базу можем писать как в очередь
4 авг 20, 09:52    [22177284]     Ответить | Цитировать Сообщить модератору
 Re: Поясните, в чем преимущество серверов очередей перед базой данных  [new]
WildSery
Member

Откуда: да, оттуда.
Сообщений: 20225
Nick-name,

Вы можете даже на бумажку их записывать, как в очередь. Только если диктовать будут медленно и по одному.
4 авг 20, 10:02    [22177286]     Ответить | Цитировать Сообщить модератору
 Re: Поясните, в чем преимущество серверов очередей перед базой данных  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 65894
Блог
Nick-name
Вот чего я не понял, в чем преимущество перед тем, как если бы я просто писал эти заявки в базу а потом читал?

Это примерно как преимущество велосипеда перед самолётом. Для задач, выстроенных на очередях, СУБД имеет миллиард лишней функциональности, которая в этом случае с одной стороны не используется, а с другой - мешает и тормозит процесс.
4 авг 20, 11:28    [22177325]     Ответить | Цитировать Сообщить модератору
 Re: Поясните, в чем преимущество серверов очередей перед базой данных  [new]
Nick-name
Member

Откуда:
Сообщений: 700
WildSery,

То есть, поток данных должен быть таким, что в базу вставлять не успевают? Я наверно просто с такими нагрузками не сталкивался, ну собственно по тому и спросил. С настолько нагруженными проектами я просто не сталкивался
4 авг 20, 11:29    [22177326]     Ответить | Цитировать Сообщить модератору
 Re: Поясните, в чем преимущество серверов очередей перед базой данных  [new]
WildSery
Member

Откуда: да, оттуда.
Сообщений: 20225
Nick-name,

Стоит отметить, что какой-то заоблачной нагрузки не требуется.
Просто локальный пик в течение нескольких секунд, и СУБД захлебнулась. А брать более крутое железо, которое выдержит - выкидывание денег на ветер.

Сообщение было отредактировано: 4 авг 20, 11:58
4 авг 20, 12:00    [22177339]     Ответить | Цитировать Сообщить модератору
 Re: Поясните, в чем преимущество серверов очередей перед базой данных  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 65894
Блог
WildSery
Просто локальный пик в течение нескольких секунд, и СУБД захлебнулась.

Вспомнил, как собеседовался в "Тройку диалог", и тамошний директор ИТ говорил мне "Тысячи одновременно работающих пользователей не выдержит никакая СУБД, хоть Oracle хоть кто".

P.S. Потом вспомнил другого знакомого, который писал в ирке что-то типа "Я тщательно проверял, вышло что Oracle говно, а MySQL - вещь". Потом выяснилось, что он пытался работать с базой в режиме "соединился, сделал один DML и отсоединился", и к тому же прописал параметр "работа с энергонезависимым raid-массивом" при отсутствии энергонезависимости - и всё жаловался, что после аварийных отключений Оракл каждый раз долго поднимается, потому что проверяет и чинит базу.

Сообщение было отредактировано: 4 авг 20, 12:25
4 авг 20, 12:23    [22177347]     Ответить | Цитировать Сообщить модератору
 Re: Поясните, в чем преимущество серверов очередей перед базой данных  [new]
booby
Member

Откуда:
Сообщений: 2534
Nick-name
Поясню, свой странный вопрос, я впервые с толкнулся с серверами очередей, пример использования был на примере сбора заявок(сообщений) в очередь с последующей их обработкой.
Вот чего я не понял, в чем преимущество перед тем, как если бы я просто писал эти заявки в базу а потом читал?

Наверно просто пример не очень хороший привели.

это вопрос из серии "детских", что лучше - разглядывать бузину в огороде, или беседовать с дядькой в Киеве?

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

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

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

Примерно так решаются вообще все проблемы - какие бы затруднения у тебя не возникли - внедри дополнительный уровень косвенности и забудь о своих проблемах, теперь они не твои.

Ну, и, в базах данных интерфейсы работы с очередями тоже вполне успешно работают.
Хотя многие при этом предпочитают наляпывать свои собственные, рукописные уровни косвенности,
потому что стандартные "работают не так".
4 авг 20, 13:22    [22177407]     Ответить | Цитировать Сообщить модератору
 Re: Поясните, в чем преимущество серверов очередей перед базой данных  [new]
mayton
Member

Откуда: loopback
Сообщений: 51389
Nick-name
Поясню, свой странный вопрос, я впервые с толкнулся с серверами очередей, пример использования был на примере сбора заявок(сообщений) в очередь с последующей их обработкой.
Вот чего я не понял, в чем преимущество перед тем, как если бы я просто писал эти заявки в базу а потом читал?

Наверно просто пример не очень хороший привели.

Очередь подходит для временного хранения заявок. До того как БД их начнет обрабатывать. Это даст
преимущество в децентрализации и в неком буфере когда заявки пойдут очень быстро (в 100-в 1000 раз
быстрее чем номинальная скорость обработки).

Но глубина деталей (всех глубин) этого вопроса настолько глубока что нам автору придется рассказать все
все нюансы архитектур многозвенных систем.
4 авг 20, 13:57    [22177426]     Ответить | Цитировать Сообщить модератору
 Re: Поясните, в чем преимущество серверов очередей перед базой данных  [new]
WildSery
Member

Откуда: да, оттуда.
Сообщений: 20225
softwarer
Вспомнил, как собеседовался в "Тройку диалог", и тамошний директор ИТ говорил мне "Тысячи одновременно работающих пользователей не выдержит никакая СУБД, хоть Oracle хоть кто".
Как давно это было?
"640K ought to be enough for anybody" (ц)
4 авг 20, 14:12    [22177441]     Ответить | Цитировать Сообщить модератору
 Re: Поясните, в чем преимущество серверов очередей перед базой данных  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 65894
Блог
WildSery
Как давно это было?

Довольно давно. Но моему ответ "Да вы что, у нас на московском сервере ещё лет пять назад было постоянно полторы тысячи пользователей" он так и не поверил. Собственно, вопрос начался с того, что у них MSSQL начал захлёбываться при 80-ти пользователях, и они начали накручивать всякие трёхзвенки итп., чтобы снять эту проблему.

Сообщение было отредактировано: 4 авг 20, 14:45
4 авг 20, 14:47    [22177466]     Ответить | Цитировать Сообщить модератору
 Re: Поясните, в чем преимущество серверов очередей перед базой данных  [new]
mayton
Member

Откуда: loopback
Сообщений: 51389
Надо уточнять идет речь о подключенных пользователях или о транзакциях.
4 авг 20, 14:52    [22177474]     Ответить | Цитировать Сообщить модератору
 Re: Поясните, в чем преимущество серверов очередей перед базой данных  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 4155
Nick-name
WildSery,

То есть, поток данных должен быть таким, что в базу вставлять не успевают? Я наверно просто с такими нагрузками не сталкивался, ну собственно по тому и спросил. С настолько нагруженными проектами я просто не сталкивался


Вставка записей в базу - это может быть просто инсерт, а может быть еще и обработка в триггерах и т.д.
Вставляя запись приложение работает синхронно, т.е. будет ждать в точке вставки завершения.
Использование очередей - это разные варианты добавления асинхронности, чего нет в РСУБД. Но с поддержкой транзакционности, так, в частности , работает SQL Server Service Broker.
4 авг 20, 15:48    [22177509]     Ответить | Цитировать Сообщить модератору
 Re: Поясните, в чем преимущество серверов очередей перед базой данных  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 9651
Ролг Хупин

Вставляя запись приложение работает синхронно, т.е. будет ждать в точке вставки завершения....

Завершения чего ?
4 авг 20, 16:10    [22177520]     Ответить | Цитировать Сообщить модератору
 Re: Поясните, в чем преимущество серверов очередей перед базой данных  [new]
Wizandr
Member

Откуда: Империя Добра
Сообщений: 37071
очередии нужны очень редко
в 99 процентов случаем можно вставлять в БД и потом запускать джобу для асинхронной обработки вставленных данных

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

короче если возникает вопрос нужна ли очередь - это значит что очередь не нужна
4 авг 20, 16:37    [22177531]     Ответить | Цитировать Сообщить модератору
 Re: Поясните, в чем преимущество серверов очередей перед базой данных  [new]
mayton
Member

Откуда: loopback
Сообщений: 51389
База защищена со всех сторон как крепость. И даже от выключения power есть защита.
Если вы сделали insert, то нужно потом как-то физически повредить БД чтоб ваша запись
была утеряна.

У очередей очень слабый контракт на хранение данных. Грубо говоря не все MQ-системы
по дефолту хранят ваши сообщения на диске. Многие из них хотя и хранят но могут писать
не сразу а с неким лагом по времени. Тюнинг очередей - это отдельный челендж и реально
мало программистов занимаются этой задачей. Обычно их интерес заканчивается на том
что "месседж зашел оно и ладненько". А админы БД и девопсы тоже очередью не занимаются.
Для админов БД - это просто неинтересно. Экспертиза не растет. Девопсам - обычно
так.... Поставил. Работает. Не трогай. Тоесть обычно сервер мессенджей - это "дитя без глаза".
И если упавшую БД аккуратно поднимают. Лечат и рекаверят Redo/WAL, то упавший
сервер мессенджей будет убит и рестартован со сбросом частичных логов. Если не дай
бох во время старта он скажет что хранилище повреждено и его логическая структура
неожиданно мешает нормальному старту.
4 авг 20, 16:48    [22177539]     Ответить | Цитировать Сообщить модератору
 Re: Поясните, в чем преимущество серверов очередей перед базой данных  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 4155
Leonid Kudryavtsev
Ролг Хупин

Вставляя запись приложение работает синхронно, т.е. будет ждать в точке вставки завершения....

Завершения чего ?


Операции вставки записи в таблицу в данном примере.
4 авг 20, 17:03    [22177551]     Ответить | Цитировать Сообщить модератору
 Re: Поясните, в чем преимущество серверов очередей перед базой данных  [new]
Андрей Юниор
Member

Откуда: Москва
Сообщений: 748
Ролг Хупин
Вставка записей в базу - это может быть просто инсерт, а может быть еще и обработка в триггерах и т.д.

Непонятно, причём тут триггеры и другие обработки? Вставка в MQ - это добавить сообщение и больше ничего - или что ещё происходит? Никто не мешает в базе сделать стэйдж, в котором принципиально не будет триггеров. В котором из операцией будет только чтение и запись. С чего вдруг это будет работать медленно?
4 авг 20, 19:04    [22177602]     Ответить | Цитировать Сообщить модератору
 Re: Поясните, в чем преимущество серверов очередей перед базой данных  [new]
crutchmaster
Member

Откуда: оттуда.
Сообщений: 2337
softwarer
Но моему ответ "Да вы что, у нас на московском сервере ещё лет пять назад было постоянно полторы тысячи пользователей" он так и не поверил. Собственно, вопрос начался с того, что у них MSSQL начал захлёбываться при 80-ти пользователях, и они начали накручивать всякие трёхзвенки итп., чтобы снять эту проблему.

Пользователи могут быть сильно разные.
5 авг 20, 04:19    [22177705]     Ответить | Цитировать Сообщить модератору
 Re: Поясните, в чем преимущество серверов очередей перед базой данных  [new]
witte
Member

Откуда:
Сообщений: 431
mayton
База защищена со всех сторон как крепость. И даже от выключения power есть защита.
Если вы сделали insert, то нужно потом как-то физически повредить БД чтоб ваша запись
была утеряна.

В MQ тоже самое. Я сейчас конкретно про IBM MQ.
mayton
У очередей очень слабый контракт на хранение данных. Грубо говоря не все MQ-системы
по дефолту хранят ваши сообщения на диске. Многие из них хотя и хранят но могут писать
не сразу а с неким лагом по времени.

Если сообщение попадает в очередь, помеченную как персистентная или на сообщении явно выставить свойство персистентности, то оно попадает в транзакционный лог и при рестарте, если был коммит, будет восстановлено автоматически. Это ничем не отличается от рестарта того же Oracle RDBMS. Это работает даже на циркулярных логах в MQ, не говоря уже о линейных.
mayton
Тюнинг очередей - это отдельный челендж и реально
мало программистов занимаются этой задачей. Обычно их интерес заканчивается на том
что "месседж зашел оно и ладненько". А админы БД и девопсы тоже очередью не занимаются.
Для админов БД - это просто неинтересно. Экспертиза не растет. Девопсам - обычно
так.... Поставил. Работает. Не трогай. Тоесть обычно сервер мессенджей - это "дитя без глаза".

Описан подход shit in - shit out. Конкретно MQ тут совершенно не при чём. Это ортогонально продукту.
mayton
И если упавшую БД аккуратно поднимают. Лечат и рекаверят Redo/WAL, то упавший
сервер мессенджей будет убит и рестартован со сбросом частичных логов. Если не дай
бох во время старта он скажет что хранилище повреждено и его логическая структура
неожиданно мешает нормальному старту.

С чего такие фантазии? Queue manager в MQ, в определённом смысле, можно рассматривать тоже как БД, только специализированная. Она оптимизирована ровно на 2 операции: положить сообщение в очередь и вычитать его. Эти операции контролируются транзакциями (как локальными, так и глобальными). Тупой рестарт после потери питания я описал выше, а восстановление очереди с сообщениями гарантирует линейное логирование и забота о том что нужные транзакционные логи не пропали (собственно ровно как и с Oracle RDBMS). Да, для этого нужен администратор MQ. Но если нет администратора того или иного ПО, то это значит информация, контролируемая этим ПО, бизнесу не нужна.
5 авг 20, 14:17    [22177987]     Ответить | Цитировать Сообщить модератору
 Re: Поясните, в чем преимущество серверов очередей перед базой данных  [new]
witte
Member

Откуда:
Сообщений: 431
Nick-name
Поясню, свой странный вопрос, я впервые с толкнулся с серверами очередей, пример использования был на примере сбора заявок(сообщений) в очередь с последующей их обработкой.
Вот чего я не понял, в чем преимущество перед тем, как если бы я просто писал эти заявки в базу а потом читал?

Наверно просто пример не очень хороший привели.

Вы, скорее всего, судите с точки зрения своего окопа, т.е. конкретной БД конкретной системы. MQ нужны для интеграции систем в довольно большом бизнесе (банки из первой 20-ки, например).
По преимуществам:
- не обязательно знать откуда приходит сообщение
- обработка асинхронная
- заливка и обработка могут быть разнесены по времени
- нагрузка на обрабатывающую систему может быть сглажена
- не нужно гадать откуда придёт сообщение с точки зрения сети
- работа не только в топологии точка-точка, но и в топологии publish-subscribe
- интеграция систем, написанных на разных платформах и языках (например можно интегрировать систему написанную на Коболе на мэйнфрейме черти когда с современными системами со всеми плюшками правильного перевода кодовых страниц и т.п.)
Это то что сходу в голову приходит.
Ну и в зависимости от выбранного ПО есть свои решения по DR и HA.
5 авг 20, 14:28    [22177994]     Ответить | Цитировать Сообщить модератору
 Re: Поясните, в чем преимущество серверов очередей перед базой данных  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 53400
Время от времени в тематических разделах появляются люди с вопросом "как сделать очередь в БД". Внезапно в процессе реализации своих идей у них обнаруживается столько геморроя, что наиболее эффективным ответом уже давно стал "не надо делать очереди в БД". Потому что БД - для хранения данных. А если нужна очередь - так и ступай к очереди.
5 авг 20, 14:34    [22178002]     Ответить | Цитировать Сообщить модератору
 Re: Поясните, в чем преимущество серверов очередей перед базой данных  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 9651
А в чем проблема с очередями в БД ?

https://docs.oracle.com/cd/E18283_01/appdev.112/e16760/d_aq.htm
5 авг 20, 15:04    [22178039]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
Все форумы / Вопрос-Ответ Ответить