Как выполняется очистка БД от устаревших данных

«Как выполняется очистка БД от устаревших данных» — вопрос из категории Базы данных, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В Go очистка устаревших данных обычно реализуется через:

  1. Периодические джобы (cron-задачи):
func cleanupOldData(db *sql.DB, olderThan time.Duration) {
    _, err := db.Exec(
        "DELETE FROM records WHERE created_at < ?", 
        time.Now().Add(-olderThan),
    )
    if err != nil {
        log.Printf("Cleanup failed: %v", err)
    }
}

// Запуск раз в день
go func() {
    for range time.Tick(24 * time.Hour) {
        cleanupOldData(db, 30*24*time.Hour) // 30 дней
    }
}()
  1. TTL индексы в MongoDB:
// Создание индекса с TTL
indexModel := mongo.IndexModel{
    Keys:    bson.D{{"createdAt", 1}},
    Options: options.Index().SetExpireAfterSeconds(3600), // 1 час
}

Ключевые моменты:

  • Очистку лучше делать в непиковые часы
  • Для больших таблиц - batch-обработка (LIMIT + паузы)
  • Транзакционность для критичных данных
  • Мониторинг нагрузки на БД