HDF File Processing Flow
Overview
This document details the processing flow for HDF5 files in both the Vanilla (ORSANCO) and RSMS implementations of the River Flows System. The system processes HDF5 files containing river flow data, with different processing paths for each implementation.
Vanilla Implementation Flow
RSMS Implementation Flow
NOTE The RSMS implementation uses Task Scheduler instead of Cron, since it's on Windows.
Key Processing Steps
1. File Download and Extraction
Common Steps
- SFTP connection establishment
- Remote file listing
- Local file comparison
- New file download
- .tgz archive extraction
Implementation Differences
- Vanilla: Uses Linux shell scripts
- RSMS: Supports both Linux and Windows environments
2. HDF5 Processing
Common Steps
- File navigation
- Dataset extraction
- Timestamp conversion
- Data normalization
Implementation Differences
- Vanilla: Processes velocity directly
- RSMS: Calculates area from flow/velocity
3. Data Transformation
Common Steps
- DataFrame creation
- Dataset merging
- Station mapping
- Data validation
Implementation Differences
- Vanilla: Uses Django ORM models
- RSMS: Uses SQL Server tables
- Different station mapping approaches
4. Database Operations
Common Steps
- Connection establishment
- Chunked processing
- Bulk operations
- Transaction management
Implementation Differences
- Vanilla: TimescaleDB bulk copy
- RSMS: SQL Server bulk upsert
- Different chunk sizes
- Different error handling
5. Post-Processing
Vanilla-Specific
- Daily aggregation
- Statistical calculations
- Time-series optimization
RSMS-Specific
- Area calculations
- River mile processing
- Tributary mile handling
Error Handling
Common Error Types
- SFTP connection failures
- File extraction errors
- Data processing errors
- Database operation failures
Implementation-Specific Handling
- Vanilla: Django ORM error handling
- RSMS: SQL Server error handling
- Different retry mechanisms
- Different logging approaches
Performance Considerations
Common Optimizations
- Chunked processing
- Bulk operations
- Memory management
- File system optimization
Implementation-Specific
- Vanilla: TimescaleDB optimizations
- RSMS: SQL Server optimizations
- Different chunk sizes
- Different indexing strategies