分布式可扩展存储系统 BaikalDB
BaikalDB是一个分布式可扩展的存储系统,支持PB级结构化数据的随机实时读写。
提供MySQL接口,支持常用的SELECT,UPDATE,INSERT,DELETE语法。提供各种WHERE过滤、GROUP BY聚合,HAVING过滤,ORDER BY排序等功能,用户可以组合实现各种在线OLAP需求,具备秒级别的亿级数据扫描聚合能力。另外,为了满足各种业务的检索需求,该系统内置全文检索需求,满足大部分快速检索的业务场景。
在虚拟化部署方面,该系统采用share-nothing的架构,可部署在容器中,也实现了多租户隔离,有自定义用户的身份识别和权限访问控制等功能。
BaikalDB 的主要特性如下:
- 全自主化的容量管理,可以自动扩容和自动数据均衡,支持自动故障迁移,无单点,很容易实现云化,目前运行在Paas虚拟化平台之上。
- 面向查询优化,支持各种二级索引,包括全文索引,支持常用的 OLAP 需求,支持层级模型。
- 兼容 mysql 协议,对应用方提供 SQL 界面,支持高性能的Schema 加列。
- 基于 RocksDB 实现单机存储,基于Multi Raft 协议(我们使用braft库)保障副本数据一致性,基于brpc实现节点通讯交互。
- 支持多租户,meta 信息共享,数据存储完全隔离。

其中
- BaikalStore 负责数据存储,用 region 组织,三个 Store 的 三个region形成一个 Raft group 实现三副本,多实例部署,Store实例宕机可以自动迁移 Region数据。
- BaikalMeta 负责元信息管理,包括分区,容量,权限,均衡等, Raft 保障的3副本部署,Meta 宕机只影响提升网站权重数据无法扩容迁移,不影响数据读写。
- BaikaDB 负责前端SQL解析,查询计划生成执行,无状态全同构多实例部署,宕机实例数不超过 qps 承载极限即可。
分布式可扩展存储系统 BaikalDB的更多相关文章
- 分布式键值存储系统ETCD调研
分布式键值存储系统ETCD调研 简介 etcd是一个开源的分布式键值存储工具--为CoreOS集群提供配置服务.发现服务和协同调度.Etcd运行在集群的每个coreos节点上,可以保证coreos集群 ...
- 一个分布式 MySQL Binlog 存储系统的架构设计
1. kingbus简介 1.1 kingbus是什么? kingbus是一个基于raft强一致协议实现的分布式MySQL binlog 存储系统.它能够充当一个MySQL Slave从真正的Mast ...
- 分布式结构化存储系统-HBase基本架构
分布式结构化存储系统-HBase基本架构 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在大数据领域中,除了直接以文件形式保存数据外,还有大量结构化和半结构化的数据,这类数据通常需 ...
- [翻译] Cassandra 分布式结构化存储系统
Cassandra 分布式结构化存储系统 摘要 Cassandra 是一个分布式存储系统,用于管理分布在许多商品服务器上的大量结构化数据,同时提供无单点故障(no single point of fa ...
- Elasticsearch是一个分布式可扩展的实时搜索和分析引擎,elasticsearch安装配置及中文分词
http://fuxiaopang.gitbooks.io/learnelasticsearch/content/ (中文) 在Elasticsearch中,文档术语一种类型(type),各种各样的 ...
- 分布式结构化存储系统-Kudu简介
分布式结构化存储系统-Kudu简介 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Hadoop生态系统发展到现在,存储层主要由HDFS和HBase两个系统把持着,一直没有太大突破. ...
- 分布式结构化存储系统-HBase应用案例
分布式结构化存储系统-HBase应用案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 为了让读者更进一步了解HBase在实际生成环境中的应用方法,在董西成的书里介绍两个经典的HB ...
- 分布式结构化存储系统-HBase访问方式
分布式结构化存储系统-HBase访问方式 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. HBase提供了多种访问方式,包括HBase shell,HBase API,数据收集组件( ...
- GoWorld – 用Golang写一个分布式可扩展、可热更的游戏服务器
GoWorld代码:https://github.com/xiaonanln/goworld Golang具有运行效率高.内存安全等优良特性,因此是非常适合用来进行服务器开发.使用Golang开发游戏 ...
随机推荐
- 微信小程序session_key和access_token傻傻分不清楚
之前一直对着文档使用特定接口, 今天闲来仔细研究一下各个接口的使用, 然后发现了session_key和access_token两个关键字意义有点重复啊? 目测都是某种钥匙来打开一扇门的, 那为什么有 ...
- docker管理工具lazydocker
docker管理工具lazydocker 简介 这是一个为了能再终端中更方便管理docker的工具 项目地址 https://github.com/jesseduffield/lazydocker 安 ...
- [转帖]Greenplum :基于 PostgreSQL 的分布式数据库内核揭秘 (上篇)
Greenplum :基于 PostgreSQL 的分布式数据库内核揭秘 (上篇) https://www.infoq.cn/article/3IJ7L8HVR2MXhqaqI2RA 学长的文章.. ...
- Django之Hook函数
Django之钩子Hook方法 局部钩子: 在Fom类中定义 clean_字段名() 方法,就能够实现对特定字段进行校验.(校验函数正常必须返回当前字段值) def clean_name(self): ...
- java中如何测试一段代码的运行时间
一.以毫秒为单位.long startTime = System.currentTimeMillis(); //获取开始时间 doSomething(); //测试的代码段 long endTime ...
- go 构造切片slice
定义切片 make([]int, 5) 长度和容量均为5 make([]int, 0, 5) 长度为0 容量为0 切片 slice2[3:5] 对slice2进行切片返回 第3 4 两个元素 不包含 ...
- Python开发【第四章】:函数剖析
一.Python函数剖析 1.函数的调用顺序 #!/usr/bin/env python # -*- coding:utf-8 -*- #-Author-Lian #函数错误的调用方式 def fun ...
- javascript 写一个ajax 自动拦截,并下载数据
<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8&quo ...
- rgba()和opacity的比较(转)
https://blog.csdn.net/u014150409/article/details/44906767
- pycharm使用pylint
# 与能查到的多数博文做法不太一样,自认为这样更简单有效 1. 下载插件 https://plugins.jetbrains.com/plugin/11084-pylint 2. 从磁盘安装插件 注意 ...