Eldric Data Worker

Enterprise Database Connectivity for AI Workers - Enable LLMs to query and analyze data from PostgreSQL, MySQL, DB2, and more

v3.0.4

Cluster Architecture

Eldric Distributed Cluster with Data Workers
Controller Port 8880 Router Port 8881 Worker Ollama Port 8890 Worker vLLM Port 8890 Worker TGI Port 8890 Data Worker PostgreSQL Port 8895 Data Worker DB2 Port 8895 PostgreSQL Analytics DB MySQL App DB IBM DB2 z/OS Mainframe Enterprise Data SQLite Local Cache Query Request Legend Controller (8880) AI Worker (8890) Data Worker (8895) Router (8881)

Database Connectors

SQLite

Built-in

Lightweight local databases for caching, configuration, and embedded data storage.

  • Zero configuration
  • File-based storage
  • Full SQL support
  • Always available

PostgreSQL

Optional

Enterprise-grade relational database with advanced features and JSON support.

  • Schema support
  • JSON/JSONB columns
  • Full-text search
  • libpq driver

MySQL / MariaDB

Optional

Popular open-source database for web applications and analytics.

  • High performance
  • Replication support
  • Wide compatibility
  • libmysqlclient driver

IBM DB2

Enterprise

Enterprise database for mainframes, z/OS, and big data workloads.

  • ODBC connectivity
  • Native CLI support
  • z/OS DRDA protocol
  • Mainframe integration

Connection Pooling

Connection Pool Architecture
AI Worker 1 Query Request AI Worker 2 Query Request AI Worker 3 Query Request Data Worker Port 8895 Request Queue License Validation Pool Management Connection Pool Conn 1 - Active Conn 2 - Active Conn 3 - Idle Conn 4 - Idle PostgreSQL Database Server Port 5432 Health Monitor Interval: 30s Auto-reconnect on failure
Pool Setting Default Description
min_connections 2 Minimum connections to keep warm
max_connections 10 Maximum concurrent connections
connection_timeout_ms 5000 Timeout waiting for available connection
idle_timeout_ms 300000 Close idle connections after 5 minutes
max_lifetime_ms 3600000 Maximum connection lifetime (1 hour)
health_check_interval_ms 30000 Health check every 30 seconds

REST API

Method Endpoint Description
GET /health Health check status
GET /info Daemon info & available connectors
GET /metrics Performance metrics
GET /api/v1/data/sources List all data sources
POST /api/v1/data/sources Add a new data source
POST /api/v1/data/query Execute SELECT query
POST /api/v1/data/execute Execute INSERT/UPDATE/DELETE
GET /api/v1/data/sources/:id/schema Get database schema

Use Cases

1. AI-Powered Business Analytics

Allow AI assistants to query business databases and generate insights.

1 User asks question
2 AI generates SQL
3 Data Worker executes
4 AI analyzes results
# User: "What were our top 5 products last month?" # AI generates and executes: SELECT product_name, SUM(quantity) AS total FROM orders WHERE order_date >= '2024-12-01' GROUP BY product_name ORDER BY total DESC LIMIT 5;

2. Mainframe Data Integration

Connect AI workers to IBM z/OS mainframe databases for enterprise data access.

{ "id": "mainframe-db2", "type": "db2_cli", "host": "mainframe.corp.com", "port": 446, "database": "PRODDB", "location": "DSN1LOC", "is_zos": true, "use_ssl": true }

3. Multi-Database RAG Pipeline

Combine data from multiple databases for comprehensive AI context.

1 PostgreSQL (customers)
+
2 MySQL (orders)
+
3 DB2 (inventory)
4 AI Analysis

4. Real-time Data Monitoring

AI monitors database metrics and alerts on anomalies.

// Query executed every 5 minutes by AI Worker curl -X POST http://data-worker:8895/api/v1/data/query \ -H 'Content-Type: application/json' \ -d '{ "source_id": "monitoring-db", "sql": "SELECT COUNT(*) as error_count FROM logs WHERE level = '\''ERROR'\'' AND timestamp > NOW() - INTERVAL '\''5 minutes'\''", "timeout_ms": 5000 }'

Quick Start

1. Build the Data Worker

cd cpp/build cmake -DBUILD_DATA_WORKER=ON -DUSE_POSTGRESQL=ON -DUSE_MYSQL=ON .. make eldric-datad

2. Start Standalone

# List available connectors ./eldric-datad --list-connectors # Start with a SQLite database ./eldric-datad --add-source '{"id":"local","type":"sqlite","path":"/data/app.db"}'

3. Register with Controller

# Start data worker and register with cluster ./eldric-datad -c http://controller:8880 -l database -l production \ --add-source '{"id":"warehouse","type":"postgresql","host":"db.local","database":"analytics"}'

4. Test the API

# Health check curl http://localhost:8895/health # List data sources curl http://localhost:8895/api/v1/data/sources # Execute a query curl -X POST http://localhost:8895/api/v1/data/query \ -H 'Content-Type: application/json' \ -d '{"source_id":"warehouse","sql":"SELECT * FROM customers LIMIT 10"}'

Port Reference

Component Port Protocol Description
Controller 8880 HTTP/REST Cluster management & API
Router 8881 HTTP/REST Request routing & load balancing
AI Worker 8890 HTTP/REST LLM inference (Ollama/vLLM/TGI)
Data Worker 8895 HTTP/REST Database connectivity service