У меня есть код, который создает много данных, которые должны храниться в базе данных. Проблема в том, что база данных не может хранить данные, которые она получает. Поэтому мне интересно, поможет ли какой-то механизм очередей в этой ситуации - я думаю, в частности, в RabiitMQ, и можно ли хранить данные в своих очередях, пока какой-то потребитель не вытащит из него данные и не подтолкнет их к базе данных , Кроме того, меня не интересует, попали ли эти данные в базу данных или нет, потому что довольно скоро те же данные будут обновлены.RabbitMQ как прокси-сервер между хранилищем данных и производителем?
ответ
@hyperboreean Это может показаться немного проблематичным, но, возможно, вам действительно нужен кеш, такой как Redis или MemcacheD?
Технически вы можете использовать RabbitMQ с потребителями, обновляющими БД, но вам нужно будет реализовать механизм очистки очереди, или ваши очереди будут расти все больше, пока ваш уровень ввода еще превышает то, что может обрабатывать база данных. По мере роста очередей данные в них становятся устаревшими - это означает, что обновление, которое только что было отправлено, все еще находится в очереди. Подумайте об этом, как о магазине, в котором есть одна проверка. Конечно, вы можете создавать отдельные строки, но это означает, что у вас есть несколько длинных строк и все еще есть одна проверка. Вы по-прежнему связаны тем, что контролер может обрабатывать ваших клиентов.
Из всего слишком краткого описания кажется, что ваши данные являются действительно временными данными, и система кэширования (или другое расположение, отличное от NoSQL) может быть лучше подходит. Если вам нужно в дальнейшем сохранить данные, у вас может быть отдельный процесс, который вытаскивает текущие данные из механизма кеша и загружает его в вашу БД. Тогда вы будете ограничены тем, сколько времени потребовалось, чтобы извлечь его из-за того, как часто вы можете фактически загружать данные в БД.
Базы данных должны обрабатывать вставки данных очень быстро, без механизмов блокировки с Вставки - это данные, которые еще не существуют в магазине. Если вы имеете дело с вставками данных, и ваша сериализация в базу данных является узким местом, то какая бы проблема у вас ни была, то все еще существует с RabbitMQ, потому что вставки базы данных должны выполнять быстрее, чем исходящие сообщения для RabbitMQ. В этом случае RabbitMQ не решит вашу проблему. С другой стороны, обновления данных блокируют строку обновления (в общем), и у вас возникнут проблемы с параллелизмом с блокировками и ожиданиями. Поэтому в целом попытайтесь понять, почему упорство в вашей базе данных является узким местом.
В конце концов, если ваше хранилище данных NOSQL, то это может быть не выполнение записи, в этом случае вы можете анализировать, что получает данные быстрее (NoSQL vs RabbitMQ).
Если у вас есть производители данных по нескольким потокам, у вас возникает проблема параллелизма для записи в хранилище персистентности. В этом случае RAbbitMQ лучше обрабатывает параллелизм, чем ваш хранилище персистентности, поскольку предназначен для высокой параллелизма. Это зависит от того, какой хранилище данных вы используете.
- 1. rabbitmq потребитель становится производителем
- 2. RabbitMQ: Как отправить словарь Python между производителем и потребителем Python?
- 3. RabbitMQ: Потребитель становится производителем - соединение закрыто ошибка
- 4. Вычисление различий между хранилищем данных и временным хранилищем
- 5. RabbitMQ - ручное управление производителем в управлении потоком
- 6. Какой тип сообщения используется между потребителем и производителем
- 7. Разница между хранилищем и сервисом?
- 8. В чем разница между базой данных и хранилищем данных?
- 9. ETL между базовым хранилищем данных MySQL и дополнительным хранилищем данных MongoDB
- 10. Преобразование объектов javascript между хранилищем и хранилищем redux
- 11. Связь между хранилищем ключей, хранилищем доверия и сертификатом
- 12. Обмен хранилищем между серверами
- 13. В чем разница между хранилищем сеансов и базой данных
- 14. Согласованность между MongoDB и RabbitMQ
- 15. В чем разница между ROLAP и хранилищем данных?
- 16. Какова фактическая разница между хранилищем данных и большими данными?
- 17. Сравнение между RabbitMQ и MSMQ
- 18. Разница между реестром и хранилищем Docker
- 19. Разница между CloudKit и хранилищем ключевого значения
- 20. Разница между хранилищем и заводским шаблоном
- 21. Разница между InnoDB и другим хранилищем Двигатель
- 22. Множественное взаимодействие между производителем и потребителем в .Net 4.0
- 23. Контрактная связь между потребителем/производителем в SOAP и REST?
- 24. Разница между производителем и количеством потребителей в tibco admin
- 25. RabbitMQ и связь между каналом и связи
- 26. Обмен реестром и хранилищем пользователей между WSO2 ESB и IDS
- 27. RabbitMQ: Связь между каналами и обменами
- 28. RabbitMQ и развязка приложений
- 29. запись и воспроизведение данных rabbitmq
- 30. Как изменить отношения между хранилищем git и его клоном?