Time-series Table Protocol - like Iceberg, but built for time-series, streaming, and multi-tenancy.
- Fast file registration. Adding new files won't conflict.
- Easy operation. No Hadoop or ZooKeeper required.
- Easy integration. No complicated implementation needed — just gRPC.
- Multi-tenancy. No conflicts across tenants.
You can see examples in examples directory
Refer to api.proto for details.
Use AddFiles to register new files.
sequenceDiagram
Writer->>API Server: gRPC(AddFiles)
API Server-->>Writer: Done
Use CompactFiles to compact existing files after acquiring the lock.
sequenceDiagram
Writer->>API Server: gRPC(AcquireFileLock)
API Server-->>Writer: 🔒 File Locked
Writer->>API Server: gRPC(CompactFiles)
API Server-->>Writer: Done
Locks are per file, so other streams and files outside the lock can still be updated.
sequenceDiagram
participant Stream1
participant Stream2
participant Stream3
participant API Server
Stream1->>API Server: gRPC(AcquireFileLock)
API Server-->>Stream1: 🔒 File Locked
activate Stream1
Note left of Stream1: 🔒 Compacting files
Stream1->> API Server: gRPC(AddFiles)
activate Stream1
Note left of Stream1: Other files remain unlocked
API Server-->>Stream1: Done
deactivate Stream1
Stream2->>API Server: gRPC(AddFiles)
API Server-->>Stream2: Done
Stream3->>API Server: gRPC(AddFiles)
API Server-->>Stream3: Done
Stream1->>API Server: gRPC(CompactFiles)
deactivate Stream1
API Server-->>Stream1: Done
