NOSQL之旅ITeye - AG环亚娱乐

NOSQL之旅ITeye

2019年03月13日15时11分12秒 | 作者: 凯发 | 标签: 咱们,能够,数据库 | 浏览: 2538

最近由于项目原因,研讨了Cassandra,Hbase等几个 数据库,终究决议选用HBase。在这儿,我就向咱们共享一下自己对HBase的了解。

在说HBase之前,我想再啰嗦几句。做互联网使用的哥们儿应该都清楚,互联网使用这东西,你没办法猜测你的体系什么时分会被多少人拜访,你面对的用户到 底有多少,说不定今日你的用户还少,明日体系用户就变多了,成果您的体系敷衍不过来了了,不干了,这岂不是咱哥几个的悲痛,说时尚点就叫“杯具啊”。

其实说白了,这些就是事前没有认清楚互联网使用什么才是最重要的。从体系架构的视点来说,互联网使用愈加垂青体系功能以及 ,而传统企业级使用都是比较垂青数据完整性和数据安全性。那么咱们就来说说互联网使用 这事儿.关于 这事儿,哥们儿我也写了几篇博文,想看的兄弟能够参阅我曾经的博文,关于web server,app server的 ,我在这儿先不说了,由于这部分的 相对来说比较简略一点,我首要来回忆一些一个渐渐变大的互联网使用怎么应对数据库这一层的弹性。

首要刚开始,人不多,压力也不大,搞一台数据库服务器就搞定了,此刻一切的东东都塞进一个Server里,包含web server,app server,db server,可是跟着人越来越多,体系压力越来越多,这个时分或许你把web server,app server和db server分离了,好歹这样能够敷衍一阵子,可是跟着用户量的不断添加,你会发现,数据库这哥们不行了,速度老慢了,有时分还会宕掉,所以这个时分,你 得给数据库这哥们找几个伴,这个时分Master-Salve就呈现了,这个时分有一个Master Server专门担任接纳写操作,别的的几个Salve Server专门进行读取,这样Master这哥们总算不诉苦了,总算读写分离了,压力总算轻点了,这个时分其实首要是对读取操作进行了水平扩张,经过增 加多个Salve来战胜查询时CPU瓶颈。一般这样下来,你的体系能够敷衍必定的压力,可是跟着用户数量的增多,压力的不断添加,你会发现Master server这哥们的写压力仍是变的太大,没办法,这个时分怎么办呢?你就得切分啊,俗话说“只要切分了,才会有 所以啊,这个时分只能分库了,这也是咱们常说的数据库“笔直切分”,比方将一些不相关的数据存放到不同的库中,分隔布置,这样总算能够带走一部分的读取和 写入压力了,Master又能够轻松一点了,可是跟着数据的不断增多,你的数据库表中的数据又变的十分的大,这样查询功率十分低,这个时分就需求进行“水 平分区”了,比方经过将User表中的数据依照10W来区分,这样每张表不会超越10W了。

综上所述,一般一个盛行的web站点都会阅历一个从单台DB,到主从复制,到笔直分区再到水平分区的苦楚的进程。其实数据库切分这事儿,看起来原理形似很 简略,假设真实做起来,我想但凡sharding过数据库的哥们儿都深受其苦啊。关于数据库弹性的文章,哥们儿能够看看后边的参阅材料介绍。

好了,从上面的那一堆废话中,咱们也发现数据库存储水平扩张scale out是多么苦楚的一件工作,不过幸亏技能在前进,业界的其它弟兄也在难明,09年这一年呈现了十分多的 数据库,更精确的应该说是No relation数据库,这些数据库大都都会对非结构化的数据供给通明的水平扩张才能,大大减轻了哥们儿规划时分的压力。下面我就拿Hbase这分布式列存储体系来说说。

一 Hbase是个啥东东?
在说Hase是个啥家伙之前,首要咱们来看看两个概念,面向行存储和面向列存储。面向行存储,我信任大伙儿应该都清楚,咱们了解的RDBMS就是此种类型的,面向行存储的数据库首要合适于 性要求严厉场合,或者说面向行存储的存储体系合适OLTP,可是依据CAP理论,传统的RDBMS,为了完成强一致性,经过严厉的ACID业务来进行同步,这就形成了体系的可用性和 方面大大扣头,而现在的许多 品,包含Hbase,它们都是一种终究一致性的体系,它们为了高的可用性献身了一部分的一致性。如同,我上面说了面向列存储,那么究竟什么是面向列存储 呢?Hbase,Casandra,Bigtable都归于面向列存储的分布式存储体系。看到这儿,假设您不明白Hbase是个啥东东,没联系,我再总结 一下下:

