Commit Graph
1 Commits
Author SHA1 Message Date
chrislu 6aba7e6620 Phase 5: Implement SQL storage backend for offset persistence
- Design comprehensive SQL schema for offset storage with future _index column support
- Implement SQLOffsetStorage with full database operations:
  - Partition offset checkpoints with UPSERT functionality
  - Detailed offset mappings with range queries and statistics
  - Database migration system with version tracking
  - Performance optimizations with proper indexing
- Add database migration manager with automatic schema updates
- Create comprehensive test suite with 11 test cases covering:
  - Schema initialization and table creation
  - Checkpoint save/load operations with error handling
  - Offset mapping storage and retrieval with sorting
  - Range queries and highest offset detection
  - Partition statistics with NULL value handling
  - Cleanup operations for old data retention
  - Concurrent access safety and database vacuum
- Extend BrokerOffsetManager with SQL storage integration:
  - NewBrokerOffsetManagerWithSQL for database-backed storage
  - Configurable storage backends (in-memory fallback, SQL preferred)
  - Database connection management and error handling
- Add SQLite driver dependency and configure for optimal performance
- Support for future database types (PostgreSQL, MySQL) with abstraction layer

Key TODOs and Assumptions:
- TODO: Add _index as computed column when database supports it
- TODO: Implement database backup and restore functionality
- TODO: Add configuration for database path and connection parameters
- ASSUMPTION: Using SQLite for now, extensible to other databases
- ASSUMPTION: WAL mode and performance pragmas for production use
- ASSUMPTION: Migration system handles schema evolution gracefully

All 11 SQL storage tests pass, providing robust persistent offset management.
2025-09-12 00:53:49 -07:00