1.历史背景
在Java Web项目中,常常使用免费开源的MySQL数据库存储业务数据,按业界经验MySQL单库超过多大数据体量,或单表超过几百万条数据后就会出现查询变慢的情况,单实例数据库只能扩展物理资源(CPU、内存),来提升查询速度,但物理资源也有上线,而且成本高昂,业务在大数据量时往往考虑分库分表方案,让数据分散到多服务器上,用多服务器资源来提升查询速度,此方案需要手动部署分库分表中间件,需要手动在多台服务器上部署数据库实例,为提升可用性和吞吐量往往还要配置读写分离,扩容缩容困难,分片数后期很难扩展(数据难自动迁移),这些情况对运维有很高的要求,来对比一下常用的MySQL方案:
- 单库:一个数据库实例,只能提升服务器硬件资源来提高数据库性能
- 读写分离:一主多备,提升了可用性和吞吐量,但表数量大时无法提升单个请求的查询速度,且备库数据可能存在延迟或不一致情况,常用中间件:ShardingSphere-JDBC。
- 分库分表:多主多备,需部署分库分表中间件,设置分片规则,如把一张大表按(hash、范围)规则水平分割成多个表,以减少单表数量,来提升查询速度,逻辑上是一个表,物理上是多库多表,把查询sql分发到不同分片的数据库实例上,最后中间件聚合多个分配结果,常用中间件:ShardingSphere-Proxy。
- 原生分布式:原生支持分库分表,当成一个数据库实例使用,对使用者透明,可自动均衡和迁移数据,具有高可用,水平扩展、容灾、方便扩缩容、运维简单、一些指标可视化监控等
tips:https://shardingsphere.apache.org/
2.那有没有一种分布式关系型数据库能解决单表数据量大、水平扩展、容灾-容忍少量节点故障,且自动迁移数据、部署运维简单、扩缩容方便,安全可靠,背靠大厂?
考察了多个分布式数据库,最终选择OceanBase作为技术储备,原因是:因其生态强大、文档丰富、银行和大厂在使用(有安装部署工具、云平台运维监控、开发工具、导入导出工具、SQL诊断工具、数据迁移服务等)
- OceanBase:https://www.oceanbase.com,https://github.com/oceanbase/oceanbase
- PolarDB-X:是阿里云自主研发的高性能云原生分布式数据库产品,网址:https://polardbx.com,https://polardbx.com/document?type=PolarDB-X
- TiDB:是 PingCAP 公司自主设计、研发的开源分布式关系型数据库,网址:https://cn.pingcap.com
- TenDB Cluster:是腾讯游戏CROS DBA团队提供的MySQL分布式关系型数据库解决方案,网址:https://tendbcluster.com/book-cn/
- Greenplum:PostgreSQL的分布式版本,https://cn.greenplum.org/
3.OceanBase简介
OceanBase 数据库是一款阿里完全自研的企业级原生分布式数据库,连续多年支撑双十一活动,创新推出“三地五中心”城市级容灾新标准,自研一体化架构,兼顾分布式架构的扩展性与集中式架构的性能优势,用一套引擎同时支持 OLTP 和 OLAP 的混合负载,具备数据强一致、高扩展、高可用、高性价比、高度兼容 Oracle/MySQL、稳定可靠等特征。
核心特性
- 高可用:“三地五中心” 容灾架构方案,支持同城/异地容灾,可实现多地多活,满足金融行业 6 级容灾标准(RPO=0,RTO< 8s),数据零丢失。
- 兼容性:高度兼容 Oracle 和 MySQL,社区版只兼容MySQL,提供自动迁移工具
- 水平扩展:实现透明水平扩展,支持业务快速的扩容缩容,同时通过准内存处理架构实现高性能。支持集群节点超过数千个,单集群最大数据量超过 3PB,最大单表行数达万亿级。
- 低成本:基于 LSM-Tree 的高压缩引擎,存储成本降低;原生支持多租户架构,集群可创建多个租户,租户间独立业务提供服务,租户间数据隔离。
- 安全可靠:完全自主研发,代码级可控,自研单机分布式一体化架构,大规模金融核心场景 9 年可靠性验证;完备的角色权限管理体系,数据存储和通信全链路透明加密,支持国密算法,通过等保三级专项合规检测。
- HTAP:提供一站式 OLTP (Online Transactional Processing)、OLAP (Online Analytical Processing),可当轻量级数仓使用,参考:https://open.oceanbase.com/blog/7499489568
详细介绍请看官网
官网地址
- 官网地址:https://www.oceanbase.com
- 文档地址V4.2.1:https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000217921
- 软件下载:https://www.oceanbase.com/softwarecenter
- 软件下载(镜像仓库):https://mirrors.aliyun.com/oceanbase/community/stable/el/7/x86_64/?spm=a2c6h.25603864.0.0.34a0130dfVJgW5
- GitHub开源:https://github.com/oceanbase/oceanbase
- 版本发布记录:https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000247670
OceanBase 数据库提供企业版和社区版
- 企业版:高度兼容 Oracle/MySQL,要付费。
- 社区版:只兼容 MySQL,开源、免费。
4.哪些公司在用OceanBase?
支付宝、银行(交通银行、北京银行、中国太平洋保险)、中国移动、中国联通、携程、快手等都在使用