产品定位
OpenTeleDB基于PostgreSQL 17开发,PostgreSQL是一个开源的对象关系型数据库系统,以健壮性、完整性、功能强大著称。它支持复杂的查询,外键,事务完整性,MVCC。其架构由后端(处理数据存储,查询和事务)和前端(客户端应用与数据库交互)组成。
OpenTeleDB新增三大特性,XProxy、XStore和XRaft。
- XProxy是天翼云科技有限公司针对高并发、大规模连接场景下数据库性能瓶颈与运维复杂性问题所孵化的自主创新解决方案,旨在应对传统数据库在短连接高频访问下连接开销大、并发能力受限、读写分离实现复杂等挑战。该方案通过集成事务级连接池技术,实现前端连接与后端数据库连接的高效复用,显著降低连接创建与销毁的资源消耗,突破单实例连接数瓶颈。Xproxy创新性地使用代理+数据库内核插件(query_check插件)的模式,解决了在代理中依赖高开销的语法解析这一代理常见问题,进而实现了轻量级的连接上下文维护、轻量级的读写分离。
- XStore是天翼云科技有限公司针对高并发的OLTP场景、要求性能稳定的业务所设计的原位更新存储引擎。XStore通过重新设计堆表xheap、重新设计索引xbtree,每次数据更新时,直接在原位更新数据,旧数据写入Undo,从而解决了数据空间膨胀的问题。同时通过原位更新和回滚管理机制,自动vacuum不再需要扫盘回收数据页和索引页,彻底解决垃圾回收带来的性能波动。
- XRaft是天翼云科技有限公司针对传统数据库高可用架构中数据一致性风险与脑裂问题所孵化的自主创新解决方案,旨在应对主备切换时日志分叉引发全量重建、故障转移依赖外部仲裁导致系统性风险等核心挑战。该方案通过深度集成并优化Raft分布式共识算法,实现了数据库内核级别的一致性日志复制与领导者选举,从根本上保障了数据的强一致性与高可用性,并解决了传统架构中依赖外部组件(如ETCD)所带来的复杂性与单点故障问题,进而实现了无需数据重建的快速故障切换、无脑裂的自动选主以及去中心化的自管理集群。
OpenTeleDB是一款提供完整业务链路、超高性能和极致安全的企业级开源关系型数据库。基于完善的性能监控体系、专业的数据管理平台和高效的运维能力,实现全面开放,携手全球伙伴共同打造世界领先级开源关系型数据库,采用木兰宽松许可证v2发行。OpenTeleDB深度融合天翼云在数据库领域多年的研发经验,结合复杂的SQL处理的OLTP在线事务处理、复杂数据对象处理等场景需求,持续构建竞争力特性。
系统架构

