Как ускорить массовую вставку данных в PostgreSQL при использовании Spring
Меня зовут Дмитрий Фатов, я разработчик в Газпромбанке — вместе с командой создаю платформу G2, на которой мы разрабатываем свои решения. Одно из решений — SaaS, система, в которой есть внешние интеграции через xml. До какого-то момента к нам приходило максимум 30 тыс. документов в одной выгрузке, но после подключения очень крупного клиента в одной выгрузке начали получать до 2 млн документов. Это около 4 млн записей в базе данных.
SLA на обмен данными со сторонними системами — меньше пяти минут. И мы в него не укладывались, нужно было срочно оптимизировать бизнес-процессы, среди которых весомой частью была именно вставка данных.
В этой статье расскажу именно про последнюю часть — как ускорить вставку данных. Покажу, какие настройки стоит применить для Spring и Hibernate, для чего они нужны и какой буст по производительности дают. Здесь же разберем, как можно создать свою собственную прослойку для вставки данных в PostgreSQL. Эта прослойка позволит нам использовать разные подходы к вставке данных, в том числе кастомные методы PostgreSQL, а также распараллелить процесс вставки. Посмотрим, как ее можно подружить со Spring, а также какой профит нам даст каждый из рассмотренных подходов.
Читать: https://habr.com/ru/companies/gazprombank/articles/965634/
#ru
@database_design | Другие наши каналы
Меня зовут Дмитрий Фатов, я разработчик в Газпромбанке — вместе с командой создаю платформу G2, на которой мы разрабатываем свои решения. Одно из решений — SaaS, система, в которой есть внешние интеграции через xml. До какого-то момента к нам приходило максимум 30 тыс. документов в одной выгрузке, но после подключения очень крупного клиента в одной выгрузке начали получать до 2 млн документов. Это около 4 млн записей в базе данных.
SLA на обмен данными со сторонними системами — меньше пяти минут. И мы в него не укладывались, нужно было срочно оптимизировать бизнес-процессы, среди которых весомой частью была именно вставка данных.
В этой статье расскажу именно про последнюю часть — как ускорить вставку данных. Покажу, какие настройки стоит применить для Spring и Hibernate, для чего они нужны и какой буст по производительности дают. Здесь же разберем, как можно создать свою собственную прослойку для вставки данных в PostgreSQL. Эта прослойка позволит нам использовать разные подходы к вставке данных, в том числе кастомные методы PostgreSQL, а также распараллелить процесс вставки. Посмотрим, как ее можно подружить со Spring, а также какой профит нам даст каждый из рассмотренных подходов.
Читать: https://habr.com/ru/companies/gazprombank/articles/965634/
#ru
@database_design | Другие наши каналы
Генерируем CRUD для gRPC по схеме БД следуя Google AIP
Как с помощью db-exporter автоматизировать процесс генерации CRUD-операций для gRPC, соблюдая стандарт Google AIP
Читать: «Генерируем CRUD для gRPC по схеме БД следуя Google AIP»
#ru
@database_design | Другие наши каналы
Как с помощью db-exporter автоматизировать процесс генерации CRUD-операций для gRPC, соблюдая стандарт Google AIP
Читать: «Генерируем CRUD для gRPC по схеме БД следуя Google AIP»
#ru
@database_design | Другие наши каналы
Как фильтры Блума в 16 раз ускорили API
Этот пост станет глубоким разбором того, как мы снизили задержки P95 конечной точки API с 5 до 0,3 секунды при помощи нишевого трюка computer science под названием «фильтр Блума».
Мы расскажем о том, почему конечная точка была медленной, о решениях, которые мы рассматривали для повышения её скорости, и о критериях выбора между ними. Также мы объясним, как всё это устроено внутри.
Читать: https://habr.com/ru/articles/968024/
#ru
@database_design | Другие наши каналы
Этот пост станет глубоким разбором того, как мы снизили задержки P95 конечной точки API с 5 до 0,3 секунды при помощи нишевого трюка computer science под названием «фильтр Блума».
Мы расскажем о том, почему конечная точка была медленной, о решениях, которые мы рассматривали для повышения её скорости, и о критериях выбора между ними. Также мы объясним, как всё это устроено внутри.
Читать: https://habr.com/ru/articles/968024/
#ru
@database_design | Другие наши каналы
БД без боли: моя шпаргалка для собесов в Java. Часть 3
Всем привет!
Я Senior Java Developer в банке, и за эти годы мне довелось пройти немало собеседований. Где-то было спокойно, где-то — как в допросной, с каверзными вопросами, странными задачами и вечным «а почему так, а не иначе?». В процессе я собрал целую коллекцию тем, которые всплывают снова и снова, особенно когда дело касается баз данных.
Сегодня хочу поделиться этим опытом и разобрать вопросы, которые чаще всего задают именно по SQL-базам.
Читать: https://habr.com/ru/articles/968532/
#ru
@database_design | Другие наши каналы
Всем привет!
Я Senior Java Developer в банке, и за эти годы мне довелось пройти немало собеседований. Где-то было спокойно, где-то — как в допросной, с каверзными вопросами, странными задачами и вечным «а почему так, а не иначе?». В процессе я собрал целую коллекцию тем, которые всплывают снова и снова, особенно когда дело касается баз данных.
Сегодня хочу поделиться этим опытом и разобрать вопросы, которые чаще всего задают именно по SQL-базам.
Читать: https://habr.com/ru/articles/968532/
#ru
@database_design | Другие наши каналы
Как мы постепенно идём к «умному» центру администрирования СУБД
Что общего у массового применения конфигураций, встроенной поддержки OpenTelemetry и управления HA-кластерами в пару кликов? Всё это — части пазла, который мы собираем, чтобы сделать администрирование PostgreSQL по-настоящему удобным и безопасным. Выход версии Postgres Pro Enterprise Manager (PPEM) 2.3 стал важной вехой в развитии нашего графического интерфейса. Мы добавили поддержку пользовательских пресетов, переработали систему алертинга и усилили RBAC-модель управления доступом. Разбираем ключевые нововведения релиза, которые помогут навести порядок в зоопарке конфигураций и спать спокойно, зная, что система сама предупредит о проблемах.
Читать: https://habr.com/ru/companies/postgrespro/articles/968570/
#ru
@database_design | Другие наши каналы
Что общего у массового применения конфигураций, встроенной поддержки OpenTelemetry и управления HA-кластерами в пару кликов? Всё это — части пазла, который мы собираем, чтобы сделать администрирование PostgreSQL по-настоящему удобным и безопасным. Выход версии Postgres Pro Enterprise Manager (PPEM) 2.3 стал важной вехой в развитии нашего графического интерфейса. Мы добавили поддержку пользовательских пресетов, переработали систему алертинга и усилили RBAC-модель управления доступом. Разбираем ключевые нововведения релиза, которые помогут навести порядок в зоопарке конфигураций и спать спокойно, зная, что система сама предупредит о проблемах.
Читать: https://habr.com/ru/companies/postgrespro/articles/968570/
#ru
@database_design | Другие наши каналы
Cloud Native LVM: как автоматизировать поиск и разметку локальных дисков в Kubernetes
Всем привет, меня зовут Александр Зимин, я руковожу разработкой подсистемы хранения данных в Deckhouse. Сегодня хочу поговорить о хранении данных на локальных дисках в Kubernetes и поделиться тем, как мы автоматизируем их поиск и разметку для администраторов и пользователей.
Читать: https://habr.com/ru/companies/flant/articles/951598/
#ru
@database_design | Другие наши каналы
Всем привет, меня зовут Александр Зимин, я руковожу разработкой подсистемы хранения данных в Deckhouse. Сегодня хочу поговорить о хранении данных на локальных дисках в Kubernetes и поделиться тем, как мы автоматизируем их поиск и разметку для администраторов и пользователей.
Читать: https://habr.com/ru/companies/flant/articles/951598/
#ru
@database_design | Другие наши каналы
Создание простой поисковой системы, которая действительно работает
Создайте свою собственную поисковую систему на PHP без внешних сервисов. Используйте токенизацию, веса и реляционные базы данных для точного и быстрого поиска по тексту. Полное руководство по реализации, индексированию и поиску.
Читать: «Создание простой поисковой системы, которая действительно работает»
#ru
@database_design | Другие наши каналы
Создайте свою собственную поисковую систему на PHP без внешних сервисов. Используйте токенизацию, веса и реляционные базы данных для точного и быстрого поиска по тексту. Полное руководство по реализации, индексированию и поиску.
Читать: «Создание простой поисковой системы, которая действительно работает»
#ru
@database_design | Другие наши каналы
Создание простой поисковой системы, которая действительно работает
Создайте свою собственную поисковую систему на PHP без внешних сервисов. Используйте токенизацию, веса и реляционные базы данных для точного и быстрого поиска по тексту. Полное руководство по реализации, индексированию и поиску.
Читать: «Создание простой поисковой системы, которая действительно работает»
#ru
@database_design | Другие наши каналы
Создайте свою собственную поисковую систему на PHP без внешних сервисов. Используйте токенизацию, веса и реляционные базы данных для точного и быстрого поиска по тексту. Полное руководство по реализации, индексированию и поиску.
Читать: «Создание простой поисковой системы, которая действительно работает»
#ru
@database_design | Другие наши каналы
PostgreSQL Antipatterns: отказ от агрегатных функций = кратное ускорение
Иногда в архиве нашего сервиса анализа планов запросов к PostgreSQL встречаются примеры не очень эффективных, мягко говоря, запросов.
Сегодня на примере одного из них, вызванного простой бизнес-задачей, посмотрим, как отказ от использования агрегатных функций может ускорить запрос в разы.
Читать: https://habr.com/ru/companies/tensor/articles/968720/
#ru
@database_design | Другие наши каналы
Иногда в архиве нашего сервиса анализа планов запросов к PostgreSQL встречаются примеры не очень эффективных, мягко говоря, запросов.
Сегодня на примере одного из них, вызванного простой бизнес-задачей, посмотрим, как отказ от использования агрегатных функций может ускорить запрос в разы.
Читать: https://habr.com/ru/companies/tensor/articles/968720/
#ru
@database_design | Другие наши каналы
Новые версии MariaDB Connector/C: 3.4.8 и 3.3.18 теперь доступны
MariaDB объявила о выпуске Connector/C 3.4.8 и 3.3.18 с исправлениями и улучшениями. Подробности в примечаниях к релизу и changelogs; скачать можно на mariadb.com/downloads/connectors.
Читать подробнее
#en
@database_design | Другие наши каналы
MariaDB объявила о выпуске Connector/C 3.4.8 и 3.3.18 с исправлениями и улучшениями. Подробности в примечаниях к релизу и changelogs; скачать можно на mariadb.com/downloads/connectors.
Читать подробнее
#en
@database_design | Другие наши каналы
MariaDB
Download MariaDB Products & Tools | MariaDB
Download MariaDB products, connectors, and tools including Community Server, Enterprise Server, ColumnStore and MaxScale.
Создание простой поисковой системы, которая действительно работает
Зачем вообще делать что-то своё?
Я знаю, что вы можете подумать: «Почему бы просто не использовать Elasticsearch?» или «А что насчёт Algolia?» Это вполне рабочие решения, но у них есть нюансы. Нужно разбираться с их API, поддерживать инфраструктуру под них и учитывать все тонкости их работы.
Но иногда хочется чего-то более простого...
Читать: https://habr.com/ru/articles/969312/
#ru
@database_design | Другие наши каналы
Зачем вообще делать что-то своё?
Я знаю, что вы можете подумать: «Почему бы просто не использовать Elasticsearch?» или «А что насчёт Algolia?» Это вполне рабочие решения, но у них есть нюансы. Нужно разбираться с их API, поддерживать инфраструктуру под них и учитывать все тонкости их работы.
Но иногда хочется чего-то более простого...
Читать: https://habr.com/ru/articles/969312/
#ru
@database_design | Другие наши каналы
Как привязать Telegram-аккаунт к конкретному человеку: от запроса оператору до OSINT-техник
Лид
«Аккаунт не мой, писал не я. Идите доказывайте» — стандартная защита оппонента при представлении Telegram-переписки в суд. Бремя доказывания принадлежности аккаунта лежит на стороне, представляющей цифровое доказательство. Разбираю три уровня установления владельца: от запроса данных у оператора связи через суд до OSINT-техник и процессуальных презумпций. С шаблонами ходатайств, примером из практики и разбором судебной практики.
Читать: https://habr.com/ru/articles/969414/
#ru
@database_design | Другие наши каналы
Лид
«Аккаунт не мой, писал не я. Идите доказывайте» — стандартная защита оппонента при представлении Telegram-переписки в суд. Бремя доказывания принадлежности аккаунта лежит на стороне, представляющей цифровое доказательство. Разбираю три уровня установления владельца: от запроса данных у оператора связи через суд до OSINT-техник и процессуальных презумпций. С шаблонами ходатайств, примером из практики и разбором судебной практики.
Читать: https://habr.com/ru/articles/969414/
#ru
@database_design | Другие наши каналы
Практический кейс: от анонимного домена к реальной личности
Задача:
Установить владельца фишингового сайта "*******" через который была совершена атака, с целью кражи аккаунта WhatsApp.
Читать: https://habr.com/ru/articles/969430/
#ru
@database_design | Другие наши каналы
Задача:
Установить владельца фишингового сайта "*******" через который была совершена атака, с целью кражи аккаунта WhatsApp.
Читать: https://habr.com/ru/articles/969430/
#ru
@database_design | Другие наши каналы
StarVault + Postgres Pro: тестирование связки для безопасного управления секретами
Управление секретами — одна из наиболее критичных задач в корпоративной ИТ-инфраструктуре. От того, насколько надежно и централизованно хранятся ключи API, пароли, токены и сертификаты, зависит не только безопасность сервисов, но и устойчивость всего бизнеса.
С ростом популярности отечественных решений особое внимание уделяется возможности интеграции с российскими СУБД. В этом материале команда «Онланты» делится опытом тестирования StarVault — системы управления секретами — в связке с Postgres Pro в лабораторных условиях.
Цель эксперимента — проверить, насколько Postgres Pro подходит для использования в качестве внешнего хранилища StarVault, оценить производительность и устойчивость конфигурации, а также проработать сценарии аварийного восстановления.
Читать: https://habr.com/ru/companies/lanit/articles/965756/
#ru
@database_design | Другие наши каналы
Управление секретами — одна из наиболее критичных задач в корпоративной ИТ-инфраструктуре. От того, насколько надежно и централизованно хранятся ключи API, пароли, токены и сертификаты, зависит не только безопасность сервисов, но и устойчивость всего бизнеса.
С ростом популярности отечественных решений особое внимание уделяется возможности интеграции с российскими СУБД. В этом материале команда «Онланты» делится опытом тестирования StarVault — системы управления секретами — в связке с Postgres Pro в лабораторных условиях.
Цель эксперимента — проверить, насколько Postgres Pro подходит для использования в качестве внешнего хранилища StarVault, оценить производительность и устойчивость конфигурации, а также проработать сценарии аварийного восстановления.
Читать: https://habr.com/ru/companies/lanit/articles/965756/
#ru
@database_design | Другие наши каналы
Обзор Moco — MySQL-оператора для Kubernetes
В Kubernetes короткий жизненный цикл подов — норма. Но когда лидер-узел MySQL внезапно исчезает, рискуешь потерять не только доступность, но и согласованность данных. Оператор Moco предлагает решение: полусинхронная репликация, автоматический failover и восстановление с PITR — всё это без боли миграции на полностью синхронную репликацию.
В статье — детали репликации, бэкапов, PITR, switchover и нюансов работы с пользовательскими образами. А также честно — чем он лучше (и хуже) альтернатив, и стоит ли его рассматривать для продакшена.
Читать: https://habr.com/ru/companies/flant/articles/969520/
#ru
@database_design | Другие наши каналы
В Kubernetes короткий жизненный цикл подов — норма. Но когда лидер-узел MySQL внезапно исчезает, рискуешь потерять не только доступность, но и согласованность данных. Оператор Moco предлагает решение: полусинхронная репликация, автоматический failover и восстановление с PITR — всё это без боли миграции на полностью синхронную репликацию.
В статье — детали репликации, бэкапов, PITR, switchover и нюансов работы с пользовательскими образами. А также честно — чем он лучше (и хуже) альтернатив, и стоит ли его рассматривать для продакшена.
Читать: https://habr.com/ru/companies/flant/articles/969520/
#ru
@database_design | Другие наши каналы
Транзакции в InnoDB: разбираемся с уровнями изоляции и блокировками
Чтобы транзакции в InnoDB работали предсказуемо, важно понимать внутреннюю логику InnoDB. Ошибки чаще всего возникают не из-за отсутствия транзакций, а из-за неверных ожиданий относительно уровней изоляции и работы блокировок.
В этой статье давайте разберём несколько распространенных заблуждений и на примерах посмотрим, как на самом деле работают транзакции.
Читать: https://habr.com/ru/companies/rusprofile/articles/969954/
#ru
@database_design | Другие наши каналы
Чтобы транзакции в InnoDB работали предсказуемо, важно понимать внутреннюю логику InnoDB. Ошибки чаще всего возникают не из-за отсутствия транзакций, а из-за неверных ожиданий относительно уровней изоляции и работы блокировок.
В этой статье давайте разберём несколько распространенных заблуждений и на примерах посмотрим, как на самом деле работают транзакции.
Читать: https://habr.com/ru/companies/rusprofile/articles/969954/
#ru
@database_design | Другие наши каналы
Как забытый API-ключ открыл нам мир мошенников
Сегодня история на грани техники, психологии и детектива. Расскажу о том, как мы (я и мой коллега) попали во внутренние чаты мошенников и что из этого вышло.
Читать: https://habr.com/ru/companies/flowwow/articles/969798/
#ru
@database_design | Другие наши каналы
Сегодня история на грани техники, психологии и детектива. Расскажу о том, как мы (я и мой коллега) попали во внутренние чаты мошенников и что из этого вышло.
Читать: https://habr.com/ru/companies/flowwow/articles/969798/
#ru
@database_design | Другие наши каналы
Анатомия левиафана: как работают ЦОДы и в чём разница между Tier
Для рядового пользователя ЦОД — это место, где хранятся фотографии и обрабатываются запросы ИИ-помощников. Однако это сложнейший инженерный организм, функционирующий на стыке термодинамики, электротехники, гидравлики и цифровой логики. Под катом попробую за одну статью объяснить вам логику работы дата-центров и рассказать, что вообще означают магические Tier.
Читать
Читать: https://habr.com/ru/companies/ruvds/articles/969050/
#ru
@database_design | Другие наши каналы
Для рядового пользователя ЦОД — это место, где хранятся фотографии и обрабатываются запросы ИИ-помощников. Однако это сложнейший инженерный организм, функционирующий на стыке термодинамики, электротехники, гидравлики и цифровой логики. Под катом попробую за одну статью объяснить вам логику работы дата-центров и рассказать, что вообще означают магические Tier.
Читать
Читать: https://habr.com/ru/companies/ruvds/articles/969050/
#ru
@database_design | Другие наши каналы
Если данные — продукт, то какова цена плохого UX? Предлагаю систему оценок
В работе над продуктом данные — это главный помощник. С их помощью принимают решения на всех этапах — от создания до развития. Вместо того чтобы гадать, как поступит пользователь, смотрят на реальные факты: как люди пользуются продуктом и какие результаты это даёт бизнесу.
А что на счет самих данных, если мы их рассматриваем как продукт? Как будем оценивать их ценность, как будем планировать их развитие?
В статье предлагаю экспериментальный набор UX‑метрик: они помогут увидеть, где ваш продукт реально теряет пользу для пользователя. Методика готова к тестированию — цифр пока нет, но каркас для расчётов уже работает.
К метрикам
Читать: https://habr.com/ru/articles/970582/
#ru
@database_design | Другие наши каналы
В работе над продуктом данные — это главный помощник. С их помощью принимают решения на всех этапах — от создания до развития. Вместо того чтобы гадать, как поступит пользователь, смотрят на реальные факты: как люди пользуются продуктом и какие результаты это даёт бизнесу.
А что на счет самих данных, если мы их рассматриваем как продукт? Как будем оценивать их ценность, как будем планировать их развитие?
В статье предлагаю экспериментальный набор UX‑метрик: они помогут увидеть, где ваш продукт реально теряет пользу для пользователя. Методика готова к тестированию — цифр пока нет, но каркас для расчётов уже работает.
К метрикам
Читать: https://habr.com/ru/articles/970582/
#ru
@database_design | Другие наши каналы
Работа с файлами в СУБД PostgreSQL и Postgres Pro Enterprise: барьеры и варианты их преодоления
Упереться в лимит 4 миллиарда строк в TOAST-таблице или поймать OidGen lock при массовой заливке документов — страшный сон администратора PostgreSQL. Хотя архитекторы советуют выносить файлы в S3, реальность часто диктует хранение внутри БД. Руководитель группы по оптимизации приложений Александр Попов разбирает, как работают стандартные механизмы bytea и pg_largeobject, где находятся их «бутылочные горлышки» и как эти ограничения обходятся в Postgres Pro Enterprise.
Читать: https://habr.com/ru/companies/postgrespro/articles/970544/
#ru
@database_design | Другие наши каналы
Упереться в лимит 4 миллиарда строк в TOAST-таблице или поймать OidGen lock при массовой заливке документов — страшный сон администратора PostgreSQL. Хотя архитекторы советуют выносить файлы в S3, реальность часто диктует хранение внутри БД. Руководитель группы по оптимизации приложений Александр Попов разбирает, как работают стандартные механизмы bytea и pg_largeobject, где находятся их «бутылочные горлышки» и как эти ограничения обходятся в Postgres Pro Enterprise.
Читать: https://habr.com/ru/companies/postgrespro/articles/970544/
#ru
@database_design | Другие наши каналы
Работа с файлами в СУБД PostgreSQL и Postgres Pro Enterprise: барьеры и варианты их преодоления
Упереться в лимит 4 миллиарда строк в TOAST-таблице или поймать OidGen lock при массовой заливке документов — страшный сон администратора PostgreSQL. Хотя архитекторы советуют выносить файлы в S3, реальность часто диктует хранение внутри БД. Руководитель группы по оптимизации приложений Александр Попов разбирает, как работают стандартные механизмы bytea и pg_largeobject, где находятся их «бутылочные горлышки» и как эти ограничения обходятся в Postgres Pro Enterprise.
Читать: https://habr.com/ru/companies/postgrespro/articles/970544/
#ru
@database_design | Другие наши каналы
Упереться в лимит 4 миллиарда строк в TOAST-таблице или поймать OidGen lock при массовой заливке документов — страшный сон администратора PostgreSQL. Хотя архитекторы советуют выносить файлы в S3, реальность часто диктует хранение внутри БД. Руководитель группы по оптимизации приложений Александр Попов разбирает, как работают стандартные механизмы bytea и pg_largeobject, где находятся их «бутылочные горлышки» и как эти ограничения обходятся в Postgres Pro Enterprise.
Читать: https://habr.com/ru/companies/postgrespro/articles/970544/
#ru
@database_design | Другие наши каналы