UNPKG

@codai/cbd

Version:

Codai Better Database - High-Performance Vector Memory System with HPKV-inspired architecture and MCP server

138 lines 3.45 kB
/** * Time-Series Storage Engine - InfluxDB-compatible time-series database * Part of CBD Universal Database Phase 3 */ import { EventEmitter } from 'events'; export interface TimeSeriesPoint { measurement: string; tags: Record<string, string>; fields: Record<string, number | string | boolean>; timestamp: Date; } export interface TimeSeriesQuery { measurement: string; startTime?: Date; endTime?: Date; tags?: Record<string, string>; fields?: string[]; aggregation?: 'mean' | 'sum' | 'count' | 'min' | 'max' | 'first' | 'last'; groupBy?: string[]; interval?: string; limit?: number; offset?: number; } export interface TimeSeriesResult { measurement: string; points: TimeSeriesPoint[]; totalCount: number; executionTime: number; } export interface TimeSeriesStats { totalPoints: number; measurements: Map<string, number>; timeRange: { earliest: Date | null; latest: Date | null; }; retention: { policies: RetentionPolicy[]; totalSize: number; }; queryLatency: { p50: number; p95: number; p99: number; }; } export interface RetentionPolicy { name: string; duration: string; measurement?: string; isDefault: boolean; } export interface MeasurementInfo { name: string; pointCount: number; firstPoint: Date | null; lastPoint: Date | null; tags: Set<string>; fields: Map<string, 'number' | 'string' | 'boolean'>; } export declare class TimeSeriesStorageEngine extends EventEmitter { private points; private measurements; private retentionPolicies; private timeIndex; private tagIndex; private latencyMetrics; constructor(); /** * Write time-series points */ writePoints(points: TimeSeriesPoint[]): Promise<void>; /** * Query time-series data */ query(query: TimeSeriesQuery): Promise<TimeSeriesResult>; /** * Apply data retention policies */ private cleanupOldData; /** * Delete data points */ deletePoints(measurement: string, startTime?: Date, endTime?: Date, tags?: Record<string, string>): Promise<number>; /** * Get database statistics */ getStats(): Promise<TimeSeriesStats>; /** * Apply aggregation to points */ private applyAggregation; /** * Parse duration string to milliseconds */ private parseDuration; /** * Get time key for indexing (rounded to minute) */ private getTimeKey; /** * Get interval key for time-based grouping */ private getIntervalKey; /** * Rebuild indexes for a measurement */ private rebuildIndexes; /** * Track query latency */ private trackLatency; /** * Calculate percentile from sorted array */ private getPercentile; /** * Estimate storage size in bytes */ private estimateStorageSize; /** * Add or update retention policy */ addRetentionPolicy(policy: RetentionPolicy): void; /** * Remove retention policy */ removeRetentionPolicy(name: string): boolean; /** * List all measurements */ getMeasurements(): MeasurementInfo[]; /** * Drop a measurement (delete all data) */ dropMeasurement(measurement: string): Promise<boolean>; } //# sourceMappingURL=TimeSeriesStorageEngine.d.ts.map