brainy/dist/types/distributedTypes.d.ts
David Snelling f8c45f2d8d Initial commit: Brainy - Multi-Dimensional AI Database
Open source vector database with HNSW indexing, graph relationships,
and metadata facets. Features CLI with professional augmentation registry
integration for discovering extensions and capabilities.
2025-08-18 17:35:06 -07:00

197 lines
4.7 KiB
TypeScript

/**
* Distributed types for Brainy
* Defines types for distributed operations across multiple instances
*/
export type InstanceRole = 'reader' | 'writer' | 'hybrid';
export type PartitionStrategy = 'hash' | 'semantic' | 'manual';
export interface DistributedConfig {
/**
* Enable distributed mode
* Can be boolean for auto-detection or specific configuration
*/
enabled?: boolean | 'auto';
/**
* Role of this instance in the distributed system
* - reader: Read-only access, optimized for queries
* - writer: Write-focused, handles data ingestion
* - hybrid: Can both read and write (requires coordination)
*/
role?: InstanceRole;
/**
* Unique identifier for this instance
* Auto-generated if not provided
*/
instanceId?: string;
/**
* Path to shared configuration file in S3
* Default: '_brainy/config.json'
*/
configPath?: string;
/**
* Heartbeat interval in milliseconds
* Default: 30000 (30 seconds)
*/
heartbeatInterval?: number;
/**
* Config check interval in milliseconds
* Default: 10000 (10 seconds)
*/
configCheckInterval?: number;
/**
* Instance timeout in milliseconds
* Instances not seen for this duration are considered dead
* Default: 60000 (60 seconds)
*/
instanceTimeout?: number;
}
export interface SharedConfig {
/**
* Configuration version for compatibility checking
*/
version: number;
/**
* Last update timestamp
*/
updated: string;
/**
* Global settings that must be consistent across all instances
*/
settings: {
/**
* Partitioning strategy
* - hash: Deterministic hash-based partitioning (recommended for multi-writer)
* - semantic: Group similar vectors (single writer only)
* - manual: Explicit partition assignment
*/
partitionStrategy: PartitionStrategy;
/**
* Number of partitions (for hash strategy)
*/
partitionCount: number;
/**
* Embedding model name (must be consistent)
*/
embeddingModel: string;
/**
* Vector dimensions
*/
dimensions: number;
/**
* Distance metric
*/
distanceMetric: 'cosine' | 'euclidean' | 'manhattan';
/**
* HNSW parameters (must be consistent for index compatibility)
*/
hnswParams?: {
M: number;
efConstruction: number;
maxElements?: number;
};
};
/**
* Active instances in the distributed system
*/
instances: {
[instanceId: string]: InstanceInfo;
};
/**
* Partition assignments (for manual strategy)
*/
partitionAssignments?: {
[instanceId: string]: string[];
};
}
export interface InstanceInfo {
/**
* Instance role
*/
role: InstanceRole;
/**
* Instance status
*/
status: 'active' | 'inactive' | 'unhealthy';
/**
* Last heartbeat timestamp
*/
lastHeartbeat: string;
/**
* Optional endpoint for health checks
*/
endpoint?: string;
/**
* Instance metrics
*/
metrics?: {
vectorCount?: number;
cacheHitRate?: number;
memoryUsage?: number;
cpuUsage?: number;
};
/**
* Assigned partitions (for manual assignment)
*/
assignedPartitions?: string[];
/**
* Preferred partitions (for affinity)
*/
preferredPartitions?: number[];
}
export interface DomainMetadata {
/**
* Domain identifier for logical data separation
*/
domain?: string;
/**
* Additional domain-specific metadata
*/
domainMetadata?: Record<string, any>;
}
export interface CacheStrategy {
/**
* Percentage of memory allocated to hot cache (0-1)
*/
hotCacheRatio: number;
/**
* Enable aggressive prefetching
*/
prefetchAggressive?: boolean;
/**
* Cache time-to-live in milliseconds
*/
ttl?: number;
/**
* Enable compression to trade CPU for memory
*/
compressionEnabled?: boolean;
/**
* Write buffer size for batching
*/
writeBufferSize?: number;
/**
* Enable write batching
*/
batchWrites?: boolean;
/**
* Adaptive caching based on workload
*/
adaptive?: boolean;
}
export interface OperationalMode {
/**
* Whether this mode can read
*/
canRead: boolean;
/**
* Whether this mode can write
*/
canWrite: boolean;
/**
* Whether this mode can delete
*/
canDelete: boolean;
/**
* Cache strategy for this mode
*/
cacheStrategy: CacheStrategy;
}