// Copyright 2023 CeresDB Project Authors. Licensed under Apache-2.0. // Manifest of engine syntax = "proto3"; package manifest; import "cluster.proto"; import "engine/schema.proto"; import "engine/time_range.proto"; // Meta update for a new space message AddSpaceMeta { uint32 space_id = 1; string space_name = 2; } // Meta update for a new table message AddTableMeta { uint32 space_id = 1; uint64 table_id = 2; string table_name = 3; // Schema of the table schema.TableSchema schema = 4; // Options of the table TableOptions options = 5; cluster.PartitionInfo partition_info = 6; } // Meta update for dropping a table message DropTableMeta { uint32 space_id = 1; uint64 table_id = 2; string table_name = 3; } // Meta data of a sst file message AddFileMeta { // Level of the file uint32 level = 1; // Id of the file uint64 file_id = 2; uint64 max_seq = 3; time_range.TimeRange time_range = 4; uint64 size = 5; uint64 row_num = 6; StorageFormat storage_format = 7; repeated string associated_files = 8; } // Meta data of the file to delete message DeleteFileMeta { // Level of the file uint32 level = 1; // Id of the file uint64 file_id = 2; } // Meta data of version edit to table message VersionEditMeta { uint32 space_id = 1; uint64 table_id = 2; uint64 flushed_sequence = 3; repeated AddFileMeta files_to_add = 4; repeated DeleteFileMeta files_to_delete = 5; uint64 max_file_id = 6; } // Meta data of schema update. message AlterSchemaMeta { uint32 space_id = 1; uint64 table_id = 2; // New schema of the table. schema.TableSchema schema = 3; // Previous schema version. uint32 pre_schema_version = 4; } // Meta data of schema update. message AlterOptionsMeta { uint32 space_id = 1; uint64 table_id = 2; // New options of the table. TableOptions options = 3; } // Meta update data to persist message MetaUpdate { oneof meta { AddTableMeta add_table = 1; VersionEditMeta version_edit = 2; AlterSchemaMeta alter_schema = 3; AlterOptionsMeta alter_options = 4; DropTableMeta drop_table = 5; } } message Snapshot { uint64 end_seq = 1; AddTableMeta meta = 2; VersionEditMeta version_edit = 3; } // Options of a table that need to persist message TableOptions { // Segment duration in ms. uint64 segment_duration = 1; bool enable_ttl = 2; uint64 ttl = 3; uint32 arena_block_size = 4; uint64 num_rows_per_row_group = 5; CompactionStrategy compaction_strategy = 6; CompactionOptions compaction_options = 7; UpdateMode update_mode = 8; uint32 write_buffer_size = 9; Compression compression = 10; // If sampling_segment_duration is true, then the segment duration // is still unknown. bool sampling_segment_duration = 11; StorageFormatHint storage_format_hint = 12; } enum UpdateMode { Overwrite = 0; Append = 1; } message StorageFormatHint { oneof hint { // Auto means the storage format is automatically determined by CeresDB and // its value have no specific meaning. int32 auto = 1; StorageFormat specific = 2; } } enum StorageFormat { Columnar = 0; Hybrid = 1; } message CompactionOptions { // Options for STCS float bucket_low = 1; float bucket_high = 2; uint32 min_sstable_size = 3; uint32 min_threshold = 4; uint32 max_threshold = 5; // Options for TWCS TimeUnit timestamp_resolution = 6; } enum TimeUnit { NANOSECONDS = 0; MICROSECONDS = 1; MILLISECONDS = 2; SECONDS = 3; MINUTES = 4; HOURS = 5; DAYS = 6; } enum CompactionStrategy { DEFAULT = 0; SIZE_TIERED = 1; TIME_WINDOW = 2; } enum Compression { UNCOMPRESSED = 0; LZ4 = 1; SNAPPY = 2; ZSTD = 3; }