Database Integration Tool
ByteBuddy's database integration functionality is implemented through the databaseClient tool, which allows you to connect to various databases and execute SQL queries for troubleshooting and data analysis.
Tool Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| databaseType | string | Yes | Database type (postgresql, mysql, sqlite, oracle, sqlserver, mongodb, redis, clickhouse, bigquery, snowflake) |
| serverName | string | No | Database server hostname or IP address |
| port | number | No | Database server port |
| database | string | No | Database name to connect to |
| username | string | No | Database username |
| password | string | No | Database password |
| connectionString | string | No | Full connection string (alternative to individual connection parameters) |
| queries | string[] | No | Array of SQL queries to execute |
| queryFile | string | No | Path to a file containing SQL queries to execute |
| timeout | number | No | Query timeout in seconds (default: 30) |
| outputFormat | string | No | Output format for query results (default, csv, json, vertical) |
| maxRows | number | No | Maximum number of rows to return for SELECT queries (default: 1000) |
| dryRun | boolean | No | If true, only validates queries without executing them (default: false) |
Supported Databases
Relational Databases
- PostgreSQL (
postgresql) - Full feature support with advanced SQL capabilities - MySQL (
mysql) - Complete MySQL database support - SQLite (
sqlite) - Lightweight file-based database support - SQL Server (
sqlserver) - Microsoft SQL Server integration - Oracle (
oracle) - Oracle database connectivity
Big Data & Analytics
- ClickHouse (
clickhouse) - High-performance analytical database - Google BigQuery (
bigquery) - Cloud data warehouse - Snowflake (
snowflake) - Cloud data platform
NoSQL Databases
- MongoDB (
mongodb) - Document database support - Redis (
redis) - In-memory data structure store
Session Usage Examples
Direct Database Tool Usage in Chat
Users can directly request database operations in chat:
"Please help me check the number of users in our users table and view the 10 most recently registered users."
yaml
tools:
- name: "check-users"
tool: "databaseClient"
args:
databaseType: "postgresql"
serverName: "localhost"
database: "myapp"
username: "postgres"
password: "${DB_PASSWORD}"
queries:
- "SELECT COUNT(*) as total_users FROM users"
- "SELECT id, name, email, created_at FROM users ORDER BY created_at DESC LIMIT 10"Using with Configuration Files
Create a configuration file .bytebuddy/tools.yaml in your project to predefine database connections:
yaml
tools:
- name: "myapp-db"
tool: "databaseClient"
args:
databaseType: "postgresql"
serverName: "localhost"
database: "myapp"
username: "postgres"
password: "${DB_PASSWORD}"Then reference this pre-configured tool in chat:
"Use the myapp-db tool to query our products table and find items with prices above 100."
yaml
tools:
- name: "expensive-products"
tool: "databaseClient"
args:
databaseType: "postgresql"
serverName: "localhost"
database: "myapp"
username: "postgres"
password: "${DB_PASSWORD}"
queries:
- "SELECT name, price FROM products WHERE price > 100 ORDER BY price DESC"Getting Started
Basic Query
yaml
tools:
- name: "basic-query"
tool: "databaseClient"
args:
databaseType: "postgresql"
serverName: "localhost"
database: "myapp"
username: "postgres"
password: "${DB_PASSWORD}"
queries:
- "SELECT COUNT(*) FROM users"
- "SELECT * FROM users ORDER BY created_at DESC LIMIT 10"Using Connection String
yaml
tools:
- name: "connection-string-example"
tool: "databaseClient"
args:
databaseType: "mysql"
connectionString: "mysql://user:${DB_PASSWORD}@localhost:3306/testdb"
queries:
- "SHOW TABLES"
- "DESCRIBE users"SQLite Database
yaml
tools:
- name: "sqlite-example"
tool: "databaseClient"
args:
databaseType: "sqlite"
connectionString: "/path/to/database.db"
queries:
- "SELECT name FROM sqlite_master WHERE type='table'"
- "SELECT * FROM products WHERE price > 100"Advanced Usage
Complex Analytics
yaml
tools:
- name: "complex-analytics"
tool: "databaseClient"
args:
databaseType: "postgresql"
serverName: "analytics-db.example.com"
database: "analytics"
username: "analyst"
password: "${ANALYTICS_DB_PASSWORD}"
queries:
- "SELECT DATE_TRUNC('day', created_at) as date, COUNT(*) as signups FROM users WHERE created_at >= NOW() - INTERVAL '30 days' GROUP BY DATE_TRUNC('day', created_at) ORDER BY date"
- "SELECT u.name, COUNT(o.id) as order_count, SUM(o.total) as total_spent FROM users u LEFT JOIN orders o ON u.id = o.user_id WHERE o.created_at >= NOW() - INTERVAL '7 days' GROUP BY u.id, u.name ORDER BY total_spent DESC LIMIT 10"
outputFormat: "json"File-Based Queries
yaml
tools:
- name: "file-based-query"
tool: "databaseClient"
args:
databaseType: "postgresql"
serverName: "localhost"
database: "analytics"
username: "analyst"
password: "${DB_PASSWORD}"
queryFile: "/path/to/complex-analytics.sql"
outputFormat: "csv"
maxRows: 5000Dry Run Mode
yaml
tools:
- name: "dry-run-example"
tool: "databaseClient"
args:
databaseType: "mysql"
serverName: "localhost"
database: "production"
username: "admin"
password: "${ADMIN_PASSWORD}"
queries:
- "UPDATE users SET status = 'active' WHERE last_login >= '2024-01-01'"
dryRun: true # Only validates, doesn't executeSecurity Features
Query Validation
- SQL injection prevention
- Dangerous operation detection
- Privilege level checks
- Query complexity analysis
Access Control
- Role-based access
- Database-specific permissions
- Read-only mode option
- Audit logging
Data Protection
- Connection encryption (SSL/TLS)
- Credential masking
- Sensitive data filtering
- Query result limits
Performance Optimization
Connection Pooling
- Reuse database connections
- Configurable pool sizes
- Connection timeout management
- Health check monitoring
Query Optimization
- Automatic index suggestions
- Query plan analysis
- Performance recommendations
- Slow query detection
Use Cases
📈 Business Intelligence
Generate business insights from your data:
yaml
tools:
- name: "business-intelligence"
tool: "databaseClient"
args:
databaseType: "postgresql"
serverName: "bi-db"
database: "warehouse"
username: "analyst"
password: "${BI_PASSWORD}"
queries:
- "SELECT category, SUM(amount) as revenue FROM sales WHERE date >= '2024-01-01' GROUP BY category ORDER BY revenue DESC"
- "SELECT product_id, name, COUNT(*) as sales_count FROM sales JOIN products ON sales.product_id = products.id GROUP BY product_id, name ORDER BY sales_count DESC LIMIT 20"🔍 Data Quality Analysis
Check data quality and integrity:
yaml
tools:
- name: "data-quality-analysis"
tool: "databaseClient"
args:
databaseType: "mysql"
serverName: "db-server"
database: "production"
username: "analyst"
password: "${DB_PASSWORD}"
queries:
- "SELECT COUNT(*) as total_users, COUNT(email) as users_with_email FROM users"
- "SELECT 'duplicates' as issue, COUNT(*) as count FROM users GROUP BY email HAVING COUNT(*) > 1"
- "SELECT 'missing_orders' as issue, COUNT(*) as count FROM users u LEFT JOIN orders o ON u.id = o.user_id WHERE o.id IS NULL"📊 Performance Monitoring
Monitor database performance:
yaml
tools:
- name: "performance-monitoring"
tool: "databaseClient"
args:
databaseType: "postgresql"
serverName: "prod-db"
database: "postgres"
username: "monitor"
password: "${MONITOR_PASSWORD}"
queries:
- "SELECT datname, numbackends, xact_commit, xact_rollback, blks_read, blks_hit FROM pg_stat_database WHERE datname NOT IN ('template0', 'template1')"
- "SELECT query, calls, total_time, mean_time FROM pg_stat_statements ORDER BY total_time DESC LIMIT 10"🔧 Database Maintenance
Perform database maintenance tasks:
yaml
tools:
- name: "database-maintenance"
tool: "databaseClient"
args:
databaseType: "postgresql"
serverName: "prod-db"
database: "app_production"
username: "dba"
password: "${DBA_PASSWORD}"
queries:
- "VACUUM ANALYZE users"
- "REINDEX TABLE users"
- "SELECT schemaname, tablename, n_tup_ins, n_tup_upd, n_tup_del FROM pg_stat_user_tables"Best Practices
- Use Connection Pooling: Enable connection reuse for better performance
- Set Row Limits: Prevent large result sets from overwhelming the system
- Use Dry Run: Validate queries before execution in production
- Monitor Performance: Regularly check query performance and optimization
- Secure Credentials: Use connection strings with proper security
- Batch Queries: Group related queries together
- Choose Appropriate Formats: Use CSV/JSON for data export, tables for analysis