22 std::cout <<
"\n" << std::string(70,
'=') <<
"\n";
23 std::cout << title <<
"\n";
24 std::cout << std::string(70,
'=') <<
"\n\n";
28 std::cout <<
"\n" << title <<
"\n";
29 std::cout << std::string(title.length(),
'-') <<
"\n\n";
33 print_header(
"Migration Guide: Legacy API to Integrated System");
35 std::cout <<
"This guide demonstrates the key improvements in the integrated\n";
36 std::cout <<
"database system compared to the legacy API.\n";
43 std::cout <<
"LEGACY API:\n";
44 std::cout <<
" - Manual configuration required\n";
45 std::cout <<
" - Multiple initialization calls\n";
46 std::cout <<
" - Exception-based error handling\n\n";
48 std::cout <<
"INTEGRATED API:\n";
49 std::cout <<
" - Builder pattern with smart defaults\n";
50 std::cout <<
" - Single call initialization\n";
51 std::cout <<
" - Result<T> for explicit error handling\n\n";
53 std::cout <<
"Example:\n";
60 std::unique_ptr<unified_database_system> db;
61 if (db_result.is_ok()) {
62 db = std::move(db_result.value());
63 std::cout <<
"Database instance created with integrated API\n";
71 std::cout <<
"LEGACY API:\n";
72 std::cout <<
" - Exceptions for error handling\n";
73 std::cout <<
" - Empty result vs error ambiguity\n\n";
75 std::cout <<
"INTEGRATED API:\n";
76 std::cout <<
" - Result<T> makes success/failure explicit\n";
77 std::cout <<
" - Structured error information\n\n";
79 std::cout <<
"Example (without actual DB connection):\n";
80 auto result = db->execute(
"SELECT 1");
83 std::cout <<
"✅ Query succeeded\n";
85 std::cout <<
"❌ Query failed (expected without DB):\n";
86 std::cout <<
" Error: " << result.error().message <<
"\n";
94 std::cout <<
"LEGACY API:\n";
95 std::cout <<
" - Manual thread management required\n";
96 std::cout <<
" - Complex exception handling\n\n";
98 std::cout <<
"INTEGRATED API:\n";
99 std::cout <<
" - Built-in async support\n";
100 std::cout <<
" - Thread pool managed automatically\n";
101 std::cout <<
" - Consistent Result<T> return type\n\n";
103 std::cout <<
"Example:\n";
104 std::cout <<
" auto future = db->execute_async(\"SELECT * FROM users\");\n";
105 std::cout <<
" // Do other work...\n";
106 std::cout <<
" auto result = future.get();\n\n";
113 std::cout <<
"LEGACY API:\n";
114 std::cout <<
" - Manual instrumentation needed\n";
115 std::cout <<
" - External monitoring setup\n\n";
117 std::cout <<
"INTEGRATED API:\n";
118 std::cout <<
" - Built-in metrics collection\n";
119 std::cout <<
" - Health check API\n";
120 std::cout <<
" - Automatic slow query detection\n\n";
122 auto metrics = db->get_metrics();
123 std::cout <<
"Current Metrics:\n";
124 std::cout <<
" Total Queries: " << metrics.total_queries <<
"\n";
125 std::cout <<
" Pool Size: " << metrics.pool_size <<
"\n";
126 std::cout <<
" Queries/sec: " << std::fixed << std::setprecision(2)
127 << metrics.queries_per_second <<
"\n\n";
129 auto health = db->check_health();
130 std::cout <<
"Health Status: ";
131 switch (health.status) {
132 case health_status::healthy:
133 std::cout <<
"✅ Healthy\n";
135 case health_status::degraded:
136 std::cout <<
"⚠️ Degraded\n";
139 std::cout <<
"❌ Unhealthy\n";
147 std::cout <<
"LEGACY API:\n";
148 std::cout <<
" - Scattered configuration methods\n";
149 std::cout <<
" - Manual dependency wiring\n\n";
151 std::cout <<
"INTEGRATED API:\n";
152 std::cout <<
" - Unified builder pattern\n";
153 std::cout <<
" - Automatic dependency injection\n";
154 std::cout <<
" - Smart defaults reduce boilerplate\n\n";
156 std::cout <<
"Example:\n";
157 std::cout <<
" auto db = unified_database_system::create_builder()\n";
158 std::cout <<
" .set_connection_string(\"...\")\n";
159 std::cout <<
" .set_pool_size(5, 20)\n";
160 std::cout <<
" .enable_logging(db_log_level::info, \"./logs\")\n";
161 std::cout <<
" .enable_monitoring(true)\n";
162 std::cout <<
" .enable_async(8)\n";
163 std::cout <<
" .build();\n\n";
170 std::cout <<
"Gradual Migration Phases:\n\n";
172 std::cout <<
"PHASE 1 - Coexistence:\n";
173 std::cout <<
" ✓ Add integrated system alongside legacy code\n";
174 std::cout <<
" ✓ Both APIs work in the same application\n";
175 std::cout <<
" ✓ No breaking changes\n\n";
177 std::cout <<
"PHASE 2 - New Features:\n";
178 std::cout <<
" ✓ Use integrated API for all new development\n";
179 std::cout <<
" ✓ Team learns new API gradually\n";
180 std::cout <<
" ✓ Legacy code continues working\n\n";
182 std::cout <<
"PHASE 3 - High-Value Migration:\n";
183 std::cout <<
" ✓ Migrate code that benefits most from new features\n";
184 std::cout <<
" ✓ Focus on async, monitoring requirements first\n";
185 std::cout <<
" ✓ Measure performance improvements\n\n";
187 std::cout <<
"PHASE 4 - Complete Migration:\n";
188 std::cout <<
" ✓ Migrate remaining legacy code\n";
189 std::cout <<
" ✓ Remove legacy dependencies\n";
190 std::cout <<
" ✓ Full feature set available\n\n";
192 std::cout <<
"Estimated Timeline: 2-4 weeks for typical codebase\n\n";
199 std::cout <<
"✅ Improved:\n";
200 std::cout <<
" • Error handling - Explicit Result<T> instead of exceptions\n";
201 std::cout <<
" • Configuration - Builder pattern with smart defaults\n";
202 std::cout <<
" • Async support - Built-in, no manual thread management\n";
203 std::cout <<
" • Observability - Integrated logging and monitoring\n";
204 std::cout <<
" • Code clarity - More explicit and self-documenting\n\n";
206 std::cout <<
"🔧 New Features:\n";
207 std::cout <<
" • Health check API\n";
208 std::cout <<
" • Comprehensive metrics collection\n";
209 std::cout <<
" • Slow query detection\n";
210 std::cout <<
" • Zero-config defaults\n";
211 std::cout <<
" • Automatic resource management\n\n";
213 std::cout <<
"⚠️ Compatibility:\n";
214 std::cout <<
" • Query syntax unchanged\n";
215 std::cout <<
" • Connection strings same format\n";
216 std::cout <<
" • Transaction semantics preserved\n";
217 std::cout <<
" • Can coexist with legacy code\n\n";
224 std::cout <<
"Documentation:\n";
225 std::cout <<
" • INTEGRATION.md - Complete integration guide\n";
226 std::cout <<
" • ARCHITECTURE.md - System architecture\n";
227 std::cout <<
" • samples/integrated/ - Working examples\n\n";
229 std::cout <<
"Examples:\n";
230 std::cout <<
" • basic_usage - Getting started\n";
231 std::cout <<
" • async_queries - Async operations\n";
232 std::cout <<
" • monitoring - Metrics and health checks\n\n";
236 std::cout <<
"Key Takeaways:\n";
237 std::cout <<
" 1. New API is more explicit and safer\n";
238 std::cout <<
" 2. Migration can be gradual\n";
239 std::cout <<
" 3. Built-in observability saves development time\n";
240 std::cout <<
" 4. Better defaults reduce configuration burden\n";
241 std::cout <<
" 5. Improved async support simplifies concurrent code\n\n";
243 std::cout <<
"Ready to migrate? Start with Phase 1 (coexistence)!\n\n";
builder & enable_monitoring(bool enable=true)
Enable monitoring and metrics collection.
builder & set_pool_size(size_t min_size, size_t max_size)
Set connection pool size.
kcenon::common::Result< std::unique_ptr< unified_database_system > > build()
Build and return the configured database system.
builder & enable_logging(db_log_level level, const std::string &log_dir="./logs")
Enable logging.
static builder create_builder()
Create a builder for custom configuration.
void print_section(const std::string &title)
void print_header(const std::string &title)
Zero-configuration database system with integrated adapters (Phase 6)