干货分享|互联网出海企业数据库选型问答实录
4 月 29 日,OceanBase 面向出海企业举办了一场专享会。出海企业在面临企业快速发展中常会遇到数据库的性能瓶颈、稳定性要求、数据合规、HTAP 能力、多云部署等多种挑战,出海企业如何选择一款高性价比、稳定、安全、具备 HTAP 能力并能灵活部署在现有云资源上的数据库,是 DBA 非常关心的问题。
本次活动中 OceanBase 资深解决方案架构师孟磊(花名:亦年)也回答了一些客户的问题,整理本次问答实录希望能够帮助更多出海企业了解业务发展同类问题中中的解决办法,通过 OceanBase 原生分布式数据库能够帮助更多企业稳定安全的“扬帆起航”。
拥有多年一线实战经验,帮助多个行业内客户搭建出海数据库业务。
以下是正文内容,合计 3288 字,预计阅读时间 5 分钟。
问
OceanBase 的数据压缩对于性能影响如何?
答
OceanBase 对于数据的压缩其实分成有两种:一种是以行级别去做压缩;还有一种是以列级别去做编码。什么叫编码呢?我举个例子:比如说这一列是性别,只有男和女两个值,但会有很多行。这个在 OceanBase 里,我们会用一种编码算法,只会存男和女两个值,剩下所有的行里可能只是一个指针指过去,在这种编码的技术的前提下,对于性能是没有任何影响的。以行级别的压缩来看,是以行级别又做了压缩,这个 OceanBase 有不同的压缩算法,可以不用去意识到压缩的存在,也同样可以提供非常好的性能。
问
现有数据库,直接迁移到 OceanBase,数据库是不是需要停机?
答
这个是完全不需要的,OceanBase 已经做了很多数据库的迁移,包括银行的核心系统的迁移。大概的思路是什么呢?在原来的数据库还在运行的状态,就搭建了一条实时的同步链路,把这个链路数据实时的去同步给 OceanBase,这个同步可能很久,如果数据量很大的话,可能会同步几天,当 OceanBase 端追上了原来的这个库,只要去把这个应用的连接串从原来的数据库指向 OceanBase,在非常短的一个停机窗口把这个切换给 OceanBase 即可。
很多客户会担心,如果 OceanBase 出了问题怎么办呢?我们把你的应用指向 OceanBase 之后,会做一个链路回切的动作,再把 OceanBase 的数据写回原来的数据库,这样如果有问题,可以再把这个应用切回原来的数据库就好了。整个过程的停机窗口是短的,数据库本身是不需要停机。
问
同时运行出现双写,导致数据不一致怎么办?
答
首先不建议您去做两边双写,OceanBase 的数据迁移,从项目经验来看,就分两种情况:一种情况是整个库一次性的把应用全部切到 OceanBase;还有一种按照业务模块,把部分的业务模块一点点地往 OceanBase 端去迁移。从底层的数据库来讲,是不会建议您去对同一张表两边去做双写的,因为这是需要应用端去保证的,当然现在 OceanBase 技术上可以支持做双写,然后去相互同步。
问
存储加密对于 Oracle 租户和 MySQL 租户都支持吗?
答
对两种租户都支持。因为 OceanBase 有两种兼容模式,一个是 Oracle 兼容模式,一个是 MySQL 兼容模式。
问
OceanBase 在海外 AWS 上如何去做部署?
答
国内的多云部署,可以通过 OceanBase 自己的统一入口,创建集群的时候选择 AWS 中国去创建 OceanBase 集群,在海外 AWS 上目前可以直接在 EC2 上部署 OceanBase 集群,下半年我们会上架海外 AWS 的 market place。届时,在海外的 AWS 的 market place 上,可以选到 OceanBase 的产品。
问
目前有什么类型的数据库可以迁移到 OceanBase上?
答
有挺多的。常见的主要是 MySQL 类和 Oracle 类,其他的还有 sybase、PG 等这些数据库为主。目前出海客户还是以 MySQL 会比较多一些,原生的MySQL 或者 MySQL 分库分表架构的,都可以通过我们的平台平滑的迁移到 OceanBase 集群上。
问
OceanBase 的扩缩容可以不影响业务吗?
答
是的。刚提到过 OceanBase 的扩缩容是完全是在业务在线的情况下做的,包括每年的双十一,都是在业务不停的情况下去做 OceanBase 层面的扩缩容。我们在做扩缩容的时候,是需要做一些 leader 切换的,如果有一些特别长的在途事务,有可能会回滚掉,所以建议在业务低峰期做切换,就完全没有问题。
问
OceanBase 跟 Greenplum 相比,在分布式上有什么优势?
答
Greenplum 主要是 MPP 架构面向 OLAP 场景的分析数据库。在OceanBase 中,也可以很好的去应对一些 AP 场景,在存储格式上,因为OceanBase 本身是行列混存的模式,Greenplum 是纯列存的模式,可以理解成 OceanBase 是 HTAP 数据库,我们去支持 TP 业务同时也可以支持 AP 业务。而 Greenplum 主要还是以列存去支撑一些 AP 业务。
问
Oracle 是集中式数据库,OceanBase 是分布式数据库,两者最大的区别在哪?
答
Oracle 是集中式的数据库,它是 share disk 架构,OceanBase 是一个 share nothing 的架构,最大的区别在扩展性上,你可能经常见到两个节点的 Oracle 的 RAC 集群,但是很少会看见集群会超过 8 台或者再往上的,因为超过 8 台之后,节点之间的通信成本是非常高的。基于分布式架构的 OceanBase,比如说打榜 TPC-C 的场景,单集群有 1500 多台服务器。可以理解为 OceanBase 只要机器数够多,我们就可以线性地去提供扩展的产品。
问
Oracle 数据库迁移到 OceanBase 上,原来的应用能够在 OB 上正常运行吗?需要做哪些改动?
答
绝大多数场景下,应用不需要做任何修改,因为 OceanBase 已经兼容了绝大部分的 Oracle 语法,包括它的对象。比如说您的存储过程,触发器等。我们刚发布了 OceanBase 3.2.3,您如果去看新版本的 Release Note, 会看到OceanBase 的新版本上还发布了 OceanBase 到 Oracle 只读的 DB link,所以您的应用是不需要去做任何代码层的修改,但需要替换成 OceanBase 驱动。
当然,OceanBase有一款兼容性评估工具的,可以几分钟对系统完成评估。通过评估可以了解有多少不兼容,如果没有不兼容,就可以平迁。如果要是有不兼容点的话,再来评估是由OceanBase来适配,还是我们的代码去做一些规避。但是大部分情况下我们是不需要去做任何修改的。
问
如何确保数据库能够完整地迁移到OceanBase。
答
数据库迁移主要分成两块,一个是对象迁移,一个数据迁移。这个都是由OceanBase工具一键式地去完成的。“完整的迁移”这个我理解您应该更担心的是数据校验的问题,通常如果不使用OceanBase的情况下,您迁移到另外一个数据库,可能需要自己去写一些脚本去做抽样的数据校验。OceanBase OMS 本身就带了白屏校验功能,可以不管是实时同步还是全量同步,直接在迁移完之后做白屏化的数据校验。告诉你哪些数据,哪些字段不一样,同时还会生成矫正的脚本,如果你发现不一致,直接跑这个脚本就把数据给订正掉了,不用有任何担心的。
问
如何让系统在两类库同时运行以验证测试 OceanBase 环境。
答
这是比较大的话题了,比如说:在银行做的比较大规模的项目,会怎么办?一般会同时部署两套应用,然后底层是 OceanBase,一个是原来的大机,或者是原来的 Oracle。那怎么来做验证呢?就是它在流量层会对前端的应用流量去做复制,把复制的流量打到 OceanBase 这端来,去抽样去做数据校验。
然后这样循环地去做。因为如果一旦发现数据不一致了,可能是应用的问题,可能是数据库的问题,需要去做修正,不断的做迭代来验证两端的情况。OceanBase 本身也可以提供一个负载回放,我们可以把 Oracle 的负载拿到 OceanBase 端来做回放,然后来去做软件的验证,当然验证的方式还有很多。
问
出海企业要和国外企业进行数据共享,OceanBase 提供哪些接口?
答
要看客户实际的情况,举个例子:如果在国内是阿里云,在国外是 AWS,要做这种数据的交换的话,OceanBase 的同步链路可以去做这件事。到其他的一些大数据平台,我们也可以去同步到 kafka 等等,其实有各种各样的方式。
问
如果企业在中国和国外地域同时存放数据建立数据中心,有什么可行的高可用方案?数据链路的网络延迟怎么解决?
答
国内和我们出海企业来说,我很少会见到一个客户会要求国内和海外的云去做这种跨云高可用。比较典型的是国内是 to B 业务,国外是 to c 的业务。可能更建议您通过数据同步链路,或者 OceanBase 本身有主备架构,主集群和备集群中间是通过物理维度来做同步的,可以通过这种主备集群的方式来做这种跨域云容灾等等。
问
跨多地域之间的是同步的吗?同步性能如何?
答
我们有很多客户落地的案例都是这种跨多地的,比如说典型的两地三中心还有三地五中心这种架构,我们底层是基于 multi paxos,就是这种分布式的协议来做这种同步的,这种协议最大的一个好处就是对于跨地域的网络抖动的容忍性非常好。OceanBase 本身是一个多副本,希望您的多数派的副本是尽量靠的近一些,如果多数派离得比较远的话 RT 就可以变慢,如果多数派离得很近,RT 就会很理想。同步性能其实也是取决于网络的情况,如果业务量非常大,那可能对网络要求可能就会大一些。
问
OceanBase 的心跳机制和 Oracle RAC 有什么区别吗?
答
这个不是一类的,因为 Oracle RAC 分成几种,有节点之间的心跳,还有一些磁盘心跳,还有一些本地心跳等。OceanBase 集群之间的心跳,更多的是我们之间的一个探活的心跳。Oracle RAC 这种心跳的机制会更多一些,但本质是一样的,其实都是要去探活,然后去做仲裁。本质上目的是一样的,只是在机制上是有一些差异。
问
DBLink 支持 OceanBase 到 OceanBase 必须都是 Oracle 租户吗?
答
是的,在 OceanBase 端创建 Oracle 租户就可以使用 DBLink 了。
面向时下出海的新赛道,行业必将有新的机遇发生。OceanBase 将通过稳定安全的数据库产品助力出海企业扬帆远航。
文章转载自公众号:OceanBase