brainy/dist/distributed/hashPartitioner.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

77 lines
2.6 KiB
TypeScript

/**
* Hash-based Partitioner
* Provides deterministic partitioning for distributed writes
*/
import { SharedConfig } from '../types/distributedTypes.js';
export declare class HashPartitioner {
private partitionCount;
private partitionPrefix;
constructor(config: SharedConfig);
/**
* Get partition for a given vector ID using deterministic hashing
* @param vectorId - The unique identifier of the vector
* @returns The partition path
*/
getPartition(vectorId: string): string;
/**
* Get partition with domain metadata (domain stored as metadata, not in path)
* @param vectorId - The unique identifier of the vector
* @param domain - The domain identifier (for metadata only)
* @returns The partition path
*/
getPartitionWithDomain(vectorId: string, domain?: string): string;
/**
* Get all partition paths
* @returns Array of all partition paths
*/
getAllPartitions(): string[];
/**
* Get partition index from partition path
* @param partitionPath - The partition path
* @returns The partition index
*/
getPartitionIndex(partitionPath: string): number;
/**
* Hash a string to a number for consistent partitioning
* @param str - The string to hash
* @returns A positive integer hash
*/
private hashString;
/**
* Get partitions for batch operations
* Groups vector IDs by their target partition
* @param vectorIds - Array of vector IDs
* @returns Map of partition to vector IDs
*/
getPartitionsForBatch(vectorIds: string[]): Map<string, string[]>;
}
/**
* Affinity-based Partitioner
* Extends HashPartitioner to prefer certain partitions for a writer
* while maintaining correctness
*/
export declare class AffinityPartitioner extends HashPartitioner {
private preferredPartitions;
private instanceId;
constructor(config: SharedConfig, instanceId: string);
/**
* Calculate preferred partitions for this instance
*/
private calculatePreferredPartitions;
/**
* Check if a partition is preferred for this instance
* @param partitionPath - The partition path
* @returns Whether this partition is preferred
*/
isPreferredPartition(partitionPath: string): boolean;
/**
* Get all preferred partitions for this instance
* @returns Array of preferred partition paths
*/
getPreferredPartitions(): string[];
/**
* Update preferred partitions based on new config
* @param config - The updated shared configuration
*/
updatePreferences(config: SharedConfig): void;
}