那么,NoSQL技术对大数据的管理是怎么实现的呢?其中又要遵循哪些基本原则呢?在这里,我们为读者在大数据的一致性策略、大数据的分区与放置策略、大数据的复制与容错技术及大数据的缓存技术等方面进行介绍。
8.1.3.1 大数据的一致性策略
在大数据管理的众多方面,数据的一致性理论是实现对海量数据进行管理的最基本的理论。学习这部分内容有利于读者对本章内容的阅读和深化理解。
分布式系统的CAP理论是构建NoSQL数据管理的基石。CAP,即一致性、可用性和分区容错性,如图8-1所示。
图8-1 CAP理论3个特性
(1)一致性。一致性是指在分布式系统中的所有数据备份,在同一时刻均为同样的值。也就是当数据执行更新操作时,要保证系统内的所有用户读取到的数据是相同的。
(2)可用性。可用性是指在系统中任何用户的每一个操作均能在一定的时间内返回结果,即便当集群中的部分节点发生故障时,集群整体仍能响应客户端的读写请求。这里要强调“在一定时间内”,而不是让用户遥遥无期地等待。
(3)分区容错性。以实际效果而言,分区相当于对通信的时限要求。系统如果不能在时限内达成数据一致性,就意味着发生了分区的情况,必须就当前操作在一致性和可用性之间做出选择。
从上面的解释不难看出,系统不能同时满足一致性、可用性和分区容错性这3个特性,在同一时间只能满足其中的2个,如图8-2所示。因此系统设计者必须在这3个特性中做出抉择。
图8-2 CAP理论3个特性之间的关系
8.1.3.2 大数据的分区与放置策略
在大数据时代,如何有效地存储和处理海量的数据显得尤为重要。如果使用传统方法处理这些数据,所消耗的时间代价将十分巨大,这是人们无法接受的,所以必须打破传统地将所有数据都存放在一处,每次查找、修改数据都必须遍历整个数据集合的方法。数据分区技术与放置策略的出现正是为了解决数据存储空间不足及如何提高数据库性能等方面问题的。
(1)大数据分区技术。通俗地讲,数据分区其实就是化整为零,通过一定的规则将超大型的数据表分割成若干小块来分别处理。表进行分区时需要使用分区键来标志每一行属于哪一个分区,分区键以列的形式保存在表中。
数据分区可以提高数据的可管理性,改善数据库性能和数据可用性,缩小了每次数据查询的范围,并且在对数据进行维护时,可以只针对某一特定分区,大幅提高数据维护的效率。
下面介绍几种常见的数据分区算法:
①范围分区。范围分区是最早出现的数据分区算法,也是最为经典的一个。所谓范围分区,就是将数据表内的记录按照某个属性的取值范围进行分区。
②列表分区。列表分区主要应用于各记录的某一属性上的取值为一组离散数值的情况,且数据集合中该属性在这些离散数值上的取值重复率很高。采用列表分区时,可以通过所要操作的数据直接查找到其所在分区。
③哈希分区。哈希分区需要借助哈希函数,首先把分区进行编号,然后通过哈希函数来计算确定分区内存储的数据。这种方法要求数据在分区上的分布是均匀的。
以上3种分区算法的特点和适用范围各异,在选择使用时应充分考虑实际需求和数据表的特点,这样才能真正发挥数据分区在提高系统性能上的作用。
(2)大数据放置策略。为解决海量数据的放置问题,涌现了很多数据放置的算法,大体上可以分为两大类:顺序放置策略和随机放置策略。采用顺序放置策略是将各个存储节点看成是逻辑有序的,在对数据副本进行分配时先将同一数据的所有副本编号,然后采用一定的映射方式将各个副本放置到对应序号的节点上;随机放置策略通常是基于某一哈希函数来实现对数据的放置的,所以这里所谓的随机其实也是有规律的,很多时候称其为伪随机放置策略。
8.1.3.3 大数据的复制与容错技术(www.xing528.com)
在大数据时代,每天都产生需要处理的大量的数据,在处理数据的过程中,难免会有差错,这可能会导致数据的改变和丢失。为了避免这些数据错误的出现,必须对数据进行及时的备份,这就是数据复制的重要性。同时,一旦出现数据错误,系统还要具备故障发现及处理故障的能力。
数据复制技术在处理海量数据过程中虽然是必不可少的,但是,对数据进行备份也要付出相应的代价。首先,数据的备份带来了大量的时间代价和空间代价;其次,为了减少时间和空间上的代价,研究人员投入大量的时间、人力和物力来研发提升新的数据复制策略;另外,在数据备份的过程中往往会出现意想不到的差错,此时就需要数据容错技术和相应的故障处理方案进行辅助。
构成分布式系统的计算机五花八门,每台计算机又是由各式各样的软硬件组成的,所以在整个系统中可能随时会出现故障或错误。这些故障和错误往往是随机产生的,用户无法做到提前预知,甚至是当问题发生时都无法及时察觉。如果一个系统能够对无法预期的软硬件故障做出适当的对策和应变措施,那么就可以说这个系统具备一定的容错能力。
系统故障主要可以分为以下几类,如表8-1所示。
表8-1 分布式环境下的系统故障类型
容错是建立在冗余的基础之上的,冗余主要包括以下4类:
(1)硬件冗余。指附加额外的处理器、I/O设备等。
(2)软件冗余。指附加软件模块的额外版本等。
(3)信息冗余。如使用了额外位数的错误检测代码等。
(4)时间冗余。如用来完成系统功能的额外时间等。
处理故障的基本方法有主动复制、被动复制和半主动复制。所谓主动复制指的是所有的复制模块协同进行,并且状态紧密同步。被动复制是指只有一个模块为动态模块,其他模块的交互状态由这一模块的检查单定期更新。半主动复制是前两种的混合方法,所需的恢复开销相对较低。
8.1.3.4 大数据的缓存技术
单机的数据库系统引入缓存技术是为了在用户和数据库之间建立一层缓存机制,把经常访问的数据常驻于内存缓冲区,利用内存高速读取的特点来提高用户对数据查询的效率。在分布式环境下,由于组成系统的各个节点配置和使用的数据库系统及文件系统不尽相同,要想在这样复杂的环境下提高对海量数据的查询效率,仅仅依靠单机的缓存技术就行不通了。
与单机的缓存技术目的相同,分布式缓存技术的出现也是为了提高系统的数据查询性能。另外,为整个系统建立一层缓冲,也便于在不同节点之间进行数据交换。分布式缓存可以横跨多个服务器,所以可以灵活地进行扩展。
从图8-3中不难看出,如果各种.NET应用、Web服务和网格计算等应用程序在短时间内集中频繁地访问数据库服务器,很有可能会导致其瘫痪而无法工作。如果在应用程序和数据库之间加上一道缓冲屏障,则可以解决这一问题。
图8-3 分布式系统数据读取示意图
分布式环境下的数据缓存技术具有如下特点:
(1)高性能。当传统数据库面临大规模数据访问时,磁盘I/O往往成为性能瓶颈,从而导致过高的响应延迟。分布式缓存将高速内存作为数据对象的存储介质,数据以Key-Value形式存储,理想情况下可以获得DRAM级的读写性能。
(2)动态扩展性。分布式缓存支持弹性扩展,通过动态增加或减少节点应对变化的数据访问负载,提供可预测的性能与扩展性。同时,最大限度地提高资源利用率。
(3)高可用性。可用性包含数据可用性与服务可用性两方面。分布式缓存基于冗余机制实现高可用性,无单点失效(Single Point of Failure),支持故障的自动发现,透明地实施故障切换,不会因服务器故障而导致缓存服务中断或数据丢失。动态扩展时自动均衡数据分区,同时保障缓存服务持续可用。
(4)易用性。分布式缓存提供单一的数据与管理视图、动态扩展或失效恢复时无须人工配置、自动选取备份节点且多数缓存系统提供了图形化的管理控制台,便于统一维护。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。