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

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

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

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

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

4 ответов

7 просмотров

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

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

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

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

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

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

Всем привет! Может кто поможет разобраться с чёрной магией? (во всяком случае для меня) Дело вот в чём - написал я код для общения с tmc2209 драйвером по half duplex uart. М...
pronvis
4
вопрос: кто как решает вопрос с динамической подгрузкой скриптов для отдельных страниц с включенным turbo router?
Sergei Toroptsev
25
Друзья, за кем?
Magic
12
Всем привет. Кто-то может подсказать, как можно перевести значения Selection поля, если список значений в нем формируется динамически? Я изначально их получаю из selection дру...
Наталья Селезнева
6
ого, спасибо Никит, ты как всегда кладезь нужной инфы! Сейчас пойду копаться, а мне релиз создать как и версию самого плагина? типа 1.0.8?
Alex Blaze
6
Почему Telegram пишет, что объект media не найден, хотя на самом деле я его передаю? Делаю на urllib, без зависимостей, так надо. Вызываю метод sendMediaGroup с таким JSON: ...
Alexey S
1
Сonst magicTgHTML = (text, entities) => { let processedText = text; let offsetShift = 0; entities.forEach(entity => { const { offset, length, type, url, ...
Андрей
1
кто мешает подписать все соответствующие документы? мы открыты
Mary🍋
5
Погодь, а как ты переопределяешь функцию в хедере? Эрланг это же не С, тут явный вызов макросов
Maksim Lapshin
6
а вот скажем условно стоит задача научить автоматически ехать по дороге машину в гта распознавать линии полосы +- понятно как, но как определять сторону движения?
Дурачок Глупый
5
Карта сайта