[开源自荐] 我亲手写的 “单机分布式一体化” 数据库 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
powerman
V2EX    推广

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

  •  
  •   powerman 2024-07-18 09:09:21 +08:00 1756 次点击
    这是一个创建于 529 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    项目仓库地址


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

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

    单机分布式一体化


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

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

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

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

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

    !()[https://camo.githubusercontent.com/d4c037131dc5b818c126a8ba21022e70a148b03bc351d0b9005894d407b6c169/68747470733a2f2f63646e2e6e6c61726b2e636f6d2f79757175652f302f323032342f706e672f34343139363137322f313732313138363534393437312d35653332313534632d343334332d343630352d613431342d6463366433333062646164382e706e673f782d6f73732d70726f636573733d696d616765253246666f726d617425324377656270253246726573697a65253243775f313234342532436c696d69745f30]

    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 相关资料进行查阅。

    3 条回复    2024-07-18 09:47:45 +08:00
    vitovan
        1
    vitovan  
       2024-07-18 09:38:23 +08:00
    如果标题没错的话,您是阳振坤本人?
    Ibrahimovic
        2
    Ibrahimovic  
       2024-07-18 09:47:03 +08:00
    @vitovan 哈哈,是蚂蚁集团 OceanBase 团队的研发同学吧,阳老师带着大家一起写的~
    powerman
        3
    powerman  
    OP
       2024-07-18 09:47:45 +08:00
    @Ibrahimovic 我是收费发帖 服务
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1076 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 23:29 PVG 07:29 LAX 15:29 JFK 18:29
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86