OceanBase 是淘宝研发的一套分布式 NoSQL 数据库系统。具体它是什么、怎样实现的,可以参考李震老师(花名楚材)的《OceanBase介绍》和杨传辉老师(花名日照)的《Oceanbase – 千亿级海量数据库》。这里我只是谈一下自己的感想,如有谬误,敬请指正。
OceanBase 相较于其它分布式存储系统,有一个特性是支持跨行跨表事务。这个特性太明星了,让几乎所有其它系统黯然失色。但实现这个是有代价和局限 的,OceanBase 只能使用单机接受更新,也就是说它的 UpdateServer 只能有一个(或者准确地说,一组)。由于 UpdateServer 失去了扩展性,OceanBase 的应用必须建立在单机能够满足增量更新和查询性能需求(查询可以通过从机部分缓解)的前提下(或者硬件性能的增长快于性能需求的发展)。为满足这一点,需 要对软件和硬件都进行很好的优化,幸运的是从淘宝核心系统团队成员的文章来看淘宝应该不缺这样的专家,也不缺买设备的钱。值得一提的是,每个公司看来都有 自己的基因,看到 OceanBase 我脑子里就浮现出淘宝数据库架构中单机 Oracle 挂一堆 MySQL 的景象,何其相似啊!
阳振坤老师(花名正祥)在《淘宝海量数据库之二:一致性选择》这篇文章中说 OceanBase 是支持强一致性的。如果 UpdateServer 没有从库的话, 能够很容易理解。但考虑到 UpdateServer 从库也提供读服务,且 UpdateServer 之间使用 binlog 进行同步,那么还能否保证强一致性这一点我比较怀疑。也许会有其它的辅助机制来保证这一点,例如在 MergeServer 上做一定的策略。
在高可用性方面,对 RootServer 的说明较少,不清楚 OceanBase 有没有实现 UpdateServer 宕机后的 Master 选举。由于使用 binlog 同步,可能宕机恢复方面还是有一些风险的。
将 MergeServer 和 ChunkServer 部署在一起是个很好的选择,这样查询时能够利用一定的局部性。但除非根据业务需求非常精妙地部署,否则不可避免需要请求其它 ChunkServer 上的数据。我不知道它的查询是 MergeServer->(UpdateServer, ChunkServer0, ChunkServer1...),还是 MergeServer->(UpdateServer, MergeServer0, MergeServer1)。不同的模式有同的优缺点,如果 ChunkServer 只做存储的话,查询的过滤、合并应该是在 MergeServer 上做的。如果选用第一种方式请求,ChunkServer 间传输的数据没有过滤和合并,数据量较大;如果选用第二种方式请求,UpdateServer 的压力可能会被放大,视 MergeServer 封装的功能而定。
OceanBase 的介绍中没有提到 Chunk 或者 ChunkServer 是否分主从,也没有提到整体更新机制。考虑到更新是以批量方式合并到 Chunk 中,也许为了简化,Chunk 或者 ChunkServer 只是互备,没有主从。为了保证 ChunkServer 合并 UpdateServer 上冻结/转储数据时查询的正确性,可能用两阶段提交,不过我想仍然是一个很复杂的过程。
相关推荐
淘宝数据库架构演进历程及OceanBase架构PPT课件.pptx 本资源摘要信息涵盖淘宝数据库架构演进历程的三个阶段,包括早期单机式的 MySQL 使用方式、Mysql 迁移到 Oracle 并升级到小型机、高端存储,最后到异构数据库...
OceanBase 数据库技术架构介绍 OceanBase 是一款 100% 自主知识产权的国产数据库,商业数据库,通用关系型数据库,原生分布式数据库。2010 年项目启动,2018 年发布 2.0 版本,直击金融业务架构转型痛点。OceanBase...
"OceanBase 1.0 分布式技术架构" OceanBase 1.0 作为金融级分布式数据库一直备受瞩目,该数据库架构的设计和实现对整个金融行业的影响非常大。在本文中,我们将详细介绍 OceanBase 1.0 的分布式技术架构,从技术...
《OceanBase设计规范与数据架构指南》是一份详细介绍OceanBase分布式关系型数据库系统的设计理念、架构及优势的文档。OceanBase是由阿里巴巴/蚂蚁金服研发的一款创新性数据库系统,旨在结合传统关系型数据库的功能性...
Python链接Oceanbase数据库通常涉及到使用特定的驱动程序,这些驱动程序是Java编写的,因为Oceanbase的客户端库主要以Java接口提供。在Python环境中,我们可以借助Jython或使用桥梁技术如`jdbc4py`来调用Java的jar包...
OceanBase系统的架构从模块划分角度可以分为四个主要部分: 1. 主控服务器(RootServer):负责整个数据库系统的全局管理和协调,包括集群状态监控、故障检测、资源调度等核心功能。 2. 更新服务器(UpdateServer...
### OceanBase基本原理与架构详解 #### 一、OceanBase简介与发展历程 ##### OceanBase概述 OceanBase是一款由中国阿里巴巴集团及旗下蚂蚁金服自主研发的关系型数据库管理系统。它基于分布式架构设计,利用普通的PC...
3. **OceanBase架构**:深入理解OceanBase的三副本架构,包括全局时间线、Zookeeper协调、计算节点(CN)与存储节点(DN)的角色与交互,以及故障恢复机制。 4. **安装与部署**:学习如何在不同的操作系统环境下...
本教程将详细介绍如何在银河麒麟操作系统上安装OceanBase 3.1,这是一款分布式数据库系统,特别适合处理大规模数据并发和高可用性需求。 首先,确保你的银河麒麟操作系统是最新的。通过运行系统的更新工具,检查并...
《OceanBase-V4.2.1数据库文档》是一份全面介绍OceanBase数据库系统V4.2.1版本的综合资料,包含了多个方面的内容,旨在帮助用户深入理解和使用这个分布式数据库系统。以下是根据提供的文件名提炼出的相关知识点: 1...
1. **分布式架构**:OceanBase采用了无中心的分布式架构,所有节点地位平等,没有单点故障,能够实现故障自动切换和数据自动恢复,提高了系统的高可用性。 2. **多版本并发控制(MVCC)**:OceanBase采用MVCC来支持...
OceanBase架构主要有以下特点: 1. 全对等节点的无共享分布式数据库:OceanBase数据库由多个节点组成,每个节点均有自己的SQL引擎和存储引擎,各自管理不同的数据分区,完全对等。 2. 数据分区:OceanBase数据架构...
《OceanBase 1.0:分布式技术架构》深入解析 OceanBase 1.0是一款分布式数据库系统,以其可扩展性、高可用性和低成本而著称。该系统在数据存储、分布式查询以及高可用性方面展现出独特的优势,尤其适用于大规模、高...
【淘宝数据库架构演进历程及OceanBase架构】的讲解涵盖了淘宝数据库从早期的单一MySQL到复杂的分布式架构,再到采用自研的OceanBase数据库的过程。淘宝作为电商巨头,其数据库架构的发展历程反映了应对高并发、数据...
《OceanBase架构演进与双11实践》深入解析了OceanBase数据库的发展历程以及在阿里巴巴双11大促中的实际应用。OceanBase是一款由蚂蚁金服研发的分布式数据库系统,其设计目标是实现高可用性、高并发和可扩展性。 自...
《OceanBase Developer Center 4.1.0-bp Win64JRE 安装指南》 OceanBase Developer Center是一款专为开发人员设计的集成开发环境(IDE),它提供了丰富的功能,便于开发、测试和管理OceanBase数据库系统。4.1.0-bp...
OceanBase导入导出工具用法 OceanBase是一款开源的关系型数据库管理系统,具备高性能、高可用性和高扩展性的特点。OceanBase提供了多种数据导入和导出工具,包括obdumper、obloader、obimport等。本文将详细介绍...
OceanBase在架构上可以划分为四个主要模块:主控服务器RootServer、更新服务器UpdateServer、基准数据服务器ChunkServer和合并服务器MergeServer。这四大模块协同工作,实现了数据的高效管理和事务处理。其中,主控...