数据类型与分布式存储
================================================================================
概述:
================================================================================
数据类型
1.结构化数据
★定义:
结构化数据即行数据,存储在数据库里,可以用二维表结构来逻辑表达实现的数据;
能够用数据或统一的结构加以表示,我们称之为结构化数据,如数字、符号。传统的关系数据模型、行数据,存储于数据库,可用二维表结构表示;
结构化数据,简单来说就是数据库。结合到典型场景中更容易理解,比如企业ERP、财务系统;医疗HIS数据库;教育一卡通;政府行政审批;其他核心数据库等。这些应用需要哪些存储方案呢?基本包括高速存储应用需求、数据备份需求、数据共享需求以及数据容灾需求;
所有关系型数据库中的数据全部为结构化数据;
结构化数据:SQL, TPS(事物处理系统)较差, MySQL(主从复制、分库分表来提升性能);
2.非结构化数据
★定义及作用:
非结构化数据,包括所有格式的办公文档、文本、图片、XML、HTML、各类报表、图像和音频/视频信息等等
相对于结构化数据(即行数据,存储在数据库里,可以用二维表结构来逻辑表达实现的数据)而言,不方便用数据库二维逻辑表来表现的数据即称为非结构化数据,包括所有格式的办公文档、文本、图片、XML、HTML、各类报表、图像和音频/视频信息等等。
非结构化数据库是指其字段长度可变,并且每个字段的记录又可以由可重复或不可重复的子字段构成的数据库,用它不仅可以处理结构化数据(如数字、符号等信息)而且更适合处理非结构化数据(全文文本、图象、声音、影视、超媒体等信息)
非结构化WEB数据库主要是针对非结构化数据而产生的,与以往流行的关系数据库相比,其最大区别在于它突破了关系数据库结构定义不易改变和数据定长的限制,支持重复字段、子字段以及变长字段并实现了对变长数据和重复字段进行处理和数据项的变长存储管理,在处理连续信息(包括全文信息)和非结构化信息(包括各种多媒体信息)中有着传统关系型数据库所无法比拟的优势。
非结构化数据:k-v
3.半结构化数据
★定义及作用:
所谓半结构化数据,就是介于完全结构化数据(如关系型数据库、面向对象数据库中的数据)和完全无结构的数据(如声音、图像文件等)之间的数据,HTML文档就属于半结构化数据。它一般是自描述的,数据的结构和内容混在一起,没有明显的区分。
半结构化数据:json, xml (Document Store文档存储, mongodb、Elasticsearch)
4.数据模型
CAP理论(一致性、可用性、分区容错性)
CAP理论在互联网界有着广泛的知名度,知识稍微宽泛一点的工程师都会把其作为衡量系统设计的准则。大家都非常清楚地理解了CAP:任何分布式系统在可用性、一致性、分区容错性方面,不能兼得,最多只能得其二,因此,任何分布式系统的设计只是在三者中的不同取舍而已
★定义及作用:
高可用、数据一致是很多系统设计的目标,但是分区又是不可避免的事情
☉CA without P:
☉CP without A:
☉AP wihtout C:
分布式存储技术及应用
1.海量数据的关键环节及面临的挑战
★大数据下的关键环节:
☉海量数据的生成
☉海量数据应用
☉海量数据的管理
★大数据带来的挑战
数据采集
数据存储
数据搜索
数据共享
数据传输
数据分析
数据可视化
2.大数据如何存储
根据did you know(http://didyouknow.org/)的数据,目前互联网上可访问的信息数量接近1秭= 1百万亿亿 (1024)。毫无疑问,各个大型网站也都存储着海量的数据,这些海量的数据如何有效存储,是每个大型网站的架构师必须要解决的问题。分布式存储技术就是为了解决这个问题而发展起来的技术.
★传统存储问题:
纵向扩展受阵列空间限制;
横向扩展受交换设备限制;
节点受文件系统限制
如:NFS图片存储会遇到带宽、存储空间、请求并发等问题
★分布式存储的概念:
★分布式存储系统的特性:
☉可扩展(Scalable)
☉可靠性(Reliable)
☉低成本(Cheap)
☉易用
★分布式存储的机制分类:
☉通用分布式存储:
☉专用分布式存储:
★分布式存储的挑战
节点间通信;
数据存储;
数据空间平衡;
容错;
文件系统支持
★分布式存储的核心点
★存储一般分为两种类型:
☉集中式:
NAS:Network Attached Storage; 文件系统级别, 例如NFS, FTP, SAMBA…
SAN:Storage Aera Network; 块级别, 例如IP SAN, FC SAN…
☉分布式 :
★分布式存储和分布式文件系统:
文件系统: 有文件系统接口
存储: 无文件系统接口, 通过API访问
★分布式存储文件系统的常见实现
Google Filesystem | GFS擅长处理单个大文件 GFS+MapReduce (编程模型-运行框架-API)可以实现程序切割到多节点运行,实现分布式处理 |
Hadoop Distributed Filesystem | 根据GFS思想开发的,擅长处理单个大文件 |
ClusterFS | 擅长处理单个大文件 |
Taobao Filesystem | 淘宝开源的文件系统,擅长处理海量小文件,适用于大规模场景。 |
MogileFS | 是一个高性能的分布式存储,擅长处理海量小文件 |
Ceph | 是一个 Linux PB级别的分布式文件系统,测试中 |
MooseFS | 分布式文件系统,兼容POSIX(FUSE),可以直接挂载使用,当节点多,并发量大环境中,可扩展性差,性能一般。 |
Lustre | 一种平行分布式文件系统 |
3.具体技术及应用
-海量的数据按照结构化程度来分,可以大致分为结构化数据,非结构化数据,半结构化数据。
★结构化数据的存储及应用
☉定义:
☉存储:
◆垂直扩展:
◆水平扩展:
垂直扩展与水平扩展各有优缺点,一般一个大型系统会将水平与垂直扩展结合使用。
★非结构化存储及应用
☉定义:
☉存储:分布式存储
分布式文件系统是实现非结构化数据存储的主要技术,
·API(php,java,perl,python)
Moose Filesystem(MFS)
FastDFS
★半结构化存储及应用
☉定义:
就是介于完全结构化数据(如关系型数据库、面向对象数据库中的数据)和完全无结构的数据(如声音、图像文件等)之间的数据, 半结构化数据模型具有一定的结构性,但较之传统的关系和面向对象的模型更为灵活。半结构数据模型完全不基于传统数据库模式的严格概念,这些模型中的数据都是自描述的。
由于半结构化数据没有严格的schema定义,所以不适合用传统的关系型数据库进行存储,适合存储这类数据的数据库被称作“NoSQL”数据库。
☉存储:NoSQL 数据库
使用松耦合类型、可扩展的数据模式来对数据进行逻辑建模(Map,列,文档,图表等),而不是使用固定的关系模式元组来构建数据模型。
以遵循于CAP定理(能保证在一致性,可用性和分区容忍性三者中中达到任意两个)的跨多节点数据分布模型而设计,支持水平伸缩。这意味着对于多数据中心和动态供应(在生产集群中透明地加入/删除节点)的必要支持,也即弹性(Elasticity)。
拥有在磁盘或内存中,或者在这两者中都有的,对数据持久化的能力,有时候还可以使用可热插拔的定制存储。
支持多种的‘Non-SQL’接口(通常多于一种)来进行数据访问。