/
smychkov
/
SStorage
Обзор
Документация
Войти
/
smychkov
/
SStorage
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/server/storage.proto
76 строк
2 KB
Андрей
feat: top N keys + scan stream (range/top/all) with pagination
14 июл 2026, 12:56
14 июл 2026, 12:56
56c6264
Код
Авторство
О чём код?
//============================================================================ // SStorage gRPC API //============================================================================ // Key-value API (как в Bigtable): bytes key → bytes value. // Операции: Put, Get, Delete, Scan (streaming), Stats, Flush, Compact. //============================================================================ syntax = "proto3"; package sstorage; service Storage { rpc Put(PutRequest) returns (PutResponse); rpc Get(GetRequest) returns (GetResponse); rpc Delete(DeleteRequest) returns (DeleteResponse); rpc Scan(ScanRequest) returns (stream ScanResponse); rpc Stats(StatsRequest) returns (StatsResponse); rpc Flush(FlushRequest) returns (FlushResponse); rpc Compact(CompactRequest) returns (CompactResponse); } message PutRequest { bytes key = 1; bytes value = 2; } message PutResponse { bool ok = 1; } message GetRequest { bytes key = 1; } message GetResponse { bool found = 1; bytes value = 2; } message DeleteRequest { bytes key = 1; } message DeleteResponse { bool ok = 1; } enum ScanMode { SCAN_RANGE = 0; // диапазон [from_key, to_key], поле limit (обратн. совместимость) SCAN_TOP = 1; // первые top_n в лексикопорядке SCAN_ALL = 2; // все живые записи } message ScanRequest { bytes from_key = 1; // RANGE bytes to_key = 2; // RANGE uint32 limit = 3; // RANGE: 0 = дефолт 1000 (как раньше) ScanMode mode = 4; // default 0 = SCAN_RANGE uint64 top_n = 5; // TOP: первые N; 0 => пустой поток } message ScanResponse { bytes key = 1; bytes value = 2; } message StatsRequest {} message StatsResponse { uint64 memtable_size = 1; uint64 immutable_count = 2; repeated uint64 level_records = 3; repeated uint64 level_file_counts = 4; uint64 total_records = 5; } message FlushRequest {} message FlushResponse { bool ok = 1; } message CompactRequest {} message CompactResponse { bool ok = 1; }