粗看WASP :Alibaba的海量数据分布式数据库探索
作者:刘旭晖 Raymond 转载请注明出处
Email:colorant at 163.com
BLOG:http://blog.csdn.net/colorant/
== 是什么 ==
Wasp是阿里集团开发的基于HBase的一个数据库方案,其根本出发点是仿效Google的Megastore,“在HBase系统上不牺牲线性拓展能力的同时又能提供跨行事务、索引、SQL的功能”
== 架构原理 ==
其设计原理可以参考Megastore的相关论文,Wasp自己的相关设计使用文档可以在下面两个地方找到
https://github.com/alibaba/wasp/wiki/Chinese
http://wenku.baidu.com/view/c85f50d984254b35eefd345c.html
Megastore框架的核心思想是将数据分割成不同的EntityGroup,EntityGroup的数据备份是跨Datacenter存放的,在EntityGroup内部提供完整的ACID支持,保证数据写操作在所有数据中心的同步备份。
从具体实现上来看,Wasp并没有实现Megastore在跨Data Center方面的相关设计思想,仅仅只是采用了Entity Groups这样的方案来划分和管理数据。
Megastore在很多设计上都是围绕超大规模的数据的并发这样一个核心思想,比如Entity Groups的跨地域备份,读数据时非主从式的平等节点由Paxos动态选主的思想等等,都是为了保证读操作时的去中心化,以提高性能,而Wasp的架构方案更像HBase自身的方案,存在FMaster节点和FServer节点,通过Zookeeper确定当前FMaster,每个FServer管理若干Entity Groups,基本还是固定的主从中心式的。在Entity Group的使用上,Wasp则基本保留了Megastore的原始设计,通过RedoLog / MVCC / 跨Entity两阶段提交等方式解决并发读写的一致性问题
== 具体实现 ==
Wasp使用Alibaba自己的Druid项目实现SQL语法的解析,采用Netty和Protobuf构建服务器内部通讯协议框架。
Wasp的数据主要映射为HBase上的4类表,全局的 _FMETA_ 表记录所有Wasp表的meta信息,每个wasp表数据对应的entity表,相同Entitygroup Key管辖下所有表对应的Redolog表,以及索引表。
目前Wasp对SQL的语法支持还很简陋,以Query为例,仅支持Equal condition和索引上的Compare类Range condition。对Int等数据结构的支持,在比较操作中也存在bug,其它稍微复杂一点的SQL语法,如UDF,limit, having, group by, join, order by 等等操作目前都是没有的,当然这可能也取决于wasp的具体应用场合,或许只需要最简单的Equal和特定字段上的Range condition类的查询。
此外从SQL Plan实现的角度来看,似乎目前只是简单的转换为Get/Put/Delete等HBase操作,以HBase的角度来看是纯粹的客户端应用程序,没有使用任何Hbase RS端的能力,如filter,coprocessor等等加以优化,因此如果要实现Aggregation类的功能,在性能上大概会受到比较大的影响。
== 总结 ==
总体看来,Wasp并不能提供一个海量数据跨数据中心的解决方案,其规模受单个Hbase cluster所限,因此一定程度上来说和MegaStore所解决的目标问题还是有很大差距的,Wasp更多的是在HBase之上提供一个增强的方案,提供简单的SQL接口,和跨行事务的支持。如果光从SQLon HBase的角度上看,与SaleForce的Phoenix有很大的差距。但在跨行事务支持方面还是优于Phoenix的 (Phoenix的在事务方面的支持几乎完全取决于HBase自身的能力),代码功能等目前看来还不成熟,还要看将来的发展情况。当然,从代码框架,设计模式等方面上看,作者的编程功力还是很不错的,要学习。
我只是快速的了解了一下Wasp的实现,自身能力有限,所以不保证以上看法的准确性,如有偏差还请指正。
粗看WASP :Alibaba的海量数据分布式数据库探索相关推荐
- 主流关系型分布式数据库选型与设计实战
一.数据库从集中式到分布式的演进 1.1.传统单机数据库 从狭义概念来讲,"数据库"就是OLTP场景的关系型单机数据库,诸如老牌的Oracle.DB2等商业数据库以及开源产品MyS ...
- 干货,分布式数据库在金融核心场景的落地实践|腾讯云数据库
金融行业作为国民经济的命脉和枢纽,对底层数据库的能力要求在不断提高.具有高性能.可扩展.高可用等特性的分布式数据库是金融行业数字化转型的重要支撑. 金融企业如何在不同的应用场景下,做好分布式数据库的选 ...
- 《程序员》9月:视频直播技术实践 分布式数据库华山论剑
本期<程序员>封面报道,带来了以下实践分享: 视频直播技术实践 视频直播服务如何平稳应对热门节目带来的瞬时大流量访问?提升直播体验的互动功能具体如何实现?手机与服务器端各有哪些技术难点?熊 ...
- 什么是分布式数据库?小学生都能看懂。
自从互联网进入了 web2.0 时代以来,数据库作为核心的底层基础设施软件也经历了蓬勃的发展期,从早期的单机关系型数据库到NoSQL 再到如今的 NewSQL,数据库领域不管是技术还是场景都发生了巨大 ...
- 【演讲实录】分布式数据库海量数据存储和实时查询实现与应用
节选自OSC深圳源创会 演讲速记 分享嘉宾:巨杉数据库技术总监 乔国治 巨杉数据库,核心产品是SequoiaDB巨杉数据库.是我们的团队完全从零开始研发的.巨杉数据库是商业数据库,同时我们本身也将 ...
- 【巨杉访谈】分布式数据库如何实现海量数据实时查询
巨杉数据库高访问量.海量数据业务背后的基础系统架构是如何设计和优化的?分布式数据库是如何做到数据的透明水平.垂直拆分,实现海量数据实时查询的? 访谈实录 1.巨杉数据库作为国内第一款自主研发的 New ...
- php 分布式数据库查询,分布式数据库 · Thinkphp5.0完全开发手册 · 看云
# 分布式数据库 ThinkPHP内置了分布式数据库的支持,包括主从式数据库的读写分离,但是分布式数据库必须是相同的数据库类型. 配置`database.deploy` 为1 可以采用分布式数据库支持 ...
- 分布式数据库中间件对比总结MyCat Cobar Sharding-jdbc
分布式数据库中间件对比总结(1) 目前数据库中间件有很多,基本这些中间件在下都有了解和使用,各种中间件优缺点及使用场景也都有些心的.所以总结一个关于中间件比较的系列,希望可以对大家有帮助. 1. 什么 ...
- Spring Cloud Alibaba 高级特性 分布式事务:Alibaba Seata 如何实现分布式事务
本讲咱们要解决分布式事务这一技术难题,这一讲咱们将介绍三方面内容: 讲解分布式事务的解决方案: 介绍 Alibaba Seata 分布式事务中间件: 分析 Seata 的 AT 模式实现原理. 分布式 ...
最新文章
- endnote修改正文中参考文献标注_请问endnote里,如何把正文中插入参考文献处的格式由数字转为(作者,年份)?感恩!...
- 一杯水怎么测试_一杯水就能鉴别翡翠真假的高招
- C++ puts函数 打印字符串很方便
- linux查看网卡硬件 lsw,无人值守网络安装Linux系统
- 开源.NET(C#、VB.NET、J#等)脚本执行引擎(利用CodeDOM)
- select样式调整
- linux 用命令安装软件,Linux安装软件的三种常用命令
- flash cs4 和 flex builder 联合开发
- FreeBSD安装MySQL
- android截屏方法是黑屏,Android截屏SurfaceView黑屏问题的解决办法
- centos安装stress安装失败_Linux压力测试软件Stress使用指南
- 项目开发过程中业务流程图的绘制
- html圣诞节网页制作,圣诞节快乐——为你的网页添加一个可爱的HTML5圣诞节雪人!...
- Linux(1)- 服务器核心知识、Linux入门、VMware与centeos安装、远程连接linux、linux基本命令使用...
- LMV324MTX单通道,双通道和四通道通用低电压轨至轨输出运算放大器TI
- P1119 灾后重建(基础Floyd原理的理解和运用)
- boot版本是什么 cent os_CentOS下载及版本选择-CentOS LiveCD、LiveDVD和BinDVD区别
- 你的语言模型有没有“无法预测的词”?
- win10卸载程序时提示找不到xxx.msi文件
- PTA基础题考点汇总