Setats 集群
一个独立部署和管理的 Setats 服务实例,由 Manager 节点和 Worker 节点组成。用户的所有数据读写与管理操作均在集群内完成。
Manager
Setats 集群中的管理节点,负责全局的元数据管理、分桶调度与节点协调。Manager 支持多副本高可用部署,主节点(Active)与备节点(Standby)之间通过状态同步实现自动故障切换,确保集群管理服务不中断。
Worker
Setats 集群中的工作节点,以分桶(Bucket)为粒度承担实际的数据读写与存储。每个 Worker 管理若干个桶,负责数据的写入、合并、缓存与持久化。
数据库(DB)
集群下按照数据结构来组织、存储和管理数据的逻辑单元。用户可以在数据库中创建、更新或删除表。数据库用于对表进行分组管理,遵循层次结构:集群 > 数据库 > 表。
表(Table)
Setats 中用户数据存储的基本单位,以行和列的形式组织。表存储在特定的数据库中。Setats 支持基于主键的 INSERT、UPDATE、DELETE 操作,以及 Partial Update(部分列更新)、Aggregation(预聚合)等多种 Upsert 语义。
分区(Partition)
根据用户指定的分区键,将表的数据逻辑上划分为更小、更易管理的子集。支持按时间、业务维度等灵活分区,便于数据生命周期管理与查询裁剪。分区列中的每个唯一值(或值的组合)定义一个独立的分区。当未定义分区列时,表的全部数据属于同一个默认分区。
分桶(Bucket)
在分区内部,按主键哈希进一步将数据水平拆分为多个桶。桶是 Setats 中数据分布、调度与迁移的最小粒度。桶的数量可以按表进行配置。每个桶独立管理自己的数据文件与索引,由一个 Worker 节点负责处理。
缓冲区(Buffer)
每个桶在 Worker 本地维护的数据缓冲区,采用行存格式存储最近写入的热数据。缓冲区承担即时合并时历史记录的高效查询,同时支持低延迟的主键点查与实时流读。缓冲区中的数据会定期异步写入远程存储进行持久化。
远程存储文件(Remote Data File)
缓冲区中的数据定期刷写到远程存储(COS/HDFS),以列存格式(Parquet)持久化为数据文件。这些文件存储表的全量历史数据,适用于离线批量分析与扫描查询场景。
Changelog
Setats 在数据更新过程中自动生成的变更日志。每次数据变更都会产生包含全字段的 UpdateBefore(更新前快照)和 UpdateAfter(更新后快照)记录,完整记录每条数据的插入、更新和删除操作。下游流计算引擎(如 Flink)可以实时订阅 Changelog 进行增量处理。
删除向量(Delete Vector)
Setats 采用 Merge-on-Write 策略,在写入时通过 Lookup 操作定位旧版本记录的存储位置,并生成删除向量将其标记为失效。查询时只需根据删除向量过滤已失效的记录,无需再执行耗时的合并操作,大幅降低读取端开销。