目录
1995年,以互联网的普及为标志迎来第二次信息化浪潮。
1.存储设备容量的不断增加使得个人数据越来越多,有相片、文档、视频、音乐;也使得企业的数据越来越多。
而且目前的存储技术,使得存储空间的增加,又会导致我们数据量不断增加。同样的,我有足够空间的话,就可以一直存储,不用删除。
2.2005年开始, 摩尔定律已经开始失效了。但是CPU又出现了双核,多核,性能还是在不断的提升,对数据的处理能力也在不能提升。
3.同时,网络代理也在不断的增加,
那么这些技术支撑还不足以迎来大数据时代的到来,一个非常重要的因素是数据产生方式的变革。
第一阶段:运营式系统阶段
2000年附近,第二阶段:用户原创内容阶段。包括:微博,博客,让每个网民都成为自媒体,这时数据产生的速度要远远大于之前的第一阶段,因为每个网民都成为了数据发布的主体。
那么这些还是不足以真正让大数据时代到来。
真正让大数据时代到来,是因为第三阶段:感知式系统阶段,也就是物联网的大规模普及。因为物联网的最底层是感知层,比如RFID,摄像头,传感器等等这些设备,每时每刻都在不断发布数据。有了这些物联网设备的存在,才使得数据产生的方式超出了人的控制。
数据量大,意味着每两年就会增长一倍,而且最近两年产生的数据量之和就相当于我们人类之前产生的所有数据量之和。
并且,预计到2020年,全球将总共拥有35ZB的数据量,相比于2010年,数据量将增长近30倍。
大数据主要解决海里数据采集,存储,分析和计算的问题。
- 海量:数据存储单位有bit,byte,KB,MB,GB,TB,PB,EB,ZB,YB,BB,NB,DB;
- .高速:处理速度快;
- 多样:结构化数据和非结构化数据两大类;
- 低价值密度:传统数据基本都是结构化数据,每个字段都是有用的,价值密度非常高。大数据时代,越来越多的都是非结构化和半结构化数据,比如网站访问日志,里面大量内容都是无用的,真正有价值的比较少,虽然数据量比以前大了N倍,但是价值密度确实低了很多。
大数据业务流程分析:
存在问题:
因此,最开始的解决思路:分离和解耦代码。
存在问题:
所以,单点数据存储已经不符合我们的数据存储了。
提供一个基本的思路,几种解决方案:
大数据中比较经典的架构模式:主从。
master的功能:
- 存储集群的节点信息和状态;
- 集群之后,如果发现当前的性能不行,就需要扩容,把集群扩大,使得伸缩性更好一些。
- 监听节点信息和磁盘状态;
- 元数据信息,调度读写请求;
从环境来讲,需要一个做“主”,一个做“从”。
1.假设我们现在写文件数据时,每一个文件都写还是写一个?
每个节点都写的话,首先数据冗余,浪费空间。但是如果其中一个节点故障,还能继续用,可靠性好。而且读数据的请求可以访问任意节点,增强访问。如果只写一个节点,一旦故障则无法使用。
但是我又不想每个节点都写,两者合二为一,可以让数据均匀分布在不同节点,统一来提供服务。
那么就,分布式数据存储,数据存储节点一般是要让数据均匀分布在不同节点,并且数据节点进行备份,增强可靠性。
2.现在,如果要存储,那么我们怎么知道把数据存储在了哪个节点?数据是往“主”存储,还是“从”?------->基本数据存储依靠节点路由操作
很多软件中都有这个概念,比如Redis,如果要存储“abc”,有3个机器,通过计算来算出应该存储在哪个机器上,能够让我们的数据均匀的放在不同的机器当中。
3.假如把数据给了“主”之后,那么后续,备份怎么办?备份数据谁来写?
用户把数据写入蓝色文档中,两个黄色文档是用来备份的。 那么新的备份数据应该写在哪个黄色文档中?
数据备份分两种情况:
那么,分布式设计存储从系统的架构设计上,要考虑到我们数据存储的架构模式,又要考虑集群本身的架构模式。
从系统的架构设计上,从性能的角度来看,master不会成为系统的瓶颈,比较现在服务器处理的性能是很高的。
4.master不会成为系统的瓶颈,所以瓶颈在哪呢?
其实瓶颈对于当前来讲,在于主从节点。
假如现在有一个主节点,2个从节点(备份节点)。写入主节点和主节点写出到从节点的流量不一样,这样的话,性能就会成为系统的瓶颈。那么我们需要考虑到这种问题,等到kafka的时候再说。
虽然只有一个master,但是master突然宕机是有可能的。那么我要考虑高可用的话,就需要多节点的master。
数据仓库和其他数据集合,数据库的区别,主要在于数据模型的建立和使用。
数据仓库需要将数据按照不同的层次进行划分,给不同的部门使用,实现不同的需求。
每个企业对数仓的分层没有固定的标准,有的分为4层,有的分为5层。
表命名:
维度:分析事物的指标。
比如空间模型,维度就是指一维空间(用长度的指标来形容线),二维空间(用长度和宽度的指标来形容面),三维空间(用长度、宽度和高度的指标来形容)等等。
维度表:将相关的分析指标用一张表来表示。
比如订单包括时间:哪年哪月哪天(Y-M-D),但是如果我想知道是哪周,就不能从中得知,那么我在做统计该年第一季度的订单总数,就很困难了。
------>时间维度表:第几周第几季度
在维度建模的基础上又分为三类:
事实表:用来记录历史信息,可以报错大量的业务度量数据。
比如我今天买了一双鞋,明天也买了一双鞋,后天买了一双鞋。但是我买的这双鞋的颜色,型号是什么?男款/女款?花了多少钱?这就属于维度了。
所以真正在处理数据的时候,维度表和事实表是结合在一起使用的。