一文带你了解TDSQL与OceanBase

国产数据库目前进入一个快速发展期,腾讯的TDSQL和阿里的OceanBase更是其中的佼佼者,网上的资料也不太多,感兴趣的同学跟我来一起快速了解下他们吧。本文主要从产品介绍,核心特性,产品架构三个方面进行了介绍。

一、产品介绍

TDSQL-腾讯分布式数据库(Tencent Distributed SQL,TDSQL) 是腾讯研发的一款兼容MySQL协议的国产分布式数据库,它适用于超大并发、超高性能、超大容量的 OLTP 类场景,采用主从高可用架构,提供弹性扩展、备份、恢复、监控等全套解决方案,有效解决业务快速发展时数据库面临的各种挑战。

OceanBase数据库是阿里巴巴和蚂蚁集团不基于任何开源产品,完全自研的原生分布式关系数据库软件,在普通硬件上实现金融级高可用,首创“三地五中心”城市级故障自动无损容灾新标准,具备卓越的水平扩展能力,全球首家通过 TPC-C 标准测试的分布式数据库,单集群规模超过 1500 节点。 产品具有云原生、强一致性、高度兼容 Oracle/MySQL 等特性, 承担支付宝 100% 核心链路,在国内几十家银行、保险公司等金融客户的核心系统中稳定运行。

二、核心特性

TDSQL的核心特性包括以下:

数据强一致:确保多副本架构下数据强一致,避免故障后导致集群数据错乱和丢失高可用:确保99.99%以上高可用,跨区容灾,同城双活,故障自动恢复高性能低成本:软硬结合,支持读写分离、秒杀、红包、全球同服等超高性能场景企业级安全性:数据库防火墙,透明加密,自动备份,快速恢复等,减少用户误操作/黑客入侵带来的安全风险线性水平扩展:在线无缝扩容,高效透明的分布式事务便捷的运维:完善配套设施,包括智能DBA、自助化运营管理台

OceanBase的核心特性包括以下:

高可用:每个节点都可作为全功能节点,数据以多副本分布在集群节点,实现多库多活。可扩展:可在线进行平滑扩容或缩容,对应用透明,完成对海量数据的处理。HTAP:独创的分布式计算引擎,用一套计算引擎同时支持混合负载的能力。兼容性:MySQL 业务无缝切换,支持绝大多数的 Oracle 语法。低成本:不依赖于特定的高端硬件,有效降低用户的硬件成本。低风险:完全自主研发,避免开源技术所带来的潜在合规、知识产权、SLA 等风险。

TDSQL和OceanBase产品的具体功能特性还有很多,感兴趣的同学可以自己找下相应的产品介绍,这里不做具体展开。

三、产品架构

TDSQL的产品架构如下图:

TDSQL-产品架构

运营管理平台【赤兔】支持无状态集群部署,是一个能够帮忙DBA实现TDSQL 集群自动化运营工作的“可视化运营平台。其从管理员视角,提供TDSQL的全部运维功能,可管理TDSQL集群的物理资源、调度决策系统、备份与恢复系统、可用区管理、实例管理、智能性能分析与监控告警等。

OSS是Http协议的操作接口模块,支持无状态集群部署,负责接收用户的请求,使用Http的Post协议,主要实现端口监听,解析Post body,根据用户请求调用对应的流程,封装获取的结果,返回给用户。接口作为TDSQL后台和web前台的桥梁,通过可视化管理台操纵TDSQL。

Scheduler/Manager是调度模块,支持无状态集群部署,调度集群系统帮助DBA或者数据库用户自动调度和运行各种类型的作业。 比如,数据库备份、收集监控、生成各种报表、主备切换、扩缩容、资源管理或者执行业 务流程等。

SQL引擎也叫做网关节点,主要实现了帐号鉴权,sql解析和转发,分布式计算,路由选择,统计信息,聚合函数,全局自增以及分布式事务,同时支持无状态集群部署。

Zookeeper是决策集群模块,提供配置维护、选举决策、路由同步等,并能支撑数据库节点组的创建、删除、替换等工 作,并统一下发和调度所有DDL(数据库模式定义语言)操作。

数据节点(Set)上部署MySQL数据库服务,并包含Agent状态监控模块。Agent属于旁路模块,主要承担MySQL实例的状态监控,MySQL实例通过Agent和TDSQL集群建立联系,SET包含一主N备,N+1个数据节点。

OceanBase的产品架构如下图:

OceanBase 数据库采用 Shared-Nothing 架构,各个节点之间完全对等,每个节点都有自己的 SQL 引擎、存储引擎,运行在普通 PC 服务器组成的集群之上,具备可扩展、高可用、高性能、低成本、云原生等核心特性。

OceanBase-产品架构

Zone 是一个逻辑的概念,它包含了 1 台或者多台运行了 OBServer 进程的服务器(以下简称 OBServer)。每一个 Zone 上包含一个完整的数据副本,由于 OceanBase 数据库的数据副本是以分区为单位的,所以同一个分区的数据会分布在多个 Zone 上。每个 Zone 会提供两种服务:总控服务(RootService)和分区服务(PartitionService)。其中每个 Zone 上都会存在一个总控服务,运行在某一个 OBServer 上,整个集群中只存在一个主总控服务,其他的总控服务作为主总控服务的备用服务运行。总控服务负责整个集群的资源调度、资源分配、数据分布信息管理以及 Schema 管理等功能。

OceanBase 数据库的 SQL 引擎是整个数据库的数据计算中枢,和传统数据库类似,整个引擎分为解析器、优化器、执行器三部分。当 SQL 引擎接受到了 SQL 请求后,经过语法解析、语义分析、查询重写、查询优化等一系列过程后,再由执行器来负责执行。所不同的是,在分布式数据库里,查询优化器会依据数据的分布信息生成分布式的执行计划。如果查询涉及的数据在多台服务器,需要走分布式计划,这是分布式数据库 SQL 引擎的一个重要特点,也是十分考验查询优化器能力的场景。OceanBase 数据库查询优化器做了很多优化,诸如算子下推、智能连接、分区裁剪等。如果 SQL 语句涉及的数据量很大,OceanBase 数据库的查询执行引擎也做了并行处理、任务拆分、动态分区、流水调度、任务裁剪、子任务结果合并、并发限制等优化技术。

OceanBase 数据库的分布式事务引擎严格支持事务的 ACID 属性,并且在整个集群内严格支持数据强一致性,是全球唯一一家通过了标准 TPC-C 测试的原生分布式关系型数据库产品。OceanBase 数据库通过 Paxos 协议将事务日志复制到多个数据副本来保证事务的可用性和持久性。

OceanBase 数据库的存储引擎采用了基于 LSM-Tree 的架构,把基线数据和增量数据分别保存在磁盘(SSTable)和内存(MemTable)中,具备读写分离的特点。对数据的修改都是增量数据,只写内存。所以 DML 是完全的内存操作,性能非常高。读的时候,数据可能会在内存里有更新过的版本,在持久化存储里有基线版本,需要把两个版本进行合并,获得一个最新版本。

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部