Есть 1000 потоков данных, информация по каждому потоку обновляется каждые 100мс и каждое изменение записывается в БД, с redis я не работал, но слышал про кеширование и in memory, и если правильно понимаю в моём случае в плане скорости работы от кеширования толку нет, но есть толк от in memory, по итогу встаёт вопрос. Что лучше выбрать для реализации подобной задачи? redis или postgresql c pgbouncer?
Вопрос звучит так что бы на него не было возможности ответить. Какие данные? Вы же понимаете что если вам каждые 100мс прилетает содержимое "войны и мир" л. толстого это одно, а когда связка телефон фамилия другое. как вы выбираете данные для изменения - по какому нибудь ключу, аля "дай мне фамилию у которой телефон 3232323" или "дай мне название всех книг которые были написаны 1870 году и содержат в тексте фамилию Болконский". Насколько критичен ACID. Миллион вопросов без которых выбор сделать нельзя
Если правильно понял, в rabbitmq данные записываются в очередь, и обрабатываются поэтапно, но в моём случае данные теряют свою актуальность каждые 100мс (Забыл упомянуть), и создание этой очереди с последующем её увеличением, это не то что хотелось бы видеть. Если чуть подробнее описывать алгоритм, то после того как данные с 1000 потоков поступили в БД, их разом вытягивает один поток, и как-то обрабатывает, после чего круг повторяется.
venom99, решение очень зависит от того, что с данными делается и как. Например, если это датчики, которые передают текущее значение, и сохранять историю не нужно, то можно вообще не использовать никаких баз или очередей. Достаточно просто записывать последнее значение, и пусть его другие потоки читают. Главное, чтобы операция записи нового значения была атомарна, что обеспечивается либо использованием атомарных структур данных (например, 32-битное число), либо блокировками (например, мутексы).
Что касается in memory, то можно и просто использовать рамдиск.
В общем-то, люди правильно говорят, что без знания подробностей задачи сложно давать осмысленные советы.