1.1.5 NoSQL的典型应用场景

NoSQL可以在下面几种场景中应用。

(1)海量日志数据、业务数据或监控数据的管理和查询。例如,管理电商网站或App的用户访问记录、交易记录,采集并管理工业物联网中的数据采集与监视控制系统(Supervisory Control And Data Acquisition,SCADA)数据。这些数据一般会被持续采集,不断累积,因此数据量极大,可能无法通过单机管理。另外,这些数据结构简单,且缺乏规范,例如,从不同业务服务器或不同工业设备所采集的数据格式可能是不同的,这使得利用关系型模型描述数据变得困难。NoSQL采用键值对、无模式的数据模型处理这类数据会简单一些。

(2)特殊的或复杂的数据模型的简化处理。例如,互联网中的网页和链接可以看作是点和线的关系,这样可以把互联网中网站和网页的关系抽象为有向图。NoSQL数据库中有一类“图数据库”,专门对这种数据结构进行了优化。又比如,股票数据中有所谓的“F10”数据,即企业背景信息,该信息包含了相对静态的企业概况信息,也包含了动态的公告信息、股本结构变动信息等。这些背景信息的格式是不确定的、变化的,而且数据格式之间可能存在列的嵌套等情况。这种数据结构虽然也可以尝试用关系模型描述,但采用文档型数据库,则可能用一条记录就可以描述所有信息,并且支持记录结构的动态变化。

(3)作为数据仓库、数据挖掘系统或OLAP系统的后台数据支撑。

“数据仓库之父”比尔·恩门(Bill Inmon)提出,数据仓库是在企业管理和决策中面向主题的、集成的、与时间相关的、不可修改的数据集合。数据仓库可以从多个数据源收集经营数据(如系统日志、交易流水数据等),并且将数据进行预处理,如清洗、提取和转换等操作(ETL,Extract-Transform-Load),将数据转换为统一的模式。处理后的数据会根据决策的需求进行组织,形成面向主题的、集成化的、较稳定的数据集合,数据内容则反映了经营和业务的历史变化。

数据挖掘是从大量数据集中发现有用的新模式的过程。数据挖掘的核心技术之一是数据挖掘算法,例如决策树、逻辑回归、K均值等。在大数据领域,数据挖掘也会考虑基于分布式计算引擎实现,例如著名的分布式计算框架Apache Spark中提供的Mlib模块,以及Apache Hadoop体系中的Mahout模块。

OLAP是联机分析处理(On-Line Analytical Processing)。OLAP可以看作是一种基于数据仓库系统的应用,一般面向决策人员和数据分析人员,针对特定的商务主题对海量数据进行查询和分析等。与此相对的概念是联机事务处理(On-Line Transaction Processing,OLTP),即利用传统关系型数据库系统实现的、基于事务的业务系统。

NoSQL通常没有ETL、汇聚和数据挖掘等功能,也不包含数据挖掘引擎,需要将NoSQL与MapReduce、Spark等分布式处理框架结合使用。大部分数据预处理和数据挖掘工具也支持从多种NoSQL数据库中读取数据。特别是NoSQL数据库可能已经实现数据在多个节点上的均匀存储,这使得并行数据挖掘也变得相对容易。

如果采用NoSQL构建OLAP业务,虽然可以通过分布式部署支持很大的数据量,但其高级查询分析能力可能不足。也就是说,NoSQL可以构建OLAP业务的部分模块,但实现完整的业务系统,需要结合其他技术实现。如果采用NoSQL构建OLTP业务,由于缺乏事务机制,可能只能实现较简单的业务操作,或者实现部分业务。