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

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

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

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

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

4 ответов

20 просмотров

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

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

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

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

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

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

Как думаете через какой сервис они верифицируют?
inc.
5
Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
13
Вопрос на перед, на следующую пятницу. Сколько строк кода можно вешать на одного программиста, понятно что если проект хорошо написан то можно и миллион. Но есть же где то пре...
AlekseyK Kluchnikov
31
Немного оффтопа: а кто на чем сидит для осдева в плане ide/редактора? Последнее время сидел на vscode, но я его прям не могу нормально воспринимать, перешел на сlion, но меня...
Evg Resh
29
Это может быть все-таки не флудвейт? у меня ботфазер принимает изменения и отображает даже что они изменились, на видео видно что он прислал якобы уже измененное описание, н...
OVERLINK
13
На чём в основном щас пишут мини апы? Vuejs?
Goot evening Not everyone
6
День добрый, подскажите пожалуйста, есть ли какой-то способ сказать ребару не компилировать определённое приложение? Всю доку их перечиатл ничего подобного не нашёл
Кирилл
14
Вопрос: Здравствуйте! У меня возникла проблема с использованием плагина Mall в OctoberCMS. Я использую все файлы и компоненты в их исходном виде, без изменений. Однако на стр...
𐩱𐩪𐩣𐩱𐩲𐩺𐩡
8
Я правильно понимаю что нет способов получить список ожидающих заявок на вступление в группу с помощью бота из mtproto?
Шамиль Прилов
9
А какие существуют способы обработки ошибок выделения памяти в ядре? Т.е., допустим, есть функция, которая возвращает адрес свободной страницы в физической памяти и диапазон в...
disba1ancer
51
Карта сайта