大数据体系【概念认知】系列-2:存储以及副本策略

原创
2014/10/24 16:19
阅读数 132

地位

         如果说一致性等其他理论是构建大数据组件以及NosqL的纽带,那么存储也就相当于我们的数据结构了,依据特定的数据结构,赋予相应的算法,其内涵就是在特定的存储以及副本策略之上,来实现整体的处理模型。

存储总论

传统的关系类型的数据库往往采用二维表结构来存储和处理数据,整体原因。是关系数据库模型比较简单,同意实现,逻辑清晰。

在数据规模比较大的时候,如上的表结构可以简单的满足业务需求,可是在海量的数据挑战的今天,二维表结构在一些应用的场景之上不再那么高效和灵活。于是从数据库模型的角度,NOSQL提出了全新的模型。

沿用了全新的设计

NoSql  通常不需要基于关系模型的固定表结构,通常而言,也就是无模式可言。

Nosql 的存储类型

    1:键值类型 

        1.1.1:数据模型

            键值存储模型最主要的思想就是来自于hash表,在hash表之中会有一个特定的key和一个特定的value。

             key  -> value 

             纯粹的一个keyvalue结构弱化了数据的结构,通常,你只需要get ,set这样的简单操作即可。keyvalue的设计在海量的数据处理之中,最大的特点是在于模型简单,易于实现,非常适合通过key对于数据进行查询和修改操作。

        

              但是,一旦对于数据的批量,批量更新操作,keyvalue在效率之上处于明显的劣势,同样,由于模型的设计也不支持特别复杂逻辑的数据操作。

            1.1.2:实例 

                                   Redis,Voldemort

            1.1.3:应用场景        

                                   内存类型的缓冲,主要用于处理打数据的高访问负载,也用于一些日志系统

            1.1.4:优缺点

                                    迅速的查找,数据无结构化,通常只是被当成字符串亦或者二进制的数据。

    

      

      2:列式类型

     2.1.1:数据模型

                        简单的来说,我们的传统数据库是按照 “行”来存储,而我们的列方式的数据库是按“列”来存储的。

                按行,还是按列,同一列的数据会尽可能的存储在同一个硬盘的”页“之中,大多数的硬盘页在数据库之中都被抽象为一个“列族”的概念,列族嘛,就是将多个列合并为一个小组,而从宏观上来看,列族有点类比 keyvalue之中的value。


                这类的数据模型比较适合数据分析和数据仓库这类需要迅速查找且数据量大的应用。            

             2.2.2:实例

                   Cassandra 和Hbase

       2.2.3:应用场景

                     分布式的文件系统,将同一列数据存储在一起。

       2.2.4:优缺点

                        迅速的查找,可扩展性强,更容易的进行分布式的扩展。

    3:文档类型

    

       3.1.1:数据模型

                  其主要的以 JSON或者类JSON格式的文档来进行存储,是具有语义的

             3.2.2:实例

                   MongoDB

       3.2.3:应用场景

                     web应用

       3.2.4:优缺点

                       数据的要求并不严格,不需要预先定义结构,value指向的是一个结构化数据。

                      可以做实时的查询,并缺乏统一的查询语法


数据分区与放置策

在之前的数据存储的模型之上,我们还要考量数据的分区和放置的策略,主要的考量如下:

1:分区的意义

            任何的事情出现都必有其存在的前提,条件,和理由。分区技术,简单来说,就是一种分而治之的技术,他可以用来很方便的处理超大类型的表,通过将大表和索引分成可以管理的小块,避免将每一个表都作为一个大的,单独的对象来进行管理,为大量的数据提供了可伸缩性的可能。 

               

            分区所带来的好处如下所示:

                1.1.1:改善可管理性

                           对于分区带来的最本质的特征就是:分区的粒度相对而言的变小了。满足了之前关系数据库系统时代“划分并控制”的措施,通过分区,维护操作可集中于表的特殊部分。比如,你只需要备份一部分的分区而不是全量的数据了。

                            1.1.2:改善性能

                            1.1.3:改善可用性


                        

                1.1.2:改善可管理性

                            对于数据库进行了一些分区的处理以后,通过对于分区的处理,通过对于分区的特别优化,我们还能够使用分区技术其他的许多优点,

                        1.1.2.1: 分区的连接           

                                     在两个表的连接的过程之中,可以将两个表连接在一起,并且这两个表都在连接按键上分区。智能化的分区可以将大型的拆分为小的连接。

                        1.1.2.1:分区的裁剪      

                               分区的Partitioning Pruning,也就是说最有效的通过分区改善性能的方法,好比你在Hive抑或是 impala之中,在选取列的时候,必须过滤掉不必要的分区。

                        1.1.2.1:并行执行更新和删除

                        分区能够并行执行更新,删除和合并语句,在访问不同的分区的数据库对象的过程之中,可以并行执行查询语句和插入语句。                        

                              

  

             通常而言,表使用   “分区key“ 分区,分区key是确定某一个行所在的分区的一组列,存在”范围分区“,”列表分区“,”hash分区“以及”组合分区“。


       


2 :范围分区

    2.1:每一个分区由一些列分区的key来指定,用途最广的就是按照时间范围来分区。

3:列表分区

   3.1:列表分区,每个分区由一列分区key指定,列表分区适用于一些列的离散value

4:hash分区

  3.3: hash分区,hash算法应用于分区key和value,适用于分区数据基本均匀分布的情况

5:范围-hash组合分区。

      5.1:也就是范围和hash分区技术的组合,表首先进行范围的分区,然后每一个范围之内再单独的通过hash分区进行分区。

分区操作可以并行执行,提高的数据的可用性。当部分数据由于故障或其他的原因不可用的时候,其他的分区不会受影响。


要注意 :分区对于应用是透明的。



        

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部