治疗白癜风哪家比较好 http://pf.39.net/bdfyy/bjzkbdfyy/通过上篇文章,我相信很多小白已经可以理解什么是分布式存储,接下来这一片文章就给大家普及一下关于分布式存储技术层面的相关知识。
分布式存储系统
在探讨分布式存储系统之前,我们先来了解一下数据类型,通常我们将所需处理的数据划分为以下三种类型:
1.非结构化的数据:主要是数据之间的关联系不大,像文本图片之类的数据;
2.结构化的数据:数据之间关联系很大,关系型数据库这种,可以用表进行表示的;
3.半结构化的数据:介于上述两种数据类型之间,数据之间的关系简单,典型的代码是html文件;
针对以上三种不同的数据类型,我们应用不同的分布式存储系统来进行数据的处理:
1.分布式文件系统:
处理非结构化的数据,将非结构化的数据都当做文件形式的存储对象,处理对象是文件,形成一个分布式文件系统。
2.分布式键值系统:
存储数据关系简单的半结构化的数据,通过键值来管理半结构化的数据,一般用作缓存系统,一致性哈希算法是键值系统中常见的数据分布技术。支持简单的数据创建,读取,更新,删除操作。
3.分布式表格系统:
存储数据关系复杂的半结构化的数据,不仅支持分布式键值系统的GRUD操作,而且还是支持主键的范围扫描。主要的特点是只针对单表格,不支持表格之间的合并联结等操作。
4.分布式数据库:
存储结构化的数据,从单机的关系数据库发展而来,提供多维表格组织数据,提供SQL语言查找,同时支持多表的关联。关系型数据在软件生态链是非常好的,但是面临的问题就是扩展性的问题,如果把传统的事务操作,高效的扩展到各个节点上。现在出现了很多非关系型数据库,虽然扩展性好,但是只能解决特定的某种问题,目前倾向于分布式的关系型数据库的使用。
常见存储引擎:
基本的功能包括增删读改。给上层的数据库提供增删读改的。
常见的存储引擎包括以下几种:
1.哈希存储引擎:哈希表的持久化,支持随机增删改,读取,但是不支持顺序的扫描。-分布式键值系统
基于哈希表结构的键值存储系统,仅支持追加写操作,即所有的写操作只追加而不修改老的数据,同一个时刻,只有一个活跃的新文件。
主要思想是:
1.内存中采用基于哈希表的索引结构,即hash表存放的是数据在磁盘上的位置索引,磁盘上存放的是主键和value的实际内容。
2.定期合并,定期将旧的数据或者删除操作进行合并,保留最新的数据。
3.掉电恢复,在磁盘上保留一份索引记录,在定期合并的时候产生这份索引记录,当磁盘掉电的时候直接通过这个索引记录到内存中重建即可。
存在的问题:索引的长度远小于数据的长度,这样内存存放的索引越多,磁盘存放的数据就越多。
2.Btree存储引擎:B树的持久化实现,支持随机增删改,读取,以及顺序扫描。-分布式数据库
主要思想:
1.利用B树的数据结构,非叶子节点都是索引,叶子节点存放的数据,
2.根节点常驻内存,通过二分法去查找非叶子节点,没有命中去磁盘上取根节点,直到最后早点叶子节点的值,最后从磁盘中取出。
3.添加缓冲区管理,替换策略,加快叶子节点的缓存。
3.LSM存储引擎:支持随机增删改,读取,以及顺序扫描,它通过批量转存技术将随机写入数据批量顺序写入到磁盘上-广泛用于互联网后台存储系统
主要思想:
1.对数据的修改增量保持在内存中,达到指定大小限制后批量写入到磁盘中
2.读取数据时,需要合并磁盘的历史数据和内存中最近修改的数据
3.增加的数据写到磁盘上时,按照新老写入不同的sst文件,并给这些问题设置不同的层次,层次代表了数据的新老,通过这样的层次完成数据的持久化。