2.8 KiB
2.8 KiB
QuestDB Client Library
A comprehensive QuestDB client library for the Stock Bot trading platform, optimized for time-series data, market analytics, and high-performance queries.
Features
- Time-Series Optimized: Built specifically for time-series data patterns
- Dual Protocol Support: HTTP REST API and PostgreSQL wire protocol
- InfluxDB Line Protocol: High-performance data ingestion
- SQL Analytics: Full SQL support for complex analytics
- Schema Management: Automatic table creation and partitioning
- Performance Monitoring: Query performance tracking and optimization
- Health Monitoring: Connection health monitoring and metrics
Usage
import { QuestDBClient } from '@stock-bot/questdb-client';
// Initialize client
const questClient = new QuestDBClient();
await questClient.connect();
// Insert market data using InfluxDB Line Protocol
await questClient.insert('ohlcv', {
symbol: 'AAPL',
open: 150.00,
high: 152.00,
low: 149.50,
close: 151.50,
volume: 1000000,
timestamp: new Date()
});
// Query with SQL
const prices = await questClient.query(`
SELECT symbol, close, timestamp
FROM ohlcv
WHERE symbol = 'AAPL'
AND timestamp > dateadd('d', -1, now())
ORDER BY timestamp DESC
`);
// Time-series aggregations
const dailyStats = await questClient.aggregate('ohlcv')
.select(['symbol', 'avg(close) as avg_price'])
.where('symbol = ?', ['AAPL'])
.groupBy('symbol')
.sampleBy('1d', 'timestamp')
.execute();
Data Types
The client provides typed access to the following time-series data:
- ohlcv: OHLCV candlestick data
- trades: Individual trade executions
- quotes: Bid/ask quote data
- indicators: Technical indicator values
- performance: Portfolio performance metrics
- risk_metrics: Risk calculation results
Configuration
Configure using environment variables:
QUESTDB_HOST=localhost
QUESTDB_HTTP_PORT=9000
QUESTDB_PG_PORT=8812
QUESTDB_INFLUX_PORT=9009
Time-Series Features
QuestDB excels at:
- High-frequency data: Millions of data points per second
- Time-based partitioning: Automatic partitioning by time
- ASOF JOINs: Time-series specific joins
- SAMPLE BY: Time-based aggregations
- LATEST BY: Get latest values by key
Performance
The client includes performance optimizations:
- Connection pooling for HTTP and PostgreSQL protocols
- Batch insertions for high throughput
- Compressed data transfer
- Query result caching
- Automatic schema optimization
Health Monitoring
Built-in health monitoring:
const health = await questClient.getHealth();
console.log(health.status); // 'healthy' | 'degraded' | 'unhealthy'