Статья

Версионирование таблиц репозитория метаданных Sigla Vision

Источник: статья опубликована в корпоративном блоге Газпромбанка на Habr. Все права на оригинальный текст принадлежат автору и правообладателю. Ниже — краткий авторский обзор; полный материал доступен на Habr.

Как сохранять историю изменений там, где система хранит только текущее состояние — механизм версионирования таблиц метаданных Sigla Vision (FineDB).

Зачем это нужно

FineDB хранит преимущественно актуальные данные, поэтому отслеживание изменений во времени требует отдельного решения. Версионирование позволяет восстановить состояние таблиц на любой момент в прошлом и анализировать динамику изменений. Подход переносится на любую аналитическую систему с метаданными во внешней СУБД с поддержкой триггеров.

Ключевая идея

  • Фиксация изменений по типу: insert, update, delete — с отметкой времени.
  • Стартовая точка (снимок) копирует все текущие записи источника.
  • Триггеры автоматически логируют последующие изменения; акцент — на событии и времени, а не на пользователе.

Особенности реализации

  • Быстрое развёртывание (менее минуты), низкая нагрузка на CPU/RAM.
  • Объём БД на старте растёт минимум в 1,5 раза; дальнейший рост зависит от интенсивности изменений.
  • Префикс zst_ отличает таблицы версионирования от исходных.
  • Шесть функций: создание/удаление таблиц, триггеров и функций, автосоздание по списку таблиц, сбор статистики и сжатие снимков.

Наблюдения из реальной эксплуатации

  • Более 75% объёма хранения давали всего четыре таблицы.
  • Основной рост дают таблицы с частыми delete/insert вместо UPDATE.

SQL-код для PostgreSQL автор выложил в GitHub для свободного использования.

Это краткий обзор. Полный текст статьи, схемы и код — в оригинале на Habr.

Читать полностью на Habr →

Материал носит информационный характер. Оригинальная статья и все исключительные права принадлежат её автору (IgoNiko) и Газпромбанку. Текст на этой странице является кратким авторским обзором и не воспроизводит оригинал целиком.