likes
comments
collection
share

OceanBase 分布式云数据库实践

作者站长头像
站长
· 阅读数 20

1 前言

OceanBaseAlibaba 集团自主开发的一款高性能分布式国产云数据库系统,其可靠性、高性能以及可扩展性已经吸引了众多的开发者和企业关注和使用。在本文中将介绍 OceanBase 的设计架构以及使用的特点。作者是机缘巧合参加了 07.29 北京站的 OceanBase 云数据库的线下公开课,众多大佬在场提出了很多应用中的问题和难题以及疑问,官方都给予了很好的解决方案,作者在其中学习到了很多的知识,针对认识到的突出特性在这里和大家进行分享。

2 OceanBase 的特点

在目前这个万物互联的云时代,关于基础应用的软件产品越来越丰富,OceanBase 云数据经过十年磨一剑,经历了阿里内部的孵化,并在双十一的场景下进行了实战检验,已经形成了完整的产品体系,经过推广市场并进一步的进行迭代升级,目前的生态体系已经日趋完善。

OceanBase 分布式云数据库实践

如下图所示,是 OceaBase 的一些软件集成的情况,OceanBase 不仅仅是一个自研云数据库,能实现OLTP 功能,其 OLAP 的性能也是十分的出众(这也是官方所宣传的高基准测试 TPC-C 和 TPC-H)。 OceanBase 分布式云数据库实践

  • 高可靠性

OceanBase 是基于大规模分布式场景而设计的,具备高度的容错能力,采用了多副本复制机制和 Paxos 选举算法,从而确保了数据节点之间数据传输的可靠性和一致性,即使在硬件故障和网络问题时,依然能保障数据的完整性和可用性。

  • 高性能

OceanBase 针对大规模高并发场景进行了优化,具备卓越的读写性能,采用了多级缓存和数据分片技术,降低了读写延迟,另外其还支持分布式事务,保证了数据的一致性和并发性能。

  • 高扩展性

随着业务的发展,数据的规模需要不断扩展,OceanBase 提供了高效的水平扩展能力,并且实现弹性扩缩容,性能卓越。

  • 兼容性

OceanBase 目前已经兼容了大部分的 mysqloracle 数据库的语法和数据结构,另外在云上也具有对应的数据迁移工具,可以实现数据的双向迁移和同步,做到应用的无缝切换。

  • 一些不足

OceanBase 入门简单,但是学习曲线陡峭,后续需要熟悉分布式系统的理念和原理,目前社区生态较弱,目前分布式数据库是百家争鸣的阶段,都是在蓬勃发展的过程中,此外 OceanBase 的数据结构决定了其消耗的内存资源较多,得益于其优秀的数据压缩算法可以使得 硬盘资源消耗平均能降低 50% 左右。

3 数据库架构

数据库的架构,从原来的集中式的架构,到复杂业务场景的基于业务的分布式架构,再到后来使用中间件的分布式架构(例如 Cobar、MyCat、DRDS、ShardingSphere),现在来到了一个基于数据模型的分布式架构,能够屏蔽一些实现细节,真正的做到分布式(比如 OceanBase、Tidb、PolarDB、ClickHouse等)。

OceanBase 封装了其复杂的架构,应用只需要像连接 mysql 数据库一样即可。 在下图中,Zone 代表的是机房,不同的 Zone 即代表不同的机房。在每个机房中会有若干个 OBServer, 这个类似于 mysql 的应用实例, 每个实例中会有自己的分区与表空间,这个和 mysql 数据库是一致的。

不同的是 OceanBase 属于分布式数据库系统,会有主从的概念,深蓝色的节点即是主节点,浅蓝色的节点是从节点,每个 OBServer 存储的分区是不同的,在其它的 OBServer 中会有其副本,这个结构和 kafka 的架构类似。应用发起请求时,OBProxy 接收到请求进行路由,路由到的节点即协调节点,由该节点来处理数据的查询或者增改,如果是查询,则将查询语句分发到其它的节点进行执行,执行完成后再做聚合,如果是增改,则执行分布式事务,使用的分布式事务是 2PC 的模式, 这样的做法有利于分摊读写压力。

OceanBase 使用 多副本+Paxos 协议,保证了数据写入到三台机器中的至少两台,才能算是同步成功,依据此来执行其高可用和强一致性。

OceanBase 分布式云数据库实践

4 OceanBase 存储架构

不同于 mysqlB+tree 数据存储结构,OceanBase 的存储引擎结构使用的是 LSM-tree, 其中数据大致被分为基线数据(SSTable)和增量数据(MemTable)两部分,基线数据被保存在磁盘中,而增量修改的数据存储在内存中。数据库可以在业务的低峰期进行数据的合并,将数据进行合并压缩后存储到磁盘中,同时也会将一部分的数据加载到内存中,防止大量的查询到来时加剧磁盘IO操作。

OceanBase 分布式云数据库实践

5 解决的痛点

再结合 OceanBase 的官方文档深入了解后,并且了解了其它的类似云数据库产品,作者认为该云数据库解决了以下几个难题:

1 通过高存储压缩技术,极大地压缩了数据存储量,节省了磁盘空间,但是会增加一些内存的开销,考虑到其优秀的读写能力和数据分析能力,还是值得的。

2 通过Paxos算法和副本设计,可以保障数据库的高可用和高可靠性,同时也实现了便捷的弹性扩缩容,能够轻松应对其业务高峰。

3 同时支持 OLTP 和 OLAP,能够支付复杂的 SQL 并进行优化和并行计算,极大地支持了开发同学的运维工作。

4 能够兼容 Oracle 和 mysql, 这使得能够很好的实现数据迁移和备份,且实现数据源的切换。

6 数据库的使用

介绍了这么多的原理,那么这个数据库该怎么使用呢,这个十分简单,只需要像使用 mysql 数据库一样来使用即可。首先需要在阿里云申请一个 OceanBasemysql 租户实例,创建好用户账户,开通好白名单。

OceanBase 分布式云数据库实践

OceanBase 分布式云数据库实践

在数据库实例中,通过代理的公网地址和之前设置的账户密码来连接数据库,连接数据库可以通过官方提供的 OBClientNavicat16,在 java 代码中,使用 Hutool 提供的数据库连接工具进行演示,其使用方式和常用的 mysql 数据库是一致的。

OceanBase 分布式云数据库实践

7 总结

在本文中,介绍了 OceanBase 的一些特点,从架构和存储结构方面来阐释了其高性能的原因,在未来的发展趋势中,万物上云是一个终局,所以尽早的接触云产品,并掌握其使用方法,这就可以在未来赢得先手。本文中的介绍也是自己的一些浅见,在以后的学习实践中会分享更多的内容,欢迎大家关注。