文档章节

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

止静
 止静
发布于 2014/10/24 16:19
字数 1723
阅读 54
收藏 0

地位

         如果说一致性等其他理论是构建大数据组件以及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分区进行分区。

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


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



        

© 著作权归作者所有

止静
粉丝 122
博文 134
码字总数 125762
作品 0
东城
技术主管
私信 提问
如何让HDFS更高效之利用数据冷热度篇

主题简介: HDFS优化存储功能讲解 SSM系统架构设计 SSM系统应用场景分析 一、背景 随着大数据技术相关技术的发展和普及,越来越多的公司开始使用基于开源Hadoop的平台系统,同时,越来越多的...

问题终结者
2017/11/02
30
0
Hadoop HDFS概念学习系列之初步掌握HDFS的架构及原理1(一)

HDFS 是做什么的? HDFS(Hadoop Distributed File System)是Hadoop项目的核心子项目,是分布式计算中数据存储管理的基础,是基于流数据模式访问和处理超大文件的需求而开发的,可以运行于廉...

技术小哥哥
2017/11/14
0
0
如果要设计个分布式文件系统,该从哪些方面考虑?

一、概述 分布式文件系统是分布式领域的一个基础应用,其中最著名的毫无疑问是 HDFS/GFS。如今该领域已经趋向于成熟,但了解它的设计要点和思想,对我们将来面临类似场景 / 问题时,具有借鉴...

Java大蜗牛
2018/09/04
45
0
分布式文件系统设计,该从哪些方面考虑?

一、概述 分布式文件系统是分布式领域的一个基础应用,其中最著名的毫无疑问是 HDFS/GFS。如今该领域已经趋向于成熟,但了解它的设计要点和思想,对我们将来面临类似场景 / 问题时,具有借鉴...

架构师技术联盟
2018/08/28
0
0
如果要设计个分布式文件系统,该从哪些方面考虑?

一、概述 分布式文件系统是分布式领域的一个基础应用,其中最著名的毫无疑问是HDFS/GFS。如今该领域已经趋向于成熟,但了解它的设计要点和思想,对我们将来面临类似场景/问题时,具有借鉴意义...

张轲1983
2018/08/30
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring AOP-06-切入点类型

切入点是匹配连接点的拦截规则。之前使用的是注解@Pointcut,该注解是AspectJ中的。除了这个注解之外,Spring也提供了其他一些切入点类型: • 静态方法切入点StaticMethodMatcherPointcut •...

moon888
昨天
90
0
Class Loaders in Java

1. Introduction to Class Loaders Class loaders are responsible for loading Java classes during runtime dynamically to the JVM (Java Virtual Machine). Also, they are part of the ......

Ciet
昨天
78
0
以Lazada为例,看电商系统架构演进

什么是Lazada? Lazada 2012年成立于新加坡,是东南亚第一电商,2016年阿里投资10亿美金,2017年完成对lazada的收购。 业务模式上Lazada更偏重自营,类似于亚马逊,自建仓储和为商家提供服务...

春哥大魔王的博客
昨天
60
0
【自用】 Flutter Timer 简单用法

dart: void _startTime() async { _timer = Timer(Duration(seconds: sec), () { fun(xxx,yyy,zzz); }); } @override void dispose() { _timer.cancel()......

Tensor丨思悟
昨天
65
0
计算机实现原理专题--自动化(六)

目前实现的加减法器可以扩充到更高位宽的数值范围,不仅可以实现连续n个数的相加减,还可以实现其中几个数的相加减,并保存相应的结果。但是还不能应对某些场景,例如需要复用中间的临时结果...

FAT_mt
昨天
58
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部