大数据架构商业之路:从业务需求到技术方案
上QQ阅读APP看书,第一时间看更新

icon2

3.1 持久化存储

对于持久化的存储而言,最关键的概念就是文件系统和数据库系统。对于个人计算机而言,相信大家对于日常使用的文件系统已经非常熟悉了。任何文档、图片、影视、歌曲、游戏都是以文件的形式存放在你所使用的操作系统中的。可是,对于工程开发而言,文件系统还远远不能满足需求。主要原因是大量的文件没有很好地组织,也缺乏对象之间的关联。这样的数据读取效率会非常低下,因此数据库(Database)应运而生。数据库诞生于20世纪70年代,它是按照数据结构来组织、存储和管理数据的仓库。其中,最为常用的是经典的关系型数据库,它是建立在关系模型的基础上的,借助于集合代数等数学概念和方法来处理数据。现实世界中的各种实体及实体之间的各种联系均可以用关系模型来表示,其中的核心元素之一是ER图(Entity Relationship Diagram),它对于我们理解关系型数据库很有帮助。在ER图中,具体事物被划分为各个实体(Entity),每个实体通过多个属性(Attribute)进行描述,不同的实体之间又通过关系(Relation)进行连接。假设我们要描述一个公司的员工参加公司俱乐部的案例,可以用如图3-1所示的ER图来表示。

图3-1 表示员工参加公司俱乐部的ER图

其中,员工有4个属性:姓名、员工ID、性别和年龄,而俱乐部有5个属性:名称、项目、负责人、经费和活动日。它们之间是员工“参加”俱乐部的关系。可以看出,关系型模型中的数据都有良好的结构,因此关系型数据往往也称为结构化的数据。对于关系型数据的检索和操作,常常还需要使用SQL(Structured Query Language,结构化查询语言)。它是专为数据库建立的操作命令集,是一种功能齐全的数据库语言。在使用SQL时,使用者只需要发出“做什么”的命令,而无须考虑“怎么做”的具体逻辑。SQL功能强大、简单易学、使用方便,已经成为数据库操作的基础,目前几乎所有的数据库均支持SQL。

可是,无论是文件系统还是数据库系统,在大数据时代都面临着巨大的挑战。单台计算机已经无法满足数据存储和处理的需求,必须要采用集群化的方案。那么,如何高效地读取这些分布在多台机器上的文件?又是如何高效地执行分布式数据库上的SQL查询的呢?最近几年,NoSQL(Not Only SQL)这个名字在大数据领域中变得炙手可热,它泛指非关系型的数据库,其产生就是为了帮助解决海量数据集合、多重数据种类所带来的大数据应用难题。随着NoSQL的流行,有不少具体的方案开始逐步成熟,并成为业界事实上的标准。这里将介绍知名的分布式文件系统HDFS(Hadoop Distributed File System)和对应的分布式非关系型(非结构化)数据库系统HBase,以及另一个非关系型的数据库MongoDB。