近日看了一个三方技术网站关于2021年6月国产数据库流行度的排名榜,TiDB、Oceanbase、PolarDB位居榜上前三甲。当然,这个排名榜不一定绝对的客观和真实,但也代表了国内企业在国产分布式数据库选型的一种趋势。作为IT行业的老兵,无论你身在什么行业,位居什么高度,我们都应该透过这个黄榜,来看看导致这一趋势的根本原因在于什么?究竟是这个产品的哪些特性帮助它实现了三甲之名?希望经验者能在以下几个方面提供这些产品可以立于不败之地的特性:
1. 横向扩展的能力以及稳定性如何?
2. 金融交易级的高可用和容灾要求是否可以达标?
3. 底层的存储引擎是什么类型?用户是否可以选择更适合业务类型的存储引擎?
4. 并发控制与读写性能之间是如何均衡处理的?
5. 可以包容的数据类型是什么(表、健值、文档...)?
6. 是否适合大规模的云环境,包括部署及运维的自动化兼容程度?
7. 特定的应用场景和通用的应用场景都能达到什么样的性能指标?
8. 针对MySQL、Oracle之类数据库的兼容性,迁移的难易度如何?
在以上诸多方面,其他的国产数据库果真相差很多么?比如说GaussDB、TDSQL、SequoiaDB等等。相信用实实在在的技术特性、参数以及实践案例描述排出来的名次或者报告更可靠,愿大家各献薄力,完善一份属于技术人内心当中的“技术榜”。
这个三方技术网站每月的国产数据库的排名是流行度排名,评价体系有待商榷,而且很容易给我人误导认为是产品“好与坏”的排名,国产数据库目前来看都是出于起步期,本身问题也不少,还是需要静下心来打磨产品,自封的没意思,等真正把O替下来之后再说。
TDSQL支持在线扩展,计算和存储紧耦合,扩展原则:2分片->4分片->8分片->。。。->128分片及以上,扩展速度较快(速度接近于物理复制,主要取决于物理磁盘和网络),实测和实际应用稳定性高
TDSQL组件高可用,同城机房可以同时接入业务,异地灾备通过日志进行同步,能够满足金融级高可用和容灾,已经有银行核心系统应用案例。
TDSQL存储引擎基于MySQL的InnoDB,计算和存储在同节点,目前性能和稳定性均较高,暂时不支持使用其他存储引擎。
TDSQL并发控制基于业务设计和数据分布情况,尽可能规避锁以提升读写性能。
TDSQL目前仅支持结构化数据,不建议存储非结构化数据。
TDSQL存储和计算紧耦合,在云环境中部署性能没有物理机单独部署性能高;TDSQL目前部署和运维自动化程度较高,尤其是运维,提供管理、监控、性能分析、同构/异构数据同步等各种自动化运维功能。
TDSQL在银行核心环境中高频交易混合场景,单节点可以达到1500TPS(150000QPS)左右,备注,2019年7月在张家港农商行新核心系统实测数据;
TDSQL与MYSQL兼容性高,内核基于MySQL,迁移难度低;
TDSQL与Oracle兼容改造较多,迁移难度高;
收起国产数据库目前正处于百家争鸣、百花齐放的战国争雄时代,还谈不上谁主沉浮。
国产数据库的实现技术五花八门,但归根结底,不外乎两大技术路线:数据库访问中间件和原生分布式数据库。
1)数据库访问中间件。中间件不保存数据,只负责数据的分片、数据汇总和事务的一致性等功能,后端的关系型数据库负责数据的处理,因此,大都用于数据量大、并发要求高的OLTP场景;
2)原生分布式数据库。因重构数据库系统,原生支持分布式事务处理与数据切分。在实际使用时,应根据业务场景,从数据的分片策略、数据的更新方式、数据的存储结构、日志类型、数据的一致性技术等方面进行数据库的选型。如对于写敏感的业务,分片策略可以选择Hash方式,保证数据的平衡分布;数据更新方式可以选择Append-Only方式,提高写性能;分析型业务,在数据库选择时,数据的存储结构可选择列存,数据如需回滚,应支持undo log等。
因此,从技术实现上看,就没有一款可以包打天下的数据库,在实际使用时,应根据业务场景和业务特点,选择合适的数据库。当然,在实际选型时,还应关注产商的研发能力、以及实施的案例等。
国产分布式数据库(关系型数据库,OLTP)在国内形势一片大好,特别是在信创大背景的驱动下,很多的金融企业已经开始在边缘业务中采用国产数据库开始替换。
1.达梦数据库在电力行业推广的很好;
2.腾讯云TDSQL目前在银行也推广的也很不错!
当然,替换的过程可能很多同学看来太慢,但是如果我们看数据库发展的历史,其实替换的速度并不慢,我们也不要期待,国产分布式数据库一下就能替换核心系统,最终还是需要从业务诉求的角度出发,同时也需要衡量数据库人员的技能等关键因素。
相信国产分布式数据库正在迎来发展的春天。
TiDB、Oceanbase 是分布式数据库,其中 Oceanbase 也分mysql版和oracle版
mysql版,社区版mysql版的多节点mgr架构在mysql版的oceanbase中也有对应的架构,底层也是paxos算法,有好多自己的工具,比如迁移工具,同步工具,运维平台等等
PolarDB 是云原生关系型数据库PolarDB 有三个独立的引擎 ,包括oracle,mysql,pg版;
oceanbase和腾讯的tdsql在金融领域有很多在使用,tidb在互联网领域例如58同城有大规模使用;
达梦主要在电力行业,例如国家电网,人寿保险,银行也很多;兼容oracle最好,支持oci接口,
oracle有的功能,架构,比如rac,ogg,dg,达梦都有对应的产品,名字不同而已;政府行业很多达梦的产品,业内口碑还不错,属于老牌db了,达梦db负责人说,达梦db的市值大约500亿;
像 GaussDB 了,有pg版的和mysql版的,比如想迁移到oracle或者其他db,都有自己的迁移工具,运维平台,具体语句兼容,语法兼容都需要现场真实测试;
像 SequoiaDB 这newsql的一种,底层自己写的存储引擎,类似monodb那种,其他的不太清楚,据说也挺优秀的产品;
总之国产数据库选型,选架构都是根据业务来的,不同的场景有不同的组合;现在稳定性,性能不是问题,关键在你用的如何;
收起SequoiaDB、GoldenDB、TDSQL、OceanBase 基本属于MYSQL系,GaussDB 基本属于PG系;扩展能力可参照原生DB扩展能力。
SequoiaDB 设计的初衷和在金融行业的案例应该胜过其他。
SequoiaDB、OceanBase 相对来讲是属于自研存储引擎,更适合设计初衷场景;GaussDB(继承 PostgreSQL)、GoldenDB & TDSQL(继承 MySQL)更兼顾通用场景。
采用乐观锁:SequoiaDB
采用悲观锁:OceanBase、GaussDB
表、JSON 大部分都支持,但是基本以二维表为主。
云环境的部署及自动化程度优秀者当属 OceanBase,因为它有先天环境优势。
看看谁愿意提供一个POC报告。
收起除了达梦DB,其他的都会面临Oracle特有SQL语义及函数的改造问题。MYSQL相对容易,因为多数都是基于MySQL的。
作为一名AI助手,我可以为您提供以下关于国产数据库在银行行业的应用方面的建议:
总的来说,国产数据库在银行行业中的应用需要具备高可用、高稳定性、高并发、多种存储引擎、多种数据类型、云环境兼容性、特定应用场景和通用应用场景的能力,并且需要具备良好的兼容性和迁移难易度。在这些方面,TiDB、Oceanbase、PolarDB等国产数据库相对其他国产数据库更具优势。