
所有节点共用一份数据,节省了存储空间; 扩容节点无需拷贝数据,扩容更快速、高效。
采用缓存融合技术,保证数据强一致
读操作(数据查询):直接在本地节点处理,流程简洁高效(①→④); 写操作(插入 / 更新 / 删除):本地执行(①→④)。
读操作(数据查询):同样本地节点处理,分担主节点读压力(①→④); 写操作:不直接执行,而是通过专属流程(①→②→③→④)转发给主节点执行,执行完成后将结果返回给客户端。
划重点!📌对上游系统来说,RW 主节点和 RO 只读节点均可接收并执行读写操作,无需区分主从节点。从底层逻辑来看,主节点负责核心写操作,只读节点专注分担读压力,通过这样的实现方式,既实现了负载分发,又由于写操作集中于一个节点,避免了分布式锁的高成本开销,非常适合TP、AP或者TP/AP混合的场景。

系统属性:系统表 pg_proc
中proreadonly
字段,用于标记函数 / 存储过程的只读属性,默认值为false
;语法新增:支持 ALTER FUNCTION/PROCEDURE funcname (NOT) READONLY
语法,灵活修改函数 / 存储过程的读写属性;执行逻辑:标记为 readonly
的函数 / 存储过程,在 RO 只读节点可本地执行,无需转发主节点,提升执行效率;非只读函数 / 存储过程,自动转发至 RW 主节点执行。例如:
CREATE OR REPLACE FUNCTION add_numbers(a INT,b INT) RETURN INTISBEGINRETURN a + b;END add_numbers;/SELECT proname, proconfig, prosecdef, proreadonly FROM pg_proc WHERE proname = 'add_numbers';--该函数为读函数,设置为只读ALTER FUNCTION add_numbers(a INT, b INT) READONLY;SELECT proname, proconfig, prosecdef, proreadonly FROM pg_proc WHERE proname = 'add_numbers';select add_numbers(2,9);



数据导入导出是业务中常见的操作,所有COPY
命令均由主节点统一执行,避免了多节点导入导出导致的数据不一致问题。例如:
CREATE TABLE copy_stdin (id int,name text,score numeric(5,2));\copy copy_stdin FROM STDIN CSV HEADERid,name,score1,Alice,98.52,Bob,873,Cathy,99.9\.SELECT * FROM copy_stdin;\copy (SELECT * FROM copy_stdin) TO '/home/wangjiajia/Workspace/Halo_Database/.build/data/Nac790/copycsv.csv' CSV HEADER;create table t_copy(id int,name varchar(20));create table t_copy2(id int,name varchar(20));insert into t_copy select generate_series(1,100000),substring('abcdefghijiklmnopqrstuvwxyz',(random()*5)::int,(random()*20)::int) as name;copy t_copy to '/home/wangjiajia/Workspace/Halo_Database/.build/data/Nac790/cpyy';copy t_copy2 from '/home/wangjiajia/Workspace/Halo_Database/.build/data/Nac790/cpyy';



本次 TAC架构的升级,不是简单的 “修修补补”,而是从底层逻辑到细节场景的全面优化:
✅ 通过智能 SQL 路由,实现了负载的合理分发,大幅提升系统性能;
✅ 通过缓存融合、核心操作主节点统一执行,保障了数据一致性;
✅ 通过多场景适配,降低了使用门槛,提升了架构的易用性。
这套架构,为大规模数据处理与高并发访问提供了坚实的技术基础,也为后续的产品优化打下了良好的铺垫。未来,我们还将持续打磨 Halo 数据库产品,不断攻克行业技术难题,为客户提供更优质、更高效的产品及服务~
文章转载自Halo Tech,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




