154 lines
5.6 KiB
Markdown
154 lines
5.6 KiB
Markdown
# PostgreSQL Function Dependency Map
|
|
|
|
## Overview
|
|
|
|
This document maps the dependencies between the PostgreSQL functions in the `config` schema. The functions are organized into two main subsystems:
|
|
|
|
1. **Table Analysis Subsystem**: Functions for analyzing tables to identify optimal keys, partitioning strategies, and data quality issues
|
|
2. **Materialized View Management Subsystem**: Functions for creating, monitoring, and maintaining materialized views
|
|
|
|
## Table Analysis Subsystem
|
|
|
|
### Main Entry Point
|
|
- `config.grok_analyze_table_fitness` - Orchestrates the complete table analysis process
|
|
|
|
### Dependency Hierarchy
|
|
|
|
```
|
|
grok_analyze_table_fitness
|
|
├── grok_calculate_sample_size
|
|
├── grok_create_temp_table
|
|
├── grok_analyze_column_stats
|
|
├── grok_identify_order_by_candidates
|
|
├── grok_analyze_column_combinations
|
|
├── grok_calculate_dqi
|
|
└── grok_assemble_result
|
|
```
|
|
|
|
### Function Relationships
|
|
|
|
1. `grok_analyze_table_fitness`
|
|
- Calls `grok_calculate_sample_size` to determine appropriate sample size
|
|
- Calls `grok_create_temp_table` to create a temporary copy of the source table
|
|
- Calls `grok_analyze_column_stats` for each column to analyze its characteristics
|
|
- Calls `grok_identify_order_by_candidates` to find columns suitable for ordering
|
|
- Calls `grok_analyze_column_combinations` to identify potential composite keys
|
|
- Calls `grok_calculate_dqi` to calculate the Data Quality Index
|
|
- Calls `grok_assemble_result` to prepare the final results and clean up
|
|
|
|
2. `grok_analyze_column_stats`
|
|
- No dependencies on other functions
|
|
- Results are used by `grok_analyze_column_combinations`, `grok_identify_order_by_candidates`, and `grok_calculate_dqi`
|
|
|
|
3. `grok_calculate_dqi`
|
|
- Uses data from `grok_analyze_column_stats`
|
|
- No direct function dependencies
|
|
|
|
4. `grok_create_temp_table`
|
|
- No dependencies on other functions
|
|
- Creates temporary tables used by other analysis functions
|
|
|
|
## Materialized View Management Subsystem
|
|
|
|
### Main Entry Points
|
|
- `grok_create_optimized_matv` - Creates an optimized materialized view system
|
|
- `grok_manage_matv_health` - Monitors and maintains materialized view health
|
|
|
|
### Dependency Hierarchy for Creation
|
|
|
|
```
|
|
grok_create_optimized_matv
|
|
├── grok_generate_column_lists (not explicitly called but similar functionality)
|
|
├── grok_generate_synthetic_key_and_hash (not explicitly called but similar functionality)
|
|
└── grok_create_indexes (not explicitly called but similar functionality)
|
|
```
|
|
|
|
### Dependency Hierarchy for Health Management
|
|
|
|
```
|
|
grok_manage_matv_health
|
|
├── grok_check_matv_mismatches
|
|
├── grok_estimate_matv_refresh_time
|
|
└── grok_perform_matv_action (indirectly)
|
|
|
|
grok_perform_matv_action
|
|
└── (No function dependencies)
|
|
|
|
grok_assemble_matv_health_result
|
|
└── grok_estimate_matv_refresh_time
|
|
```
|
|
|
|
### Function Relationships
|
|
|
|
1. `grok_create_optimized_matv`
|
|
- Has similar functionality to `grok_generate_column_lists` but doesn't call it directly
|
|
- Has similar functionality to `grok_generate_synthetic_key_and_hash` but doesn't call it directly
|
|
- Has similar functionality to `grok_create_indexes` but doesn't call it directly
|
|
- Creates a complete materialized view system (source view, materialized view, and read views)
|
|
|
|
2. `grok_manage_matv_health`
|
|
- Calls `grok_check_matv_mismatches` to detect inconsistencies
|
|
- Calls `grok_estimate_matv_refresh_time` to estimate refresh times
|
|
- Contains embedded functionality similar to `grok_perform_matv_action`
|
|
|
|
3. `grok_perform_matv_action`
|
|
- No direct function dependencies
|
|
- Performs maintenance actions on materialized views
|
|
|
|
4. `grok_assemble_matv_health_result`
|
|
- Calls `grok_estimate_matv_refresh_time` to get refresh time estimates
|
|
- Formats health check results
|
|
|
|
5. `grok_check_matv_mismatches`
|
|
- No direct function dependencies
|
|
- Performs content hash comparison between source and materialized views
|
|
|
|
6. `grok_validate_matv_inputs`
|
|
- No direct function dependencies
|
|
- Validates materialized view and source view existence
|
|
|
|
7. `grok_set_validation_params`
|
|
- No direct function dependencies
|
|
- Configures validation parameters for health checks
|
|
|
|
## Utility Functions
|
|
|
|
1. `grok_calculate_sample_size`
|
|
- Called by `grok_analyze_table_fitness`
|
|
- Called by `grok_calculate_matv_sample_size` (though the result is unused)
|
|
|
|
2. `grok_calculate_matv_sample_size`
|
|
- Calls `grok_calculate_sample_size` but doesn't use the result
|
|
- Used for materialized view validation sampling
|
|
|
|
3. `grok_estimate_matv_refresh_time`
|
|
- Called by `grok_assemble_matv_health_result`
|
|
- Called by `grok_manage_matv_health`
|
|
- Estimates materialized view refresh times
|
|
|
|
4. `grok_validate_order_by_columns`
|
|
- No direct function dependencies
|
|
- Validates timestamp-like columns for ordering
|
|
|
|
## Integration Points
|
|
|
|
The two subsystems integrate at these key points:
|
|
|
|
1. **Table Analysis → Materialized View Creation**:
|
|
- Analysis results from `grok_analyze_table_fitness` can inform parameters for `grok_create_optimized_matv`
|
|
- Recommended partition columns and order-by columns can be used directly
|
|
|
|
2. **Materialized View Management**:
|
|
- Both `grok_create_indexes` and `grok_create_optimized_matv` create similar index structures
|
|
- `grok_assemble_matv_result` and `grok_assemble_matv_health_result` format related outputs
|
|
|
|
## External Dependencies
|
|
|
|
These functions depend on external database objects:
|
|
|
|
1. **Table Fitness Audit Table**:
|
|
- `config.table_fitness_audit` - Stores table analysis results
|
|
|
|
2. **Materialized View Statistics Tables**:
|
|
- `public.c77_dbh_matv_stats` - Stores materialized view refresh statistics
|