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

Товарищи, добрый вечер. Хотел в общем посоветоваться. Есть постгресс, одна конкретная

проблемная таблица, в которой 18 млн записей. И нюанс состоит в том, что данные там достаточно динамичные. Эта таблица синхронизируется с внешней системой раз в день, как правило.

Для этого у нас имеется скриптик, который использует легковестные потоки. В принципе в CPU оно не упирается, упирается в IO операции диска, как и следовало ожидать. 20 минут это всё синхранизируется. Не хотелось бы на это время блочить саму базу, потому нужно ускорить.

Я думаю, что можно попробовать эту сложную и проблемную таблицу (не базу) вынести из постгресса в NoSql. И ускорить синхронизацию. Например, в redis, а обновление можно сделать через Lua скрипты. Само обновление может блочить базу, но если не долго - то не страшно. Подскажете чего толкового на этот счёт?

4 ответов

22 просмотра

А там во всех 18 млн возможны изменения? Может как-то возможно партиционировать редко неизменяемые строки отдельно?

Могу предложить несколько диванно теоретических решений: 1. Создавать новую таблицу рядом с вашей, спокойно записать в новую таблицу все записи с внешней системы и параллельно записать новые значения в старую и новую, как только будет всё создано - остановить пользование таблицей на несколько минут, переименовать старую и новую таблицу, запустить всё так, как ни в чем не бывало. В итоге у вас новая таблица подменит старую за очень короткий промежуток времени, пока скрипт будет переименовывать таблицы ;) 2. Отключать индекс, синхронизировать и потом заново строить индекс. Таким образом у вас синхронизация будет занимать намного меньше времени. 3. Пересмотреть синхронизацию на корню, например, сделав её реалтайм на какой-нибудь очереди сообщений (типа kafka, rabbitMQ) или на алгоритме консенсуса (типа raft) Или же совсем сделать на вашем серваке с бд поднять слейв внешней бд, а на серваке с внешней бд поднять слейв вашей бд и как-то синхронить сразу

добрый день. объясните, пожалуйста, зачем вам ускорять этот процесс? вроде бы обновление таблицы в 18 млн строк за 20 минут - это быстро

Так проблема то в чем? Так то лично я как слышу слово NoSQL , рука сразу тянется к пистолету... (Которого правда у меня нет)

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

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

Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Вот еще странный косяк, подскажите как бороться. Я git clone сделал себе всего embassy и примеры там запускаю. Всё хорошо. Но вот решил в cargo.toml зависимости не как в приме...
Lukutin R2AJP
5
А в каком формате фреймы? Сам формат сейчас придумываешь, или что-то готовое нужно распарсить?
Okhsunrog
5
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Добрый вечер, Пока не совсем понимаю как наладить общение между телеграм ботом и ПО для работы с сим боксом. По самому боту так понял: - Нужен некий баланс, который можно поп...
Magic
6
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Раз начали говорить про embassy, то присоединюсь со своими парой вопросов. 1) Есть ли сопоставимые аналоги для асинхронного кода в emdebbed? 2) Можно ли внутри задач embassy ...
NI_isx
6
сделал сайт, прикрутил в боте сайт, и виджет логина. как автоматически логинить пользователя в аккаунт(телеграм), при входе с бота?
Александра Чернивецкая
5
Карта сайта