Hbase是一个面向列存储的分布式存储体系,它的长处在于能够完成高功能的并发读写操作,一起Hbase还会对数据进行通明的切分,这样就使得存储自身具有了水平 。


二 Hbase数据模型
HBase,Cassandra的数据模型十分相似,他们的思维都是来源于Google的Bigtable,因而这三者的数据模型十分相似,仅有不同的就 是Cassandra具有Super cloumn family的概念,而Hbase现在我没发现。好了,废话少说,咱们来看看Hbase的数据模型究竟是个啥东东。

在Hbase里边有以下两个首要的概念,Row key,Column Family,咱们首要来看看Column family,Column family中文又叫“列族”,Column family是在体系启动之前预先界说好的,每一个Column Family都能够依据“限定符”有多个column.下面咱们来举个比方就会十分的明晰了。

假设体系中有一个User表,假设依照传统的RDBMS的话,User表中的列是固定的,比方schema 界说了name,age,sex等特点,User的特点是不能动态添加的。可是假设选用列存储体系,比方Hbase,那么咱们能够界说User表,然后定 义info 列族,User的数据能够分为:info:name = zhangsan,info:age=30,info:sex=male等,假设后来你又想添加别的的特点,这样很便利只需求 info:newProperty就能够了。

或许前面的这个比方还不行明晰,咱们再举个比方来解释一下,了解SNS的朋友,应该都知道有老友Feed,一般规划Feed,咱们都是依照“某人在某时做 了标题为某某的工作”,可是一起一般咱们也会预留一下关键字,比方有时分feed或许需求url,feed需求image特点等,这样来说,feed自身 的特点是不断定的,因而假设选用传统的联系数据库将十分费事,何况联系数据库会形成一些为null的单元糟蹋,而列存储就不会呈现这个问题,在Hbase 里,假设每一个column 单元没有值,那么是占用空间的。下面咱们经过两张图来形象的表明这种联系:





上图是传统的RDBMS规划的Feed表,咱们能够看出feed有多少列是固定的,不能添加,而且为null的列糟蹋了空间。可是咱们再看看下图,下图为 Hbase,Cassandra,Bigtable的数据模型图,从下图能够看出,Feed表的列能够动态的添加,而且为空的列是不存储的,这就大大节约 了空间,关键是Feed这东西跟着体系的运转,各式各样的Feed会呈现,咱们事前没办法猜测有多少种Feed,那么咱们也就没有办法断定Feed表有多 少列,因而Hbase,Cassandra,Bigtable的依据列存储的数据模型就十分合适此场景。提到这儿,选用Hbase的这种方法,还有一个非 常重要的优点就是Feed会主动切分,当Feed表中的数据超越某一个阀值今后,Hbase会主动为咱们切分数据,这样的话,查询就具有了 ,而再加上Hbase的弱 性的特性,对Hbase的写入操作也将变得十分快。




上面说了Column family,那么我之前说的Row key是啥东东,其实你能够了解row key为RDBMS中的某一个行的主键,可是由于Hbase不支撑条件查询以及Order by等查询,因而Row key的规划就要依据你体系的查询需求来规划了额。我还拿方才那个Feed的列子来说,咱们一般是查询某个人最新的一些Feed,因而咱们Feed的 key能够有以下三个部分构成 userId timestamp feedId ,这样以来当咱们要查询某个 人的最进的Feed就能够指定Start Rowkey为 userId 0 0 ,End Rowkey为 userId Long.MAX_VALUE Long.MAX_VALUE 来查询了,一起 由于Hbase中的记载是依照rowkey来排序的,这样就使得查询变得十分快。


三 Hbase的优缺陷
1 列的能够动态添加,而且列为空就不存储数据,节约存储空间.

2 Hbase主动切分数据,使得数据存储主动具有水平scalability.

3 Hbase能够供给高并发读写操作的支撑

Hbase的缺陷:

1 不能支撑条件查询,只支撑依照Row key来查询.

2 暂时不能支撑Master server的毛病切换,当Master宕机后,整个存储体系就会挂掉.



关于数据库 的一点材料:
http://www.jurriaanpersyn.com/archives/2009/02/12/database-sharding-at-netlog-with-mysql-and-php/

http://adam.blog.heroku.com/past/2009/7/6/sql_databases_dont_scale/


暂时先共享这么多,今后在项目运用中,遇到问题再共享给咱们.

版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表AG环亚娱乐立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章