人力资源大数据应用实践:模型、技术、应用场景
上QQ阅读APP看书,第一时间看更新

二、数据存储

收集起来的数据该如何存储以备后续使用呢?在大数据时代之前,通常使用关系型数据库进行数据存储,但是现在关系型数据库已经越来越无法满足实际使用的需求。为了面对这些挑战新的数据库技术正不断地被研发出来。总体来说,大数据数据库需要达到三个标准(3H):

1.高性能(High Performance)

满足对大规模数据的读写和检索的需求。对于拥有大量用户的互联网应用,满足用户同时访问带来高并发是一个挑战。网络访问如同交通一般,如果大量用户同时访问就类似于上下班的通勤高峰期容易形成交通堵塞。

2.高存储量(Huge Storage)

满足对海量数据的高效率存储和访问的需求。计算机应用为了把数据保存起来会把数据写入硬盘中,这一过程被称为持久化。互联网上,每时每刻都有大量的数据被写入硬盘保存起来,根据使用场景不同,数据会被保存在硬盘上不同类型的数据库。随着大数据时代的来临,满足大数据使用场景的新型数据库在不断地被创造出来,而且还在不断地改进和优化。数据在不断地增长,而这些数据库像饕餮一样把数据源源不断地吃进去。

3.高扩展性和高可用性(High Scalability and High Availability)

在大数据时代数据增长的速度往往超出人们的预期,如果数据库在使用一段时间之后达到存储极限之后就需要扩展。现有的大数据技术通常使用集群技术来实现扩展,这样做的好处是会尽量减少对原有业务和架构的影响,与此同时,采用集群的方式可以方便地实现数据分布式存储和冗余机制:把同一数据存储在不同的节点上,即使个别节点的数据损坏,仍然可以通过其他节点得到恢复,以此获得更高的数据可用性和可靠性。

这些新兴的数据库成为了数据科学家手中的重要武器,现在被统称为NoSQL。之所以被称为NoSQL,是因为在大数据技术兴起之前,主流的数据库为关系数据库。关系数据库使用结构化查询语言SQL(Structured Query Language)作为操作语言,因此SQL数据库一定程度上也代指关系数据库。在此之后,满足大数据应用场景发展出来的数据库被统称为NoSQL数据库(Not Only SQL),以示与传统的关系数据库的区别。虽然被统称为NoSQL数据库,但是因为大数据技术的应用场景十分广泛,NoSQL数据库发展出了不同的类别。到目前为止,NoSQL数据库主要分为4类,分别是键值数据库、列族数据库、文档数据库和图数据库。这些不同的数据库设计理念不同,而且在不同的方面各有长短,可以适用于不同的使用场景。一个好的数据科学家可以把这些数据库包括传统的关系数据库配合起来使用,通过取长补短实现最优化,这一方式在业内被称为混合持久化。

延伸阅读

数据库与混合持久化

NoSQL数据库与混合持久化NoSQL Distilled:A Brief Guide to the Emerging World of Polyglot Persistence, Pramod J. Sadalage and Martin Fowler.

数据库的价值在于持久存储大量数据。在NoSQL出现之前,关系型数据库具有绝对的统治地位,关系型数据库的优势在于提供了一套近乎标准的关系模型,而且还被不同的关系型数据库厂商共同遵守:数据库语言相似而且事务(tansaction)的操作方式也相似。关系型数据库对于事务的支持保证了对数据操作的严格和整个数据库的一致性,即使操作过程中出现差错也可以使用回滚(roll back)这一事务回到之前的数据状态。关系型数据库支撑了信息系统的发展并成为其不可或缺的一部分。

不过关系型数据库并非没有缺陷。在2000—2009年之间,由于互联网的崛起,数据规模迅速增加促使很多公司必须使用计算机集群来存储数据,但是关系型数据库并不适合构建集群,因为从一开始它就不是为此而设计的。即使一些关系型数据库提供商提供了关系型数据库的集群方案,但这些方案通常都相当昂贵。很大程度上NoSQL的出现就是为了弥补这一缺陷,大部分NoSQL数据库设计的初衷就是为了在集群上运行。

NoSQL数据库的共同特征包括:不使用关系模型、在集群上运行良好、无模式和适合互联网应用场景。NoSQL数据库主要包括了键值数据库、列族数据库、文档数据库和图数据库。

键值数据库代表:redis、riak、Memcashed、BerkeleyDB等。

列族数据库代表:Hbase、Cassandra、Amazon SimpleDB、HyperTable等。

文档数据库代表:mongodb、CouchDB、OrientDB、RavenDB等。

图数据库代表:Neo4j、FlockDB、HyperGraphDB、Infinite Graph等。

关系型数据库会因此而消亡吗?不会。因为NoSQL的出现并不是为了替代关系型数据库,而是为了满足互联网环境下多样的使用场景,即使是NoSQL内部不同类型的数据库都有着明显的差别,因此最好的办法就是使用不同的数据库去解决不同的问题,而这就是“混合持久化”的核心思想。以电子商务平台为例,一种可能的解决方案是:使用关系型数据库保存客户的基础数据和产品以及库存的数据;使用键值数据库保存session和购物车数据;使用文档数据库来保持以及完成的订单;使用图数据库来保存客户关系图和产品关系图。