V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
powerman
V2EX  ›  推广

[开源自荐] 我亲手写的 “单机分布式一体化” 数据库

  •  
  •   powerman · 135 天前 · 820 次点击
    这是一个创建于 135 天前的主题,其中的信息可能已经有所发展或是发生改变。

      很多数据库使用者都觉得分布式数据库这个大家伙安装麻烦、配置要求高、需要大量资源。我们花了十几年的时间,从零开始写了一个叫做 OceanBase 的 “单机分布式一体化” 纯自研数据库,已经经历过支付宝和淘宝多年双十一极端业务场景的验证,在这里推荐给大家。

      OceanBase 社区版本代码开源,兼容 MySQL 的语法和功能,存储成本只有 MySQL 的四分之一到六分之一。既支持个人用户在 2C 6G 的小规格的单机环境下使用,也支持水平动态扩展成分布式的部署模式。

    🍎 项目仓库地址

      OceanBase 是开源的分布式数据库,仓库地址是: https://github.com/oceanbase/oceanbase

      欢迎对数据库感兴趣的朋友们在 github 上关注我们的开源项目,也欢迎将大家对 OceanBase 的任何问题在 github 的项目中提出 issue ,我们会及时跟进大家的 issue 并对问题进行解答。

    🌰 单机分布式一体化

      帖子标题里提到了一个大家比较陌生的词汇“单机分布式一体化”,那究竟什么是单机分布式一体化?以及单机分布式一体化解决了数据库使用过程中的什么问题?

    alt text

      对于很多的企业,都有一个从小到大的过程,在业务从小到大的过程中,很多厂商采用的方案往往是这样子的:

    • 一开始因为数据量比较小,用的往往是一台小规格的机器,然后部署一个 MySQL ;
    • 当数据量变大的时候,可能会选择去换成 Oracle ;
    • 如果业务量再持续变大,单机 Oracle 也支撑不了,需要一定的扩展性,那就会用 Oracle 的 RAC 或者对 MySQL 分库分表。但是大家知道,Oracle RAC 的扩展性是非常有限的,当 RAC 的节点数量达到十几个的时候,他再往上加节点性能就很难提升了,MySQL 分库分表更是有诸多使用上的限制以及中间件的单点瓶颈问题。
    • 那实在不行,后面可能会选择一些小型机配上 db2 。

      这样的路径存在很大的问题,一个是扩展性仍然是有天花板的,并不是能无限扩展的。第二个问题是,在业务量变大的过程中,每做一次数据库的重新选型和架构的调整,对上层的业务来说,都是一次翻天覆地的变化。

      OceanBase 就是想给大家提供一条更加简单的路线,我们在底层把数据库的扩展性做好,让上层业务可以专注于自己的业务研发。

    alt text

      OceanBase 从单机部署变更到分布式部署的过程中:

    • 可以选择类似于 MySQL 的主备库架构;
    • 如果用户考虑主备库 RPO 不为 0 ,可能因为有延时带来丢数据的问题,那可以从主备库动态升级到 1-1-1 三副本的高可用模式;
    • 如果用户觉得主备库、三副本这些东西掌握起来比较复杂,那么也可以继续使用单机模式,因为 OceanBase 在单机模式下也具有非常好的垂直扩展能力。
    • 如果业务规模继续增长,比如从一个中型的业务变成了一个大型,甚至超大型的业务,可以把 1-1-1 这种三 zone 三节点的部署模式(每个 zone 中都会有一份完整的数据副本),进一步扩展成最右边这种 2-2-2 甚至 n-n-n 的部署模式。当然 zone 的数量不限于 3 个,也可以继续扩展,比如对于支付宝这种对高可用要求非常高的超大型的业务,蚂蚁主站用的部署模式是三地五中心,也就是有五个 zone ,五份副本。

      当业务量持续增长,部署方式从单机向分布式进行变更时,因为 OceanBase 是原生的分布式数据库,所以可以完全消除传统单机数据库分库分表带来的各种痛点和使用上的限制。无论是垂直扩展,增加单机规格,还是水平扩展,增加集群内的节点数量,都不需要停机停服,对上层业务无感。用户可以自始至终都无须关心底层数据库选型上的变化。

    🍑 快速上手

      OceanBase 社区版的语法和功能完全兼容 MySQL ,存储成本却只有 MySQL 的四分之一,还支持水平扩展,在不同的部署方式之间进行灵活的变化。

      大家可以参考 https://open.oceanbase.com/quickStart 中的 “使用 obd demo 命令快速部署 OceanBase 数据库” 部分,只需要在 linux 环境下执行以下几条命令,即可快速体验 OceanBase 数据库(单机版)。

    # 若您的机器可以连接网络,可执行如下命令在线下载并安装 all-in-one 安装包。
    bash -c "$(curl -s https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/download-center/opensource/oceanbase-all-in-one/installer.sh)"
    source ~/.oceanbase-all-in-one/bin/env.sh
    
    # 执行以下命令,快速部署 OceanBase 数据库。
    obd demo
    
    # 使用 OBClient 客户端连接到 OceanBase 数据库。
    # 通过 2881 端口直连数据库。
    obclient -h127.0.0.1 -P2881 -uroot@sys -Doceanbase -A
    # 通过 ODP 代理访问数据库。
    obclient -h127.0.0.1 -P2883 -uroot@sys -Doceanbase -A
    

      大家如果对 OceanBase 有任何疑问,或者在 OceanBase 的使用过程中遇到任何问题,都可以在我们的社区论坛 https://ask.oceanbase.com/ 中发帖进行提问,会有专业的技术同学对大家的问题及时进行解答。

      最后附上一个 OceanBase 官网文档的地址: https://www.oceanbase.com/docs/oceanbase-database-cn 供大家对 OceanBase 相关资料进行查阅。

    1 条回复
    powerman
        1
    powerman  
    OP
       135 天前
    不是重复刷帖,而是昨天发的帖子图片没加载出来,过了编辑时间,见谅
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2534 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 46ms · UTC 04:58 · PVG 12:58 · LAX 20:58 · JFK 23:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.