OpenTeleDB数据库核心模块由连接管理模块、编译执行模块、存储引擎模块、事务管理模块组成。
- 连接管理模块:连接管理模块接受外部操作对系统的请求,对操作请求进行预处理和分发,起系统逻辑控制作用。
- 编译执行模块:编译执行模块由查询编译器、查询执行器组成,完成操作请求在数据库中的分析处理和转化工作,最终实现物理存储介质中数据的操作。
- 存储引擎模块:存储引擎模块处在系统结构的底层,它包含了操作物理存取设备的接口。
- 事务管理模块:事务管理模块由事务管理器、日志管理器、并发控制、锁管理器组成,日志管理器和事务管理器完成对操作请求处理的事务一致性支持,锁管理器和并发控制提供对并发访问数据的一致性支持。
应用场景
核心交易系统OLTP
传统单体数据库遇到的性能、容量瓶颈,业务无需选择手工分库、扩容,无需花费大量资源购买高端硬件即可支撑企事业的核心交易系统,如如电商、金融、O2O、电信CRM/计费等,应用可按需选择不同规格的实例。
物联网
随着物联网和工业 4.0 到来,几乎所有设备都携带传感器并联网,需支持大规模的终端设备追踪与管理、海量数据存储和实时分析处理。天翼云数据库支持丰富的数据类型,其高可用、弹性扩展、实时分析和查询统计能力,都可为 IoT 提供可靠的数据存储、检索和分析。此外,天翼云遍布全国的资源池能为用户提供本地化资源,极大地减少网络延时,提高物联网响应效率。
网站/app
数据库是网站搭建及应用程序开发的重要基础,用于存储和管理大量数据,提供数据持久化、高效访问和管理的功能,能为网站和应用程序提供动态内容和个性化服务。
地理信息系统
数据库具备强大的空间数据处理能力,结合地理信息系统扩展后,它能够有效地存储和处理地理空间数据。适用于地理信息系统(GIS)应用场景,如城市规划、土地管理、交通流量分析、地图应用等。天翼云数据库支持空间数据索引、空间查询、路径计算等功能,确保大规模地理数据的快速存取和分析。
企业资源规划(ERP)与客户关系管理(CRM)
在企业资源规划(ERP)和客户关系管理(CRM)系统中,PostgreSQL可以高效地处理财务、供应链、销售、库存等数据,提供事务一致性和高并发访问支持。这些系统通常需要强大的数据完整性保证和复杂查询处理能力,天翼云数据库凭借其成熟的事务机制、灵活的扩展和优化能力,能够满足各类企业的需求。
教育管理系统
教育管理系统(如学校管理系统、在线学习平台等)需要存储学生信息、课程数据、考试成绩、课程安排等数据。天翼云数据库能够高效地支持这些结构化和半结构化数据的管理。利用其强大的查询和索引功能,教育平台能够实时提供学籍管理、成绩统计、课程推荐等功能。同时,天翼云数据库支持JSON数据类型,能够灵活处理学生的个性化学习数据和课程资料。
健康医疗管理系统
在医疗健康管理系统中,天翼云数据库能够有效存储和管理患者信息、医疗记录、诊断数据、药品库存等大量数据。其事务处理和数据完整性保证,确保医疗数据的准确性和一致性,特别是在病历管理、药品跟踪、实验室数据分析等环节中,天翼云数据库能够提供高效、可靠的数据处理能力。同时,天翼云数据库也能够支持复杂查询与分析,帮助医疗机构做出精准的诊断与治疗决策。
产品特点
开源免费
OpenTeleDB是对外开源的,用户可以免费使用、修改和分发数据库,避免了高昂的商业授权费用。同时,社区活跃,文档和技术支持丰富,便于快速上手和问题解决。
丰富的数据类型与扩展性
支持丰富的原生数据类型,包括JSON、XML、数组、地理空间数据等,满足多种应用场景的需求。此外,OpenTeleDB拥有强大的扩展性,用户可以通过自定义类型、函数、索引等方式,灵活定制数据库,满足特殊业务需求。无论是结构化数据存储还是半结构化数据处理,OpenTeleDB都能提供高效的支持。
完善的事务控制
OpenTeleDB的事务隔离级别包括读未提交、读已提交、可重复读和串行化,能够满足不同业务场景对事务隔离和并发控制的要求。此外,它还支持行级锁定和表级锁定,进一步增强了高并发情况下的数据一致性。
数据完整性与约束
OpenTeleDB提供强大的数据完整性支持,包括主键、外键、唯一约束、检查约束和触发器等,确保数据在插入和更新时符合业务规则。这使得它非常适合处理需要高度数据一致性和完整性的应用。
自动化备份与恢复
OpenTeleDB支持多种备份方式,包括逻辑备份(pg_dump)和物理备份(使用WAL日志)。它还支持增量备份和时间点恢复(PITR),可以保证在数据丢失或系统故障时能够迅速恢复。
高可扩展性
虽然是单机部署,OpenTeleDB仍然可以通过分区表、复制(如流复制)等机制进行扩展,适应越来越大的数据量和日益增长的业务需求。通过这些功能,OpenTeleDB在单机模式下也能够处理大规模数据存储和高并发查询。
活跃的社区支持
OpenTeleDB拥有一个全球范围内活跃的开发者和用户社区。无论是通过官方文档、邮件列表,还是通过第三方论坛和开发者社区,用户都可以找到大量的技术支持资源。许多插件和扩展也是由社区成员开发并持续维护的。
技术特点
高稳定
XStore存储引擎通过原位更新和回滚管理机制,自动vacuum不再需要扫盘回收数据页和索引页,彻底解决垃圾回收带来的性能波动。
低膨胀率
XStore存储引擎通过原位更新技术来解决空间膨胀的问题。XStore重新设计堆表xheap,每次数据更新时,直接在原位更新数据,旧数据写入Undo,从而解决了数据空间膨胀的问题,并且不依赖垃圾回收清理。
易运维
XStore存储引擎通过优化autovacuum流程,已无需运维手动vacuum、维护autovacuum相关配置参数,显著降低了运维复杂性。
软硬件配置要求
软件配置要求
|
软件类型 |
配置描述 |
|
操作系统 |
Linux 各主流发行版(CentOS, RedHat, Ubuntu, Debian)等 |
|
工具 |
C语言编译器、相关依赖库(openssl、zlib、readline、libxml2、lz4、glibc等) |
硬件配置要求
|
项目 |
配置描述 |
|
最小内存 |
建议至少4GB内存,对于大型数据库或高并发应用,可能需要更多的内存。 |
|
CPU |
支持多核处理器的并行处理,对于高性能需求,建议使用高性能CPU。 |
|
硬盘 |
建议至少10GB硬盘空间,具体需求取决于数据库的大小和增长预期。 |
运行环境
支持的硬件平台
支持基于x86架构的硬件平台、基于ARM的硬件平台。
支持的操作系统
OpenTeleDB可以在多种操作系统上运行,包括Ubuntu、CentOS、Red Hat Enterprise Linux 和 Debian等。
数据库核心技术
事务管理与 ACID 特性
OpenTeleDB是一个符合 ACID(原子性、一致性、隔离性、持久性)特性的数据库,这意味着它能够在各种操作(例如插入、更新、删除)中保持数据的一致性和可靠性,即使在系统崩溃或断电等异常情况下,也能够保证数据的完整性。
- 原子性:事务是一个最小的执行单位,一次事务中的操作要么都成功,要么都失败。
- 一致性:在事务完成时,所有数据必须保持在一致的状态。(事务完成后吗,最终结果和预期结果是一致的)
- 隔离性:一次事务操作,要么是其他事务操作前的状态,要么是其他事务操作后的状态,不存在中间状态。
- 持久性:事务提交后,数据会落到本地磁盘,修改是永久性的。
MVCC (多版本并发控制)
OpenTeleDB使用 MVCC 来管理并发访问,这使得它能够支持高并发的事务而不会产生锁冲突。多版本并发控制(MVCC):每次数据修改都会创建一个新的数据版本,同时保留旧版本,确保读取操作不会被写操作阻塞。写操作不会影响正在进行的读操作,反之亦然。
索引技术
OpenTeleDB提供了多种索引类型,能够根据不同的查询需求优化性能。
- B-tree 索引:这是PostgreSQL默认的索引类型,适用于大多数查询。
- 哈希索引:对于需要精确匹配的查询,哈希索引提供了更高的查询性能。
- GIN (Generalized Inverted Index) 和 GiST (Generalized Search Tree):适用于全文搜索、数组、JSONB、地理空间数据等复杂数据类型的索引。
- BRIN (Block Range INdex):对于大规模的、按顺序排列的表,BRIN 索引能有效地节省存储空间,并加速范围查询。
- Xbtree索引:XStore存储引擎所使用的索引。
数据一致性与事务日志(WAL)
OpenTeleDB使用 Write-Ahead Logging (WAL) 技术来保证数据的持久性和一致性。
WAL 日志:所有修改数据库的操作都会首先写入 WAL 日志文件,再将数据写入磁盘。这保证了即使系统发生崩溃,也能通过日志文件恢复数据。
事务恢复:通过 WAL 日志,OpenTeleDB能够提供高效的崩溃恢复机制,保证事务的原子性和一致性。
分区技术
OpenTeleDB支持表分区技术,允许将大表分割成多个小的子表(分区),从而提高查询性能和数据管理的灵活性。
声明式分区:提供了声明式分区的支持,允许按范围、列表或哈希方式对表进行分区。
分区表优化:查询优化器能够自动识别并跳过不相关的分区,提高查询效率。
查询功能
支持标准 SQL:PostgreSQL 完全支持 ANSI SQL 标准,支持传统的 SQL 语法,如 SELECT、INSERT、UPDATE、DELETE 等。
复杂查询支持:支持嵌套查询、子查询、连接查询、联合查询、聚合查询等复杂 SQL 查询。
窗口函数:支持窗口函数(Window Functions),使得查询能够根据某些排序规则进行分组计算,如排名、滑动窗口等。
CTE(公共表达式):支持 WITH 子句,允许将查询结果作为临时结果集,简化复杂查询。
全文搜索:提供全文搜索功能,可以对文本数据进行高效的索引和查询。
XProxy数据库代理
针对高并发、大规模连接场景下数据库性能瓶颈与运维复杂性问题,通过集成事务级连接池技术,实现前端连接与后端数据库连接的高效复用,显著降低连接创建与销毁的资源消耗,突破单实例连接数瓶颈。实现了轻量级的连接上下文维护、轻量级的读写分离。
XStore原位更新存储引擎
针对高并发的OLTP场景、要求性能稳定的业务所设计。解决了数据空间膨胀的问题,彻底解决垃圾回收带来的性能波动。
XRaft高可用架构
实现了数据库内核级别的一致性日志复制与领导者选举,从根本上保障了数据的强一致性与高可用性,并解决了传统架构中依赖外部组件(如ETCD)所带来的复杂性与单点故障问题,进而实现了无需数据重建的快速故障切换、无脑裂的自动选主以及去中心化的自管理集群。
高级特性说明
XProxy:OpenTeleDB采用基于进程的模型,每次新连接均需创建独立的后台进程,涉及缓存分配(PlanCache等)、文件描述符占用等操作,资源消耗较高。这带来了两个问题:1.频繁地新建、销毁连接将产生较大的开销 2.受资源限制,数据库难以同时支持较大数量的连接;例如,实践中16C32G规格机器往往在数千连接时性能就已经显著下降。另外,如果应用程序需要利用备份数据库的只读能力、在主库与备库之间进行负载均衡,需要进行大量额外的设计(例如分析语句的读写属性),为应用的开发、维护带来了不便。
数据库代理旨在解决上述问题。对于问题1,数据库代理通过连接池技术实现连接复用,显著降低连接创建和销毁的开销。具体而言,代理层会缓存已建立的数据库连接(包括主库和备库的连接),当新的请求到来时,优先从连接池中分配空闲连接,而非直接创建新连接;对于问题2,数据库代理实现事务级连接池,使得不同的客户端在事务间可以共享连接,避免了连接的空闲,并将多个前端连接映射到少量后端连接。对于问题3,数据库代理可以通过一些机制识别语句的读写属性、维护数据库的心跳、延迟等状态,进而在不同的数据库节点之间实现读写分离、负载均衡。
XStore:PostgreSQL的MVCC(多版本并发控制)机制和索引设计本质上导致了存储空间膨胀。每次更新操作,都会产生一个新版本的数据,但旧版本并不会立即被删除,而是积压在数据页中,等待扫表来进行垃圾回收(vacuum)清理。索引页也存在同样的问题。PostgreSQL的垃圾回收机制会周期性地扫描数据库,这一过程对性能影响巨大。尤其是在高并发、大数据量的环境下,每次垃圾回收会导致tpmc性能波动,甚至超过40%以上,这极大影响了数据库的稳定性。
为解决上述问题,OpenTeleDB引入了XStore原位更新存储引擎。它有效解决了存储空间膨胀的问题,同时彻底解决垃圾回收带来的性能波动。XStore通过创新的原位更新技术来解决空间膨胀的问题。重新设计堆表,每次数据更新时,直接在原位更新数据,旧数据写入Undo,从而解决了数据空间膨胀的问题。同时重新设计索引,同样进行原位更新,版本信息写入Undo,索引可以独立进行可见性查找,解决索引空间膨胀问题。通过原位更新和回滚管理机制,自动vacuum不再需要扫盘回收数据页和索引页,彻底解决垃圾回收带来的性能波动。XStore通过优化autovacuum流程,已无需运维手动vacuum、维护autovacuum相关配置参数,显著降低了运维复杂性。
XRaft:在传统的高可用(HA)数据库集群中,普遍采用基于主备复制与第三方仲裁(如ETCD)的架构方案来实现故障自动切换(Failover),确保服务的连续性。然而,该传统方案在核心的一致性保障和系统可靠性方面存在固有缺陷,主要体现在以下三个层面: 1.日志复制机制存在风险。发生主备切换时,即便是采用同步备机模式,也极易因日志分叉(Log Forking)而触发全量数据重建。此过程不仅耗时漫长,严重影响业务恢复时间(RTO),更可能导致选主错误,进而引发数据丢失的重大风险;2.选主过程可能引发脑裂。传统的故障转移逻辑通常在本地执行成功后就立即通知客户端,而其他备机需要通过断连重试等机制来发现新主。在这个过程中,若原主未真正失效或出现网络分区,极易产生“脑裂”(Split-Brain)现象,即集群中同时出现两个可写的主节点,导致数据严重不一致。此外,新主也可能因无法连接足够多的备机而处于孤立状态,使得集群虽无脑裂却不可用;3.强依赖外部组件。为规避脑裂问题,传统集群必须强依赖一个外部的共识组件(如ETCD)担任仲裁者。这不仅增加了系统的复杂性,更引入了单点故障风险。一旦该第三方组件不可用,为避免脑裂,集群策略往往会迫使所有数据库实例进程自杀,导致整个服务集群完全不可用,严重降低了系统的整体服务等级协议(SLA)。
为解决上述痛点,OpenTeleDB引入了基于 Raft 共识算法深度优化的XRaft技术。在日志复制方面,XRaft实现了真正的一致性日志复制。其核心在于,它将Raft算法强一致的日志复制机制深度集成到数据库内核中,使得集群中每个节点都维护着一份与多数派达成共识的、唯一的日志序列。因此,在进行任意节点的主备切换时,绝不会发生日志分叉;在选主方面,XRaft将Raft算法的选举过程应用于数据库的选主。任何一个节点要成为新的主库,都必须先与集群中的多数派节点完成一轮投票并达成共识。这意味着,一旦选主成功,本身就宣告了新主的合法性与唯一性,并已得到多数派的认可;在第三方依赖方面,XRaft摒弃了对ETCD等第三方仲裁组件的强依赖。数据库集群自身内部通过集成的XRaft模块即可完成日志复制和领导者选举等所有需要共识的核心操作,实现了自包含的共识能力。