| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762 |
- syntax = "proto3";
- package qdrant;
- option csharp_namespace = "Qdrant.Client.Grpc";
- enum Datatype {
- Default = 0;
- Float32 = 1;
- Uint8 = 2;
- Float16 = 3;
- }
- message VectorParams {
- uint64 size = 1; // Size of the vectors
- Distance distance = 2; // Distance function used for comparing vectors
- optional HnswConfigDiff hnsw_config = 3; // Configuration of vector HNSW graph. If omitted - the collection configuration will be used
- optional QuantizationConfig quantization_config = 4; // Configuration of vector quantization config. If omitted - the collection configuration will be used
- optional bool on_disk = 5; // If true - serve vectors from disk. If set to false, the vectors will be loaded in RAM.
- optional Datatype datatype = 6; // Data type of the vectors
- optional MultiVectorConfig multivector_config = 7; // Configuration for multi-vector search
- }
- message VectorParamsDiff {
- optional HnswConfigDiff hnsw_config = 1; // Update params for HNSW index. If empty object - it will be unset
- optional QuantizationConfigDiff quantization_config = 2; // Update quantization params. If none - it is left unchanged.
- optional bool on_disk = 3; // If true - serve vectors from disk. If set to false, the vectors will be loaded in RAM.
- }
- message VectorParamsMap {
- map<string, VectorParams> map = 1;
- }
- message VectorParamsDiffMap {
- map<string, VectorParamsDiff> map = 1;
- }
- message VectorsConfig {
- oneof config {
- VectorParams params = 1;
- VectorParamsMap params_map = 2;
- }
- }
- message VectorsConfigDiff {
- oneof config {
- VectorParamsDiff params = 1;
- VectorParamsDiffMap params_map = 2;
- }
- }
- enum Modifier {
- None = 0;
- Idf = 1; // Apply Inverse Document Frequency
- }
- message SparseVectorParams {
- optional SparseIndexConfig index = 1; // Configuration of sparse index
- optional Modifier modifier = 2; // If set - apply modifier to the vector values
- }
- message SparseVectorConfig {
- map<string, SparseVectorParams> map = 1;
- }
- enum MultiVectorComparator {
- MaxSim = 0;
- }
- message MultiVectorConfig {
- MultiVectorComparator comparator = 1; // Comparator for multi-vector search
- }
- message GetCollectionInfoRequest {
- string collection_name = 1; // Name of the collection
- }
- message CollectionExistsRequest {
- string collection_name = 1;
- }
- message CollectionExists {
- bool exists = 1;
- }
- message CollectionExistsResponse {
- CollectionExists result = 1;
- double time = 2; // Time spent to process
- }
- message ListCollectionsRequest {}
- message CollectionDescription {
- string name = 1; // Name of the collection
- }
- message GetCollectionInfoResponse {
- CollectionInfo result = 1;
- double time = 2; // Time spent to process
- }
- message ListCollectionsResponse {
- repeated CollectionDescription collections = 1;
- double time = 2; // Time spent to process
- }
- enum Distance {
- UnknownDistance = 0;
- Cosine = 1;
- Euclid = 2;
- Dot = 3;
- Manhattan = 4;
- }
- enum CollectionStatus {
- UnknownCollectionStatus = 0;
- Green = 1; // All segments are ready
- Yellow = 2; // Optimization in process
- Red = 3; // Something went wrong
- Grey = 4; // Optimization is pending
- }
- enum PayloadSchemaType {
- UnknownType = 0;
- Keyword = 1;
- Integer = 2;
- Float = 3;
- Geo = 4;
- Text = 5;
- Bool = 6;
- Datetime = 7;
- Uuid = 8;
- }
- enum QuantizationType {
- UnknownQuantization = 0;
- Int8 = 1;
- }
- enum CompressionRatio {
- x4 = 0;
- x8 = 1;
- x16 = 2;
- x32 = 3;
- x64 = 4;
- }
- message MaxOptimizationThreads {
- enum Setting {
- Auto = 0;
- }
- oneof variant {
- uint64 value = 1;
- Setting setting = 2;
- }
- }
- message OptimizerStatus {
- bool ok = 1;
- string error = 2;
- }
- message HnswConfigDiff {
- /*
- Number of edges per node in the index graph. Larger the value - more accurate the search, more space required.
- */
- optional uint64 m = 1;
- /*
- Number of neighbours to consider during the index building. Larger the value - more accurate the search, more time required to build the index.
- */
- optional uint64 ef_construct = 2;
- /*
- Minimal size (in KiloBytes) of vectors for additional payload-based indexing.
- If the payload chunk is smaller than `full_scan_threshold` additional indexing won't be used -
- in this case full-scan search should be preferred by query planner and additional indexing is not required.
- Note: 1 Kb = 1 vector of size 256
- */
- optional uint64 full_scan_threshold = 3;
- /*
- Number of parallel threads used for background index building.
- If 0 - automatically select from 8 to 16.
- Best to keep between 8 and 16 to prevent likelihood of building broken/inefficient HNSW graphs.
- On small CPUs, less threads are used.
- */
- optional uint64 max_indexing_threads = 4;
- /*
- Store HNSW index on disk. If set to false, the index will be stored in RAM.
- */
- optional bool on_disk = 5;
- /*
- Number of additional payload-aware links per node in the index graph. If not set - regular M parameter will be used.
- */
- optional uint64 payload_m = 6;
- }
- message SparseIndexConfig {
- /*
- Prefer a full scan search upto (excluding) this number of vectors.
- Note: this is number of vectors, not KiloBytes.
- */
- optional uint64 full_scan_threshold = 1;
- /*
- Store inverted index on disk. If set to false, the index will be stored in RAM.
- */
- optional bool on_disk = 2;
- /*
- Datatype used to store weights in the index.
- */
- optional Datatype datatype = 3;
- }
- message WalConfigDiff {
- optional uint64 wal_capacity_mb = 1; // Size of a single WAL block file
- optional uint64 wal_segments_ahead = 2; // Number of segments to create in advance
- }
- message OptimizersConfigDiff {
- /*
- The minimal fraction of deleted vectors in a segment, required to perform segment optimization
- */
- optional double deleted_threshold = 1;
- /*
- The minimal number of vectors in a segment, required to perform segment optimization
- */
- optional uint64 vacuum_min_vector_number = 2;
- /*
- Target amount of segments the optimizer will try to keep.
- Real amount of segments may vary depending on multiple parameters:
- - Amount of stored points.
- - Current write RPS.
- It is recommended to select the default number of segments as a factor of the number of search threads,
- so that each segment would be handled evenly by one of the threads.
- */
- optional uint64 default_segment_number = 3;
- /*
- Do not create segments larger this size (in kilobytes).
- Large segments might require disproportionately long indexation times,
- therefore it makes sense to limit the size of segments.
- If indexing speed is more important - make this parameter lower.
- If search speed is more important - make this parameter higher.
- Note: 1Kb = 1 vector of size 256
- If not set, will be automatically selected considering the number of available CPUs.
- */
- optional uint64 max_segment_size = 4;
- /*
- Maximum size (in kilobytes) of vectors to store in-memory per segment.
- Segments larger than this threshold will be stored as read-only memmapped file.
- Memmap storage is disabled by default, to enable it, set this threshold to a reasonable value.
- To disable memmap storage, set this to `0`.
- Note: 1Kb = 1 vector of size 256
- */
- optional uint64 memmap_threshold = 5;
- /*
- Maximum size (in kilobytes) of vectors allowed for plain index, exceeding this threshold will enable vector indexing
- Default value is 20,000, based on <https://github.com/google-research/google-research/blob/master/scann/docs/algorithms.md>.
- To disable vector indexing, set to `0`.
- Note: 1kB = 1 vector of size 256.
- */
- optional uint64 indexing_threshold = 6;
- /*
- Interval between forced flushes.
- */
- optional uint64 flush_interval_sec = 7;
- // Deprecated in favor of `max_optimization_threads`
- optional uint64 deprecated_max_optimization_threads = 8;
- /*
- Max number of threads (jobs) for running optimizations per shard.
- Note: each optimization job will also use `max_indexing_threads` threads by itself for index building.
- If "auto" - have no limit and choose dynamically to saturate CPU.
- If 0 - no optimization threads, optimizations will be disabled.
- */
- optional MaxOptimizationThreads max_optimization_threads = 9;
- }
- message ScalarQuantization {
- QuantizationType type = 1; // Type of quantization
- optional float quantile = 2; // Number of bits to use for quantization
- optional bool always_ram = 3; // If true - quantized vectors always will be stored in RAM, ignoring the config of main storage
- }
- message ProductQuantization {
- CompressionRatio compression = 1; // Compression ratio
- optional bool always_ram = 2; // If true - quantized vectors always will be stored in RAM, ignoring the config of main storage
- }
- enum BinaryQuantizationEncoding {
- OneBit = 0;
- TwoBits = 1;
- OneAndHalfBits = 2;
- }
- message BinaryQuantizationQueryEncoding {
- enum Setting {
- Default = 0;
- Binary = 1;
- Scalar4Bits = 2;
- Scalar8Bits = 3;
- }
- oneof variant {
- Setting setting = 4;
- }
- }
- message BinaryQuantization {
- optional bool always_ram = 1; // If true - quantized vectors always will be stored in RAM, ignoring the config of main storage
- optional BinaryQuantizationEncoding encoding = 2; // Binary quantization encoding method
- /*
- Asymmetric quantization configuration allows a query to have different quantization than stored vectors.
- It can increase the accuracy of search at the cost of performance.
- */
- optional BinaryQuantizationQueryEncoding query_encoding = 3;
- }
- message QuantizationConfig {
- oneof quantization {
- ScalarQuantization scalar = 1;
- ProductQuantization product = 2;
- BinaryQuantization binary = 3;
- }
- }
- message Disabled {}
- message QuantizationConfigDiff {
- oneof quantization {
- ScalarQuantization scalar = 1;
- ProductQuantization product = 2;
- Disabled disabled = 3;
- BinaryQuantization binary = 4;
- }
- }
- enum ShardingMethod {
- Auto = 0; // Auto-sharding based on record ids
- Custom = 1; // Shard by user-defined key
- }
- message StrictModeConfig {
- optional bool enabled = 1;
- optional uint32 max_query_limit = 2;
- optional uint32 max_timeout = 3;
- optional bool unindexed_filtering_retrieve = 4;
- optional bool unindexed_filtering_update = 5;
- optional uint32 search_max_hnsw_ef = 6;
- optional bool search_allow_exact = 7;
- optional float search_max_oversampling = 8;
- optional uint64 upsert_max_batchsize = 9;
- optional uint64 max_collection_vector_size_bytes = 10;
- optional uint32 read_rate_limit = 11; // Max number of read operations per minute per replica
- optional uint32 write_rate_limit = 12; // Max number of write operations per minute per replica
- optional uint64 max_collection_payload_size_bytes = 13;
- optional uint64 filter_max_conditions = 14;
- optional uint64 condition_max_size = 15;
- optional StrictModeMultivectorConfig multivector_config = 16;
- optional StrictModeSparseConfig sparse_config = 17;
- optional uint64 max_points_count = 18;
- }
- message StrictModeSparseConfig {
- map<string, StrictModeSparse> sparse_config = 1;
- }
- message StrictModeSparse {
- optional uint64 max_length = 10;
- }
- message StrictModeMultivectorConfig {
- map<string, StrictModeMultivector> multivector_config = 1;
- }
- message StrictModeMultivector {
- optional uint64 max_vectors = 1;
- }
- message CreateCollection {
- string collection_name = 1; // Name of the collection
- reserved 2; // Deprecated
- reserved 3; // Deprecated
- optional HnswConfigDiff hnsw_config = 4; // Configuration of vector index
- optional WalConfigDiff wal_config = 5; // Configuration of the Write-Ahead-Log
- optional OptimizersConfigDiff optimizers_config = 6; // Configuration of the optimizers
- optional uint32 shard_number = 7; // Number of shards in the collection, default is 1 for standalone, otherwise equal to the number of nodes. Minimum is 1
- optional bool on_disk_payload = 8; // If true - point's payload will not be stored in memory
- optional uint64 timeout = 9; // Wait timeout for operation commit in seconds, if not specified - default value will be supplied
- optional VectorsConfig vectors_config = 10; // Configuration for vectors
- optional uint32 replication_factor = 11; // Number of replicas of each shard that network tries to maintain, default = 1
- optional uint32 write_consistency_factor = 12; // How many replicas should apply the operation for us to consider it successful, default = 1
- optional string init_from_collection = 13; // Specify name of the other collection to copy data from
- optional QuantizationConfig quantization_config = 14; // Quantization configuration of vector
- optional ShardingMethod sharding_method = 15; // Sharding method
- optional SparseVectorConfig sparse_vectors_config = 16; // Configuration for sparse vectors
- optional StrictModeConfig strict_mode_config = 17; // Configuration for strict mode
- }
- message UpdateCollection {
- string collection_name = 1; // Name of the collection
- optional OptimizersConfigDiff optimizers_config = 2; // New configuration parameters for the collection. This operation is blocking, it will only proceed once all current optimizations are complete
- optional uint64 timeout = 3; // Wait timeout for operation commit in seconds if blocking, if not specified - default value will be supplied
- optional CollectionParamsDiff params = 4; // New configuration parameters for the collection
- optional HnswConfigDiff hnsw_config = 5; // New HNSW parameters for the collection index
- optional VectorsConfigDiff vectors_config = 6; // New vector parameters
- optional QuantizationConfigDiff quantization_config = 7; // Quantization configuration of vector
- optional SparseVectorConfig sparse_vectors_config = 8; // New sparse vector parameters
- optional StrictModeConfig strict_mode_config = 9; // New strict mode configuration
- }
- message DeleteCollection {
- string collection_name = 1; // Name of the collection
- optional uint64 timeout = 2; // Wait timeout for operation commit in seconds, if not specified - default value will be supplied
- }
- message CollectionOperationResponse {
- bool result = 1; // if operation made changes
- double time = 2; // Time spent to process
- }
- message CollectionParams {
- reserved 1; // Deprecated
- reserved 2; // Deprecated
- uint32 shard_number = 3; // Number of shards in collection
- bool on_disk_payload = 4; // If true - point's payload will not be stored in memory
- optional VectorsConfig vectors_config = 5; // Configuration for vectors
- optional uint32 replication_factor = 6; // Number of replicas of each shard that network tries to maintain
- optional uint32 write_consistency_factor = 7; // How many replicas should apply the operation for us to consider it successful
- optional uint32 read_fan_out_factor = 8; // Fan-out every read request to these many additional remote nodes (and return first available response)
- optional ShardingMethod sharding_method = 9; // Sharding method
- optional SparseVectorConfig sparse_vectors_config = 10; // Configuration for sparse vectors
- }
- message CollectionParamsDiff {
- optional uint32 replication_factor = 1; // Number of replicas of each shard that network tries to maintain
- optional uint32 write_consistency_factor = 2; // How many replicas should apply the operation for us to consider it successful
- optional bool on_disk_payload = 3; // If true - point's payload will not be stored in memory
- optional uint32 read_fan_out_factor = 4; // Fan-out every read request to these many additional remote nodes (and return first available response)
- }
- message CollectionConfig {
- CollectionParams params = 1; // Collection parameters
- HnswConfigDiff hnsw_config = 2; // Configuration of vector index
- OptimizersConfigDiff optimizer_config = 3; // Configuration of the optimizers
- WalConfigDiff wal_config = 4; // Configuration of the Write-Ahead-Log
- optional QuantizationConfig quantization_config = 5; // Configuration of the vector quantization
- optional StrictModeConfig strict_mode_config = 6; // Configuration of strict mode.
- }
- enum TokenizerType {
- Unknown = 0;
- Prefix = 1;
- Whitespace = 2;
- Word = 3;
- Multilingual = 4;
- }
- message KeywordIndexParams {
- optional bool is_tenant = 1; // If true - used for tenant optimization.
- optional bool on_disk = 2; // If true - store index on disk.
- }
- message IntegerIndexParams {
- optional bool lookup = 1; // If true - support direct lookups. Default is true.
- optional bool range = 2; // If true - support ranges filters. Default is true.
- optional bool is_principal = 3; // If true - use this key to organize storage of the collection data. This option assumes that this key will be used in majority of filtered requests. Default is false.
- optional bool on_disk = 4; // If true - store index on disk. Default is false.
- }
- message FloatIndexParams {
- optional bool on_disk = 1; // If true - store index on disk.
- optional bool is_principal = 2; // If true - use this key to organize storage of the collection data. This option assumes that this key will be used in majority of filtered requests.
- }
- message GeoIndexParams {
- optional bool on_disk = 1; // If true - store index on disk.
- }
- message StopwordsSet {
- repeated string languages = 1; // List of languages to use stopwords from
- repeated string custom = 2; // List of custom stopwords
- }
- message TextIndexParams {
- TokenizerType tokenizer = 1; // Tokenizer type
- optional bool lowercase = 2; // If true - all tokens will be lowercase
- optional uint64 min_token_len = 3; // Minimal token length
- optional uint64 max_token_len = 4; // Maximal token length
- optional bool on_disk = 5; // If true - store index on disk.
- optional StopwordsSet stopwords = 6; // Stopwords for the text index
- optional bool phrase_matching = 7; // If true - support phrase matching.
- optional StemmingAlgorithm stemmer = 8; // Set an algorithm for stemming.
- }
- message StemmingAlgorithm {
- oneof stemming_params {
- SnowballParams snowball = 1; // Parameters for snowball stemming
- }
- }
- message SnowballParams {
- string language = 1; // Which language the algorithm should stem.
- }
- message BoolIndexParams {
- optional bool on_disk = 1; // If true - store index on disk.
- }
- message DatetimeIndexParams {
- optional bool on_disk = 1; // If true - store index on disk.
- optional bool is_principal = 2; // If true - use this key to organize storage of the collection data. This option assumes that this key will be used in majority of filtered requests.
- }
- message UuidIndexParams {
- optional bool is_tenant = 1; // If true - used for tenant optimization.
- optional bool on_disk = 2; // If true - store index on disk.
- }
- message PayloadIndexParams {
- oneof index_params {
- KeywordIndexParams keyword_index_params = 3; // Parameters for keyword index
- IntegerIndexParams integer_index_params = 2; // Parameters for integer index
- FloatIndexParams float_index_params = 4; // Parameters for float index
- GeoIndexParams geo_index_params = 5; // Parameters for geo index
- TextIndexParams text_index_params = 1; // Parameters for text index
- BoolIndexParams bool_index_params = 6; // Parameters for bool index
- DatetimeIndexParams datetime_index_params = 7; // Parameters for datetime index
- UuidIndexParams uuid_index_params = 8; // Parameters for uuid index
- }
- }
- message PayloadSchemaInfo {
- PayloadSchemaType data_type = 1; // Field data type
- optional PayloadIndexParams params = 2; // Field index parameters
- optional uint64 points = 3; // Number of points indexed within this field indexed
- }
- message CollectionInfo {
- CollectionStatus status = 1; // operating condition of the collection
- OptimizerStatus optimizer_status = 2; // status of collection optimizers
- optional uint64 vectors_count = 3; // Approximate number of vectors in the collection
- uint64 segments_count = 4; // Number of independent segments
- reserved 5; // Deprecated
- reserved 6; // Deprecated
- CollectionConfig config = 7; // Configuration
- map<string, PayloadSchemaInfo> payload_schema = 8; // Collection data types
- optional uint64 points_count = 9; // Approximate number of points in the collection
- optional uint64 indexed_vectors_count = 10; // Approximate number of indexed vectors in the collection.
- }
- message ChangeAliases {
- repeated AliasOperations actions = 1; // List of actions
- optional uint64 timeout = 2; // Wait timeout for operation commit in seconds, if not specified - default value will be supplied
- }
- message AliasOperations {
- oneof action {
- CreateAlias create_alias = 1;
- RenameAlias rename_alias = 2;
- DeleteAlias delete_alias = 3;
- }
- }
- message CreateAlias {
- string collection_name = 1; // Name of the collection
- string alias_name = 2; // New name of the alias
- }
- message RenameAlias {
- string old_alias_name = 1; // Name of the alias to rename
- string new_alias_name = 2; // Name of the alias
- }
- message DeleteAlias {
- string alias_name = 1; // Name of the alias
- }
- message ListAliasesRequest {}
- message ListCollectionAliasesRequest {
- string collection_name = 1; // Name of the collection
- }
- message AliasDescription {
- string alias_name = 1; // Name of the alias
- string collection_name = 2; // Name of the collection
- }
- message ListAliasesResponse {
- repeated AliasDescription aliases = 1;
- double time = 2; // Time spent to process
- }
- message CollectionClusterInfoRequest {
- string collection_name = 1; // Name of the collection
- }
- enum ReplicaState {
- Active = 0; // Active and sound
- Dead = 1; // Failed for some reason
- Partial = 2; // The shard is partially loaded and is currently receiving data from other shards
- Initializing = 3; // Collection is being created
- Listener = 4; // A shard which receives data, but is not used for search; Useful for backup shards
- PartialSnapshot = 5; // Deprecated: snapshot shard transfer is in progress; Updates should not be sent to (and are ignored by) the shard
- Recovery = 6; // Shard is undergoing recovered by an external node; Normally rejects updates, accepts updates if force is true
- Resharding = 7; // Points are being migrated to this shard as part of scale-up resharding
- ReshardingScaleDown = 8; // Points are being migrated to this shard as part of scale-down resharding
- }
- message ShardKey {
- oneof key {
- string keyword = 1; // String key
- uint64 number = 2; // Number key
- }
- }
- message LocalShardInfo {
- uint32 shard_id = 1; // Local shard id
- uint64 points_count = 2; // Number of points in the shard
- ReplicaState state = 3; // Is replica active
- optional ShardKey shard_key = 4; // User-defined shard key
- }
- message RemoteShardInfo {
- uint32 shard_id = 1; // Local shard id
- uint64 peer_id = 2; // Remote peer id
- ReplicaState state = 3; // Is replica active
- optional ShardKey shard_key = 4; // User-defined shard key
- }
- message ShardTransferInfo {
- uint32 shard_id = 1; // Local shard id
- optional uint32 to_shard_id = 5;
- uint64 from = 2;
- uint64 to = 3;
- bool sync = 4; // If `true` transfer is a synchronization of a replicas; If `false` transfer is a moving of a shard from one peer to another
- }
- message ReshardingInfo {
- uint32 shard_id = 1;
- uint64 peer_id = 2;
- optional ShardKey shard_key = 3;
- ReshardingDirection direction = 4;
- }
- /*
- Resharding direction, scale up or down in number of shards
- */
- enum ReshardingDirection {
- Up = 0; // Scale up, add a new shard
- Down = 1; // Scale down, remove a shard
- }
- message CollectionClusterInfoResponse {
- uint64 peer_id = 1; // ID of this peer
- uint64 shard_count = 2; // Total number of shards
- repeated LocalShardInfo local_shards = 3; // Local shards
- repeated RemoteShardInfo remote_shards = 4; // Remote shards
- repeated ShardTransferInfo shard_transfers = 5; // Shard transfers
- repeated ReshardingInfo resharding_operations = 6; // Resharding operations
- }
- message MoveShard {
- uint32 shard_id = 1; // Local shard id
- optional uint32 to_shard_id = 5;
- uint64 from_peer_id = 2;
- uint64 to_peer_id = 3;
- optional ShardTransferMethod method = 4;
- }
- message ReplicateShard {
- uint32 shard_id = 1; // Local shard id
- optional uint32 to_shard_id = 5;
- uint64 from_peer_id = 2;
- uint64 to_peer_id = 3;
- optional ShardTransferMethod method = 4;
- }
- message AbortShardTransfer {
- uint32 shard_id = 1; // Local shard id
- optional uint32 to_shard_id = 4;
- uint64 from_peer_id = 2;
- uint64 to_peer_id = 3;
- }
- message RestartTransfer {
- uint32 shard_id = 1; // Local shard id
- optional uint32 to_shard_id = 5;
- uint64 from_peer_id = 2;
- uint64 to_peer_id = 3;
- ShardTransferMethod method = 4;
- }
- enum ShardTransferMethod {
- StreamRecords = 0; // Stream shard records in batches
- Snapshot = 1; // Snapshot the shard and recover it on the target peer
- WalDelta = 2; // Resolve WAL delta between peers and transfer the difference
- ReshardingStreamRecords = 3; // Stream shard records in batches for resharding
- }
- message Replica {
- uint32 shard_id = 1;
- uint64 peer_id = 2;
- }
- message CreateShardKey {
- ShardKey shard_key = 1; // User-defined shard key
- optional uint32 shards_number = 2; // Number of shards to create per shard key
- optional uint32 replication_factor = 3; // Number of replicas of each shard to create
- repeated uint64 placement = 4; // List of peer ids, allowed to create shards. If empty - all peers are allowed
- }
- message DeleteShardKey {
- ShardKey shard_key = 1; // Shard key to delete
- }
- message UpdateCollectionClusterSetupRequest {
- string collection_name = 1; // Name of the collection
- oneof operation {
- MoveShard move_shard = 2;
- ReplicateShard replicate_shard = 3;
- AbortShardTransfer abort_transfer = 4;
- Replica drop_replica = 5;
- CreateShardKey create_shard_key = 7;
- DeleteShardKey delete_shard_key = 8;
- RestartTransfer restart_transfer = 9;
- }
- optional uint64 timeout = 6; // Wait timeout for operation commit in seconds, if not specified - default value will be supplied
- }
- message UpdateCollectionClusterSetupResponse {
- bool result = 1;
- }
- message CreateShardKeyRequest {
- string collection_name = 1; // Name of the collection
- CreateShardKey request = 2; // Request to create shard key
- optional uint64 timeout = 3; // Wait timeout for operation commit in seconds, if not specified - default value will be supplied
- }
- message DeleteShardKeyRequest {
- string collection_name = 1; // Name of the collection
- DeleteShardKey request = 2; // Request to delete shard key
- optional uint64 timeout = 3; // Wait timeout for operation commit in seconds, if not specified - default value will be supplied
- }
- message CreateShardKeyResponse {
- bool result = 1;
- }
- message DeleteShardKeyResponse {
- bool result = 1;
- }
|