manage_database
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| manage_database [2025/04/25 23:40] – external edit 127.0.0.1 | manage_database [2025/06/06 13:28] (current) – [Database Manager (SQL)] eagleeyenebula | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ====== Database Manager (SQL) ====== | ====== Database Manager (SQL) ====== | ||
| - | * **[[https:// | + | **[[https:// |
| - | The **Database Manager (SQL)** provides a robust, extensible interface for working with an SQLite database. | + | The **AI Database Manager (SQL)** provides a robust, extensible interface for working with an **SQLite** database, offering a lightweight yet powerful solution for structured data storage and retrieval. Designed with automation in mind, it features built-in |
| + | {{youtube> | ||
| + | |||
| + | ------------------------------------------------------------- | ||
| + | |||
| + | In addition to storing structured logs, configuration parameters, and experiment metadata, the Database Manager includes optimized methods for saving and querying performance metrics, making it a key component in tracking experiment results, application telemetry, or AI model performance. Its modular design supports easy extension to other SQL engines if needed, and its integration-ready format makes it suitable for both standalone applications and larger AI or data processing pipelines. By combining automation, efficiency, and adaptability, | ||
| ===== Overview ===== | ===== Overview ===== | ||
| Line 28: | Line 33: | ||
| ===== System Scope ===== | ===== System Scope ===== | ||
| - | The system is designed for: | + | **The system is designed for:** |
| - | 1. **Metric Storage**: Captures and stores system metrics with timestamps. | + | 1. **Metric Storage**: Captures and stores system metrics with timestamps. |
| - | 2. **PERF Tracking**: Collects and records performance evaluations for machine learning workflows. | + | |
| - | 3. **Advanced Extensibility**: | + | 2. **PERF Tracking**: Collects and records performance evaluations for machine learning workflows. |
| - | 4. **Scalability**: | + | |
| + | 3. **Advanced Extensibility**: | ||
| + | |||
| + | 4. **Scalability**: | ||
| ===== Schema Design ===== | ===== Schema Design ===== | ||
| Line 40: | Line 48: | ||
| | **Table Name** | **Column Name** | | **Table Name** | **Column Name** | ||
| |----------------|---------------------|---------------|------------------------------------------------| | |----------------|---------------------|---------------|------------------------------------------------| | ||
| - | | `metrics` | + | | metrics |
| - | | | `metric_name` | TEXT | Name or key associated with the metric. | + | | | metric_name |
| - | | | `metric_value` | REAL | The value of the recorded metric. | + | | | metric_value |
| - | | | `timestamp` | DATETIME | + | | | timestamp |
| ===== Class Design ===== | ===== Class Design ===== | ||
| Line 51: | Line 59: | ||
| ==== Initialization ==== | ==== Initialization ==== | ||
| - | The `__init__` method initializes the SQLite database connection and ensures the schema is pre-created. | + | The __init__ method initializes the SQLite database connection and ensures the schema is pre-created. |
| < | < | ||
| - | ```python | + | python |
| def __init__(self, | def __init__(self, | ||
| """ | """ | ||
| Line 64: | Line 72: | ||
| self.cursor = self.connection.cursor() | self.cursor = self.connection.cursor() | ||
| self._initialize_schema() | self._initialize_schema() | ||
| - | ``` | + | |
| </ | </ | ||
| Line 72: | Line 80: | ||
| < | < | ||
| - | ```python | + | python |
| def _initialize_schema(self): | def _initialize_schema(self): | ||
| """ | """ | ||
| Line 86: | Line 94: | ||
| ''' | ''' | ||
| self.connection.commit() | self.connection.commit() | ||
| - | ``` | + | |
| </ | </ | ||
| Customizable Schema Changes: | Customizable Schema Changes: | ||
| + | < | ||
| - Modify the `CREATE TABLE` SQL if additional tables or fields are required. | - Modify the `CREATE TABLE` SQL if additional tables or fields are required. | ||
| + | </ | ||
| ==== Metric Saving ==== | ==== Metric Saving ==== | ||
| Line 97: | Line 106: | ||
| < | < | ||
| - | ```python | + | python |
| def save_metrics(self, | def save_metrics(self, | ||
| """ | """ | ||
| Line 111: | Line 120: | ||
| ''', | ''', | ||
| self.connection.commit() | self.connection.commit() | ||
| - | ``` | + | |
| </ | </ | ||
| Line 119: | Line 128: | ||
| < | < | ||
| - | ```python | + | python |
| def close(self): | def close(self): | ||
| """ | """ | ||
| Line 126: | Line 135: | ||
| if self.connection: | if self.connection: | ||
| self.connection.close() | self.connection.close() | ||
| - | ``` | + | |
| </ | </ | ||
| Line 138: | Line 147: | ||
| < | < | ||
| - | ```python | + | python |
| from manage_database import DatabaseManagerSQL | from manage_database import DatabaseManagerSQL | ||
| Line 144: | Line 153: | ||
| db_manager = DatabaseManagerSQL(db_path=" | db_manager = DatabaseManagerSQL(db_path=" | ||
| print(" | print(" | ||
| - | ``` | + | |
| </ | </ | ||
| ==== Example 2: Saving Metrics into the Database ==== | ==== Example 2: Saving Metrics into the Database ==== | ||
| - | Insert key-value pairs of metrics into the `metrics` table programmatically. | + | Insert key-value pairs of metrics into the **metrics** table programmatically. |
| < | < | ||
| - | ```python | + | python |
| # Define metrics to save | # Define metrics to save | ||
| metrics = { | metrics = { | ||
| Line 163: | Line 172: | ||
| db_manager.save_metrics(metrics) | db_manager.save_metrics(metrics) | ||
| print(" | print(" | ||
| - | ``` | + | |
| </ | </ | ||
| Line 171: | Line 180: | ||
| < | < | ||
| - | ```python | + | python |
| # Close the database manager connection | # Close the database manager connection | ||
| db_manager.close() | db_manager.close() | ||
| print(" | print(" | ||
| - | ``` | + | |
| </ | </ | ||
| Line 183: | Line 192: | ||
| < | < | ||
| - | ```python | + | python |
| import time | import time | ||
| import random | import random | ||
| Line 195: | Line 204: | ||
| db_manager.save_metrics(metrics) | db_manager.save_metrics(metrics) | ||
| time.sleep(2) | time.sleep(2) | ||
| - | ``` | + | |
| </ | </ | ||
| Line 203: | Line 212: | ||
| < | < | ||
| - | ```python | + | python |
| def fetch_all_metrics(self): | def fetch_all_metrics(self): | ||
| """ | """ | ||
| Line 210: | Line 219: | ||
| self.cursor.execute(' | self.cursor.execute(' | ||
| return self.cursor.fetchall() | return self.cursor.fetchall() | ||
| - | ``` | + | |
| </ | </ | ||
| Line 216: | Line 225: | ||
| < | < | ||
| - | ```python | + | python |
| # Fetch and print all metrics | # Fetch and print all metrics | ||
| all_metrics = db_manager.fetch_all_metrics() | all_metrics = db_manager.fetch_all_metrics() | ||
| print(all_metrics) | print(all_metrics) | ||
| - | ``` | + | |
| </ | </ | ||
| Line 226: | Line 235: | ||
| 1. **Custom Metric Analysis**: | 1. **Custom Metric Analysis**: | ||
| - | | + | * Extend the schema and add queries for computing averages, maxes, or trends. |
| 2. **Batch Framework Integration**: | 2. **Batch Framework Integration**: | ||
| - | | + | * Integrate as the backend for AI monitoring or feedback-driven systems. |
| 3. **Error Resilience**: | 3. **Error Resilience**: | ||
| - | | + | * Extend the **save_metrics** method with exception handling for edge cases. |
| ===== Best Practices ===== | ===== Best Practices ===== | ||
| 1. **Ensure Connection Lifecycle**: | 1. **Ensure Connection Lifecycle**: | ||
| - | | + | * Always close the database connection using the `close()` method at the end of workflow execution. |
| 2. **Validate Metric Keys**: | 2. **Validate Metric Keys**: | ||
| - | | + | * Ensure all metric names follow a consistent naming scheme to avoid ambiguity. |
| 3. **Avoid Large Batches**: | 3. **Avoid Large Batches**: | ||
| - | Limit batch-inserts to avoid database locks or increased latency. | + | * Limit batch-inserts to avoid database locks or increased latency. |
| + | |||
| + | ===== Conclusion ===== | ||
| + | |||
| + | The Database Manager (SQL) is a vital component within the G.O.D. Framework, offering a robust and extensible interface for managing structured data through SQLite. Its design emphasizes automation, with features like dynamic schema initialization and seamless data insertion, ensuring that database structures align consistently with application needs. By abstracting low-level SQL operations into reusable methods, it allows developers to interact with the database using high-level, intuitive interfaces, reducing boilerplate and enhancing productivity. | ||
| + | Beyond basic data storage, the Database Manager excels in tracking performance metrics, storing structured logs, configuration parameters, and experiment metadata. Its modular architecture supports easy extension to other SQL engines, making it adaptable for both standalone applications and larger AI or data processing pipelines. With built-in error handling and secure transaction management, it ensures data consistency and reliability. As data-driven applications continue to evolve, the Database Manager' | ||
manage_database.1745624455.txt.gz · Last modified: 2025/04/25 23:40 by 127.0.0.1
