大数据存储技术
上QQ阅读APP看书,第一时间看更新

| 1.3 大数据存储的关键技术 |

大数据存储的关键技术实际上是非常多的,本书只选取其中最为关键的部分进行介绍,包括扩展性技术、可靠性和容灾保障技术、数据共享技术、重复数据删除技术及纠删码技术。下面就对这些技术进行逐一的介绍。

(1)扩展性技术

扩展性技术的含义非常简单明确,就是将大数据的存储尽可能地扩大到更大的规模。一些大数据存储对扩展性的要求非常高。一些数据存储系统甚至要求将数据分布到几千台机器上,这几千台机器之间需要通过高速的网络进行连接;而一些应用系统甚至要求数据在多个数据中心进行分布。这就对扩展性提出了更高的要求。分布式环境下的扩展性,特别是对于存储来说,有两个层面的含义:一个层面是数据存储的负载均衡,另一个层面是数据访问的负载均衡。数据存储的负载均衡指每台机器上存储的数据量差不多。数据访问的负载均衡指每台机器提供的负载是差不多的,不会存在大量的热的数据分布在少数几台机器,这也是为了提高系统的总体访问能力。此外,也要求在容量不够时加入新的机器,以自然地扩展到更高的容量,提供更好的访问能力。大数据存储的扩展性技术包括存储方面的负载均衡、访问方面的负载均衡,以及整个系统的可扩展性。

(2)可靠性与容灾保障技术

大数据存储的可靠性的含义是在某一些节点出现错误时,所保存的数据仍然存在,数据不丢失。可靠性的最低要求是系统出现错误时数据不丢失。一些系统要求有可用性,就是在整个系统出现错误时向外提供的服务不发生改变,可以提供正常的服务。可用性的要求比可靠性的要求高。为了达到可靠性和可用性的要求,最基本的方式就是通过副本的方式将数据副本保存到不同的物理机器中。这样的话,当其中一个或者几个物理机器发生错误时,其他机器仍然可以提供数据访问服务。容灾保障技术是另一个更高层面的可靠性技术。容灾保障技术希望能够保证在发生灾难时整个系统不发生数据丢失,甚至可以继续提供数据服务。这里的灾难包括自然灾害等,这些灾难会导致整个数据中心的下线。由此可以看出,容灾保障技术对整个技术体系提出了更高的要求。容灾的基本方式也是通过数据副本的方式。

(3)数据共享技术

数据共享技术是一种应用层的技术,可以应对大数据需要支持多个应用的需求。数据共享需求是普遍存在的。共享数据指用户将自己的数据提供给其他用户使用,使得与他人共同享有这份数据以及在该数据上进行的修改,例如现有的协同工作系统就在这样的数据上进行工作。在日常生活中,用户经常会有对数据进行共享的需求。例如,对于家庭聚会的照片,用户通常希望将其共享给家庭中的所有成员;对于朋友集体出游的照片,用户希望将其共享给整个朋友圈子。在大数据存储和处理方面,数据共享是连接整个系统不同处理部分的关键环节。例如,在科学计算方面,大量的数据会逐渐产生,而上一级处理生成的数据会被作为下一级数据处理的输入。因此,在不同的科学计算步骤之间就需要共享数据,以供后一级使用,同时也可供科研人员调试使用,以确认计算流程的正确性。由此可以看出,数据共享技术能够保证数据在多个使用者之间正常流通。

(4)重复数据删除技术

最近几年,大数据存储系统凭借优秀的可扩展性、可用性、可靠性、易管理性、高性能和低成本等优势,获得了越来越广泛的认可,成为在网络应用的构建中代替传统专用存储系统的解决方案。但是,实际上大数据存储,特别是它的一个重要的存储分支——云存储,存储了来自不同网络应用和不同用户的海量数据,这些数据中存在大量的冗余数据。除了云存储,其他大数据存储系统也会有大量的冗余,如在科学计算的数据中,大量的数据都是冗余的,而其中不冗余的部分是进行计算的关键。当这些冗余数据被存储到云存储系统或者其他大数据存储系统中时,不仅浪费了大量的存储空间,更重要的是浪费了用户和云存储系统之间有限的网络带宽资源。将重复数据删除技术应用到大数据存储系统中,用于发现并删除数据中的冗余,可以有效提高存储空间以及网络带宽的利用率,进一步降低大数据存储系统的成本,提高大数据存储系统的可扩展性和整体性能。

(5)纠删码技术

纠删码技术和副本方式相同,也可以提高可靠性,但是它还能大大降低所需的数据存储容量。纠删码技术在云存储系统中的应用已经成为比较热门的话题。一旦云存储环境下的数据节点出现故障,如其中的关键数据出现损坏,那么后果很可能是毁灭性的、令人无法接受的。因此如何对这些数据进行有效存储,并避免数据损失也就格外受人关注。随着大型数据存储系统中数据量的不断增加,原本根据独立磁盘冗余阵列(Redundant Array of Independent Disks,RAID)级别(RAID1-6、RAID01和RAID10)进行的冗余数据存储,在很多情况下已经不再适用了。这些系统最多只能允许两个磁盘或节点出错。但是随着存储部件数量的增长、广域网的飞速发展和故障模式的增多,存储系统的设计者们希望未来设计出的系统能够允许同时出现更多的磁盘或节点错误,而不影响系统的正常运行。那么如何更有效地对大型数据存储系统中的数据进行保护,允许同时出现多个磁盘或节点错误,避免其因系统中的存储设备失效而丢失数据,成为当前数据可靠性保证技术的研究热点。