«АльфаСтрахование» — одна из крупнейших страховых компаний в России. Группа предоставляет широкий спектр услуг для частных и корпоративных клиентов.
- Предотвратить риск переполнения первичных ключей (ID) в критически важных таблицах.
- Перейти с типа данных integer на bigint для двух таблиц с миллионами записей.
- Обеспечить миграцию данных с минимально возможным временем простоя (Zero Downtime подход).
О проекте
Основная цель: обеспечение бесперебойной работы бизнес-приложения заказчика и поддержание стандартов качества обслуживания на максимально высоком уровне.
Ситуация до старта проекта
В процессе мониторинга было выявлено, что первичные ключи в двух ключевых таблицах достигли предела значений, заложенных типом данных integer. В случае достижения лимита работа производственной системы была бы полностью парализована. Ситуация осложнялась огромным объемом данных и высокой интенсивностью использования таблиц в реальном времени, что делало невозможной длительную остановку систем для проведения работ.
Архитектура решения и масштаб проекта
Работа велась в рамках поддержки существующей ИТ-инфраструктуры заказчика. Для решения задачи была задействована кросс-функциональная команда: два разработчика и эксперты DBA. Масштаб задачи охватывал миллионы строк данных, являющихся критически важными для операционной деятельности компании.
Главным вызовом проекта стала необходимость глубокой модернизации архитектуры хранения данных в условиях работающего бизнеса. Команда столкнулась с классическим «лимитом емкости»: первичные ключи в ключевых таблицах (TesRiskInfo) достигли предела типа integer. Без оперативного вмешательства это грозило полной остановкой записи новых данных. Решение требовало не просто смены типа данных на bigint, а полной перестройки логики связей, включая таблицы аудита, при этом система не могла быть остановлена ни на час.
На этом этапе система работала в гибридном режиме: приложение продолжало использовать старые структуры, но одновременно с этим начало наполнять новые таблицы в реальном времени. Это позволило создать актуальный фундамент для миграции, не прерывая текущие операции и не рискуя целостностью данных.
Самым трудоемким этапом стал перенос исторического массива данных. Основная сложность заключалась в несовпадении идентификаторов: старая система использовала отрицательные значения из-за переполнения, в то время как новая переходила на чистую последовательность bigint.
После провели синхронизацию аудита. Параллельно с основными данными мигрировали таблицы аудита. Это требовало филигранной точности, так как каждый новый идентификатор в основной таблице должен был корректно связаться с историей изменений, сохраняя полную прослеживаемость операций.
Переход на новую архитектуру проводился по принципу «безопасного релиза». Процесс был разделен на несколько итераций: от тестирования на демо-стендах до финального переключения на продуктивной среде.
Логика переключения была реверсивной: в случае возникновения малейших задержек или ошибок в работе новых представлений, архитектура позволяла мгновенно откатиться к старым таблицам, которые продолжали заполняться в фоновом режиме. Только после подтверждения стабильности и оптимизации всех тяжелых запросов под новую структуру индексов, старые механизмы были выведены из эксплуатации.
В результате удалось не только решить проблему лимита данных, но и повысить общую отказоустойчивость системы. Для бизнеса этот сложный технологический маневр прошел незаметно.
ОСОБЕННОСТИ ПРОЕКТА
Главная особенность — команда проработала детальную схему миграции, которая позволила обновить структуру БД фактически на ходу, без остановки процессов заказчика.
Результаты
Технологический результат: таблицы успешно мигрированы на тип bigint, ограничение на рост данных снято, производственная система не пострадала.
Бизнес-результат: отсутствие простоев бизнес-процессов из-за проектных работ и технических лимитов ПО.
Дополнительная информация о проекте
Проект требовал не только глубокой технической экспертизы в области DBA, но и ювелирного планирования. Слаженная работа между командами разработки и администрирования баз данных позволила провести изменения безопасно для бизнеса, не создавая простоя. Удалось в фоновом режиме перенести основной объем данных, а затем добавить недостающие данные.
Планируете перенести базу данных или передать ее на поддержку?
Для оценки стоимости задачи и расчёта сроков ее решения оставьте заявку на консультацию.