目录
产品简介
baikaldb 是百度推出的一个分布式增强型结构化数据库系统。它支持 pb 级结构数据的顺序和随机实时读/写。baikaldb 兼容 mysql 协议,支持 mysql 风格的 sql 方言,用户可以通过它无缝地将数据存储从 mysql 迁移到 baikaldb。
baikaldb提供mysql接口,支持常用的select,update,insert,delete语法。提供各种where过滤、group by聚合,having过滤,order by排序等功能,用户可以组合实现各种在线olap需求,具备秒级别的亿级数据扫描聚合能力。另外,为了满足各种业务的检索需求,该系统内置全文检索需求,满足大部分快速检索的业务场景。
此外baikaldb还支持一些比较特色的功能,比如full text索引,hyperloglog,bitmap功能,但由于百度内部分词库不开源,开源几乎没有现成好使的分词库,目前open出来只是最简单的单字切词。
从2018年上线以来,baikaldb已部署1.5k 数据表,数据规模达到600 tb,存储节点达到1.7k 。
核心特性
-
全自主化的容量管理:可以自动扩容和自动数据均衡,应用无感知,很容易实现云化,目前运行在opera paas平台之上
-
高可用,无单点:支持自动故障恢复和迁移
-
面向查询优化:支持各种二级索引,包括全文索引,支持多表join,支持常见的olap需求
-
兼容mysql协议,支持分布式事务:对应用方提供sql界面,支持高性能的schema和索引变更
-
支持多租户:meta信息共享,数据存储完全隔离
在系统研发过程中,baikaldb以业务需求为导向规划快速迭代,在业务使用中深度打磨优化,随业务成长而成长,关键功能的时间节点如下:
系统架构
在虚拟化部署方面,该系统采用share-nothing的架构,可部署在容器中,也实现了多租户隔离,有自定义用户的身份识别和权限访问控制等功能。
baikaldb基于rocksdb实现单机存储,基于multi raft协议(braft库)保障副本数据一致性,基于brpc实现节点通讯交互,其中
baikalstore 负责数据存储,用region组织,三个store的三个region形成一个raft group实现三副本,多实例部署。store实例宕机可以自动迁移region数据。
baikalmeta 负责元信息管理,包括分区、容量、权限、均衡等, raft保障的3副本部署,meta宕机只影响数据无法扩容迁移,不影响数据读写。
baikaldb 负责前端sql解析,查询计划生成执行,无状态全同构多实例部署,宕机实例数不超过qps承载极限即可。
相关资料
-
baikaldb github地址 :https://github.com/baidu/baikaldb/
-
baikaldb gitee地址 :https://gitee.com/baidu/baikaldb/
-
baikaldb 官方博客 :https://my.oschina.net/baikaldb
-
命名由来
baikaldb命名来自于lake baikal(世界上容量最大的淡水湖-贝加尔湖),贝加尔湖是世界上容量最大的淡水湖,相当于北美洲五大湖水量的总和,超过整个波罗的海水量,淡水储量占全球20%以上。西伯利亚总共有336条河流注入贝加尔湖。冬天的贝加尔湖畔,淡蓝色的冰柱犹如分布式数据库一列列的数据密密麻麻但是有井然有序,令人惊艳。