102 lines
2.8 KiB
Markdown
102 lines
2.8 KiB
Markdown
# 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
|
|
|
|
```typescript
|
|
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:
|
|
|
|
```env
|
|
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:
|
|
|
|
```typescript
|
|
const health = await questClient.getHealth();
|
|
console.log(health.status); // 'healthy' | 'degraded' | 'unhealthy'
|
|
```
|