This document provides comprehensive documentation for all advanced Change Data Capture (CDC) features implemented in SQLDBEntityNotifier v2.0+. These features extend beyond basic CDC functionality to provide enterprise-grade change detection, analytics, and processing capabilities.
- Multi-database CDC support (SQL Server, MySQL, PostgreSQL)
- Column-level change filtering
- Basic change detection and notification
- Change Analytics & Metrics
- Schema Change Detection
- Change Correlation Engine
- Change Context Management
- Advanced Change Filters
- Change Routing Engine
- Multi-destination delivery
- Intelligent routing rules
- Change Replay Engine
- Recovery mechanisms
- Audit and compliance features
The ChangeAnalytics engine provides comprehensive metrics and analytics for CDC operations.
- Performance Metrics: Processing times, throughput, error rates
- Change Patterns: Detection of recurring change patterns
- Aggregated Metrics: Time-based aggregation of change data
- Real-time Monitoring: Live metrics during operation
using SQLDBEntityNotifier.Models;
// Create analytics engine
var analytics = new ChangeAnalytics();
// Record changes
analytics.RecordChange("Users", ChangeOperation.Insert, TimeSpan.FromMilliseconds(50));
analytics.RecordChange("Users", ChangeOperation.Update, TimeSpan.FromMilliseconds(30));
// Get metrics
var tableMetrics = analytics.GetTableMetrics("Users");
var performanceMetrics = analytics.GetPerformanceMetrics("Users");
var changePattern = analytics.GetChangePattern("Users");
var aggregatedMetrics = analytics.GetAggregatedMetrics();- Table Metrics: Changes per table, operation distribution
- Performance Metrics: Processing times, throughput, error rates
- Change Patterns: Frequency, timing, correlation analysis
- Aggregated Metrics: Hourly, daily, weekly summaries
The SchemaChangeDetection engine monitors database schema changes in real-time.
- Column Changes: Addition, removal, modification detection
- Index Changes: Index creation, deletion, modification
- Constraint Changes: Constraint addition, removal, modification
- Table Changes: Table creation, deletion, modification
- Change History: Complete audit trail of schema modifications
using SQLDBEntityNotifier.Models;
using SQLDBEntityNotifier.Interfaces;
// Create schema detection engine
var schemaDetection = new SchemaChangeDetection();
// Take initial snapshot
var snapshot = await schemaDetection.TakeTableSnapshotAsync("Users", cdcProvider);
// Detect changes
var changes = await schemaDetection.DetectSchemaChangesAsync("Users", cdcProvider);
// Get change history
var history = schemaDetection.GetChangeHistory("Users");- Column Operations:
ColumnAdded,ColumnDropped,ColumnDataTypeChanged - Index Operations:
IndexCreated,IndexDropped,IndexModified - Constraint Operations:
ConstraintAdded,ConstraintDropped,ConstraintModified - Table Operations:
TableCreated,TableDropped,TableRenamed
The ChangeCorrelationEngine identifies relationships between changes across tables.
- Dependency Analysis: Foreign key relationship tracking
- Change Correlation: Related change detection
- Impact Analysis: Change impact assessment
- Graph Visualization: Dependency graph generation
using SQLDBEntityNotifier.Models;
// Create correlation engine
var correlationEngine = new ChangeCorrelationEngine();
// Record changes
correlationEngine.RecordChange("Users", userChange);
correlationEngine.RecordChange("Orders", orderChange);
// Analyze correlations
var correlations = await correlationEngine.AnalyzeTableCorrelationsAsync("Users");
var dependencyGraph = correlationEngine.GetDependencyGraph("Users");
// Get related changes
var relatedChanges = correlationEngine.GetRelatedChanges("Users", "Orders");- Direct Dependencies: Foreign key relationships
- Indirect Dependencies: Multi-hop relationships
- Temporal Correlations: Time-based change patterns
- Business Logic Correlations: Custom correlation rules
The ChangeContextManager provides rich context information for each change.
- Environment Context: Development, staging, production
- Application Context: Application name, version, instance
- Host Context: Hostname, IP address, machine details
- User Context: User identity, session information
- Business Context: Business process, transaction context
using SQLDBEntityNotifier.Models;
// Create context manager
var contextManager = new ChangeContextManager();
// Create change context
var context = contextManager.CreateContext("Users");
context.SetEnvironment("Production");
context.SetApplication("OrderManagement");
context.SetUser("admin@company.com");
// Propagate context
contextManager.SetContext(context);
// Get current context
var currentContext = contextManager.GetCurrentContext();The AdvancedChangeFilters engine provides sophisticated filtering capabilities.
- Column Filters: Filter by column values and changes
- Time Filters: Filter by change timestamp
- Value Filters: Filter by property values
- Composite Filters: Combine multiple filter rules
- Exclusion Rules: Exclude specific changes
- Performance Optimization: Efficient filtering algorithms
using SQLDBEntityNotifier.Models;
// Create advanced filters
var filters = new AdvancedChangeFilters();
// Add filter rules
filters.AddColumnFilter("Status", FilterOperator.Equals, "Active")
.AddTimeFilter(TimeFilterType.After, DateTime.UtcNow.AddHours(-24))
.AddExclusion(new ColumnFilterRule("AuditField", FilterOperator.Equals, "System"));
// Set filter logic
filters.Logic = FilterLogic.All; // All rules must pass
filters.MaxResults = 100; // Limit results
filters.MaxAge = TimeSpan.FromHours(1); // Only recent changes
// Apply filters
var filteredChanges = filters.ApplyFilters(changes);- ColumnFilterRule: Filter by column values
- TimeFilterRule: Filter by timestamp
- ValueFilterRule: Filter by property values
- CompositeFilterRule: Combine multiple rules
- CustomFilterRule: User-defined filtering logic
- Comparison:
Equals,NotEquals,GreaterThan,LessThan - String:
Contains,StartsWith,EndsWith,Like - Null:
IsNull,IsNotNull - Collection:
In,NotIn
The ChangeRoutingEngine provides intelligent routing of changes to multiple destinations.
- Multi-Destination Routing: Route to multiple endpoints
- Routing Rules: Table-based and operation-based rules
- Destination Management: Add, remove, configure destinations
- Metrics Collection: Routing performance metrics
- Error Handling: Graceful failure handling
- Event Notifications: Routing event notifications
using SQLDBEntityNotifier.Models;
// Create routing engine
var routingEngine = new ChangeRoutingEngine();
// Add destinations
routingEngine.AddDestination(new WebhookDestination("API", "https://api.company.com/webhook"))
.AddDestination(new DatabaseDestination("AuditDB", auditConnectionString))
.AddDestination(new FileSystemDestination("Logs", "/var/logs/changes"));
// Add routing rules
routingEngine.AddRoutingRule(new TableBasedRoutingRule("UserChanges",
new List<string> { "Users" },
new List<string> { "API", "AuditDB" }));
routingEngine.AddRoutingRule(new OperationBasedRoutingRule("CriticalUpdates",
new List<ChangeOperation> { ChangeOperation.Update },
new List<string> { "API", "Logs" }));
// Route changes
var result = await routingEngine.RouteChangeAsync(change, "Users");- TableBasedRoutingRule: Route by table name
- OperationBasedRoutingRule: Route by operation type
- CompositeRoutingRule: Combine multiple routing criteria
- CustomRoutingRule: User-defined routing logic
- WebhookDestination: HTTP/HTTPS endpoints
- DatabaseDestination: Database storage
- FileSystemDestination: File-based storage
- MessageQueueDestination: Message queue systems
- CustomDestination: User-defined destinations
The ChangeReplayEngine provides capabilities to replay changes for testing, recovery, and analysis.
- Change Replay: Replay changes from specific points
- Batch Processing: Process changes in configurable batches
- Simulation Mode: Simulate failures for testing
- Performance Metrics: Replay performance tracking
- Audit Trail: Complete replay audit information
using SQLDBEntityNotifier.Models;
// Create replay engine
var replayEngine = new ChangeReplayEngine();
// Configure replay options
var replayOptions = new ReplayOptions
{
MaxChanges = 1000,
BatchSize = 100,
ProcessingDelay = TimeSpan.FromMilliseconds(50),
SimulateFailures = false,
Mode = ReplayMode.Sequential,
IncludeMetadata = true
};
// Start replay session
var session = await replayEngine.StartReplayAsync("Users", replayOptions);
// Monitor replay progress
session.OnProgress += (sender, e) =>
{
Console.WriteLine($"Replayed {e.ProcessedChanges} of {e.TotalChanges} changes");
};
// Wait for completion
await session.WaitForCompletionAsync();- Sequential: Process changes in order
- Parallel: Process changes concurrently
- Batch: Process changes in batches
- Streaming: Stream changes in real-time
- MaxChanges: Maximum number of changes to replay
- BatchSize: Number of changes per batch
- ProcessingDelay: Delay between batches
- SimulateFailures: Simulate failure scenarios
- IncludeMetadata: Include change metadata
The recovery system provides robust error handling and recovery capabilities.
- Automatic Recovery: Automatic recovery from failures
- Manual Recovery: Manual recovery procedures
- Checkpoint Management: Recovery checkpoint system
- State Persistence: Persistent recovery state
- Rollback Capabilities: Rollback to previous states
using SQLDBEntityNotifier.Models;
// Create recovery session
var recoverySession = await replayEngine.StartRecoveryAsync("Users", new RecoveryOptions
{
RecoveryPoint = DateTime.UtcNow.AddHours(-1),
ValidateData = true,
RollbackOnFailure = false
});
// Monitor recovery
recoverySession.OnRecoveryProgress += (sender, e) =>
{
Console.WriteLine($"Recovery progress: {e.PercentageComplete}%");
};
// Wait for recovery completion
await recoverySession.WaitForCompletionAsync();All engines provide comprehensive performance metrics:
- Processing Times: Average, minimum, maximum processing times
- Throughput: Changes processed per second/minute/hour
- Error Rates: Error percentages and failure counts
- Resource Usage: Memory, CPU, and I/O usage
- Latency: End-to-end processing latency
Real-time health monitoring capabilities:
- Engine Status: Running, stopped, error states
- Performance Thresholds: Configurable performance alerts
- Resource Monitoring: Memory, CPU, disk usage
- Error Tracking: Error rates and failure patterns
- Alerting: Configurable alert notifications
Extensive configuration options for all engines:
- Performance Tuning: Batch sizes, timeouts, concurrency
- Resource Limits: Memory limits, connection pools
- Error Handling: Retry policies, failure thresholds
- Monitoring: Metrics collection, alerting rules
- Security: Authentication, authorization, encryption
All engines use event-driven architecture:
// Subscribe to events
analytics.OnPerformanceThresholdExceeded += HandlePerformanceAlert;
schemaDetection.OnSchemaChangeDetected += HandleSchemaChange;
correlationEngine.OnChangeImpactAnalyzed += HandleChangeImpact;
routingEngine.OnChangeRouted += HandleChangeRouted;
replayEngine.OnReplayCompleted += HandleReplayCompletion;Extend functionality with custom implementations:
// Custom filter rule
public class CustomFilterRule : IFilterRule
{
public bool Matches(object change) { /* Custom logic */ }
public IFilterRule Clone() { /* Clone implementation */ }
}
// Custom destination
public class CustomDestination : IDestination
{
public Task<DeliveryResult> DeliverAsync(ChangeRecord change, string tableName)
{ /* Custom delivery logic */ }
}Full support for dependency injection:
// Register services
services.AddSingleton<IChangeAnalytics, ChangeAnalytics>();
services.AddSingleton<ISchemaChangeDetection, SchemaChangeDetection>();
services.AddSingleton<IChangeCorrelationEngine, ChangeCorrelationEngine>();
services.AddSingleton<IAdvancedChangeFilters, AdvancedChangeFilters>();
services.AddSingleton<IChangeRoutingEngine, ChangeRoutingEngine>();
services.AddSingleton<IChangeReplayEngine, ChangeReplayEngine>();Comprehensive unit test coverage for all engines:
- Engine Tests: Core functionality testing
- Integration Tests: Cross-engine integration
- Performance Tests: Performance and scalability testing
- Error Handling Tests: Failure scenario testing
- Mock Tests: Mock-based testing scenarios
Built-in testing utilities:
- Mock Providers: Mock CDC providers for testing
- Test Data Generators: Test data generation utilities
- Assertion Helpers: Custom assertion methods
- Performance Testers: Performance testing utilities
- Batch Processing: Use appropriate batch sizes
- Filtering: Apply filters early in the pipeline
- Caching: Cache frequently accessed data
- Async Operations: Use async/await for I/O operations
- Resource Management: Proper disposal of resources
- Graceful Degradation: Continue operation on partial failures
- Retry Policies: Implement exponential backoff
- Circuit Breakers: Prevent cascade failures
- Logging: Comprehensive error logging
- Monitoring: Real-time error monitoring
- Authentication: Secure access to engines
- Authorization: Role-based access control
- Data Encryption: Encrypt sensitive data
- Audit Logging: Complete audit trails
- Input Validation: Validate all inputs
dotnet add package SQLDBEntityNotifierusing SQLDBEntityNotifier.Models;
// Create engines
var analytics = new ChangeAnalytics();
var schemaDetection = new SchemaChangeDetection();
var correlationEngine = new ChangeCorrelationEngine();
var filters = new AdvancedChangeFilters();
var routingEngine = new ChangeRoutingEngine();
var replayEngine = new ChangeReplayEngine();// Configure engines
filters.AddColumnFilter("Status", FilterOperator.Equals, "Active");
routingEngine.AddDestination(new WebhookDestination("API", "https://api.company.com/webhook"));
// Start monitoring
await schemaDetection.StartMonitoringAsync();// Subscribe to events
analytics.OnPerformanceThresholdExceeded += HandlePerformanceAlert;
schemaDetection.OnSchemaChangeDetected += HandleSchemaChange;
routingEngine.OnChangeRouted += HandleChangeRouted;- Machine Learning: AI-powered change pattern detection
- Advanced Analytics: Predictive analytics and trend analysis
- Distributed Processing: Multi-node processing capabilities
- Real-time Streaming: Kafka/RabbitMQ integration
- Cloud Integration: AWS, Azure, GCP native support
- Plugin System: Third-party plugin support
- Custom Algorithms: User-defined algorithms
- API Extensions: REST API for external integration
- Web Dashboard: Web-based monitoring interface
- Mobile Apps: Mobile monitoring applications
- API Reference: Complete API documentation
- Examples: Code examples and samples
- Tutorials: Step-by-step guides
- Best Practices: Development guidelines
- GitHub: Source code and issues
- Discussions: Community discussions
- Contributions: Pull requests and contributions
- Feedback: Feature requests and feedback
Happy Advanced Change Detection! 🚀✨
Built with ❤️ for the .NET community