Pull to refresh
4
Дмитрий Фатов@FatOFF

User

3
Subscribers
Send message

Распараллеливаем процесс вставки данных в PostgreSQL при помощи Spring с сохранением атомарности всей операции

Level of difficultyHard
Reading time21 min
Reach and readers6.3K

Распараллеливаем процесс вставки данных в PostgreSQL при помощи Spring с сохранением атомарности всей операции

Разработчики часто сталкиваются с проблемами производительности своих систем. Один из привычных способов ускорить медленный бизнес-процесс — распараллелить его. Это почти всегда работает: чем больше потоков обслуживают задачу, тем быстрее она выполняется.

Но когда речь заходит о вставке данных в PostgreSQL, возникает проблема: распараллеливание действительно ускоряет операцию, но ломает ее атомарность. Данные начинают появляться в таблице частями. Для многих бизнес-процессов это неприемлемо — нужно, чтобы вся пачка данных становилась доступной одновременно.

В этой статье расскажу о том, как сделать вставку данных одновременно многопоточной и атомарной.

Читать далее

Как ускорить массовую вставку данных в PostgreSQL при использовании Spring

Level of difficultyHard
Reading time16 min
Reach and readers5.9K

Меня зовут Дмитрий Фатов, я разработчик в Газпромбанке — вместе с командой создаю платформу G2, на которой мы разрабатываем свои решения. Одно из решений — SaaS, система, в которой есть внешние интеграции через xml. До какого-то момента к нам приходило максимум 30 тыс. документов в одной выгрузке, но после подключения очень крупного клиента в одной выгрузке начали получать до 2 млн документов. Это около 4 млн записей в базе данных. 

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

В этой статье расскажу именно про последнюю часть — как ускорить вставку данных. Покажу, какие настройки стоит применить для Spring и Hibernate, для чего они нужны и какой буст по производительности дают. Здесь же разберем, как можно создать свою собственную прослойку для вставки данных в PostgreSQL. Эта прослойка позволит нам использовать разные подходы к вставке данных, в том числе кастомные методы PostgreSQL, а также распараллелить процесс вставки. Посмотрим, как ее можно подружить со Spring, а также какой профит нам даст каждый из рассмотренных подходов. 

Читать далее

Information

Rating
Does not participate
Registered
Activity

Specialization

Бэкенд разработчик
Ведущий
SQL
PostgreSQL
Java
Java Spring Framework
Spring Boot
JDBC
Hibernate
Базы данных
Linux
Английский язык