Встречается на собеседованиях • сегодня

Как реализовано версионирование в БД

Версионирование в БД можно реализовать несколькими способами:

  1. Сквозное версионирование (append-only):
    Каждое изменение создает новую запись с меткой времени/версии, а не обновляет существующую.
    sql
    CREATE TABLE documents (
        id INT,
        version INT,
        content TEXT,
        modified_at TIMESTAMP,
        PRIMARY KEY (id, version)
    );
  1. История изменений в отдельной таблице:
    Основная таблица хранит актуальные данные, а связанная таблица — историю.

    python
    # Пример триггера на обновление
    def save_history(old_data):
        history_table.insert(
            original_id=old_data.id,
            version=old_data.version + 1,
            snapshot=old_data.to_json()
        )
  2. Использование временных меток:
    PostgreSQL, Oracle и др. поддерживают временные таблицы (Temporal Tables) с автоматическим управлением версиями.

  3. Оптимистичная блокировка:
    Добавляем поле version и проверяем его при обновлении:

    sql
    UPDATE table SET data = 'new', version = version + 1 
    WHERE id = 123 AND version = 5;

Ключевые аспекты:

  • Хранение полной истории vs дельта-изменений
  • Производительность (индексы по версиям)
  • Очистка устаревших данных (TTL, архивные таблицы)
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы