这些只是NoSQL数据库庞大的社区中的一小部分,这类数据库最初是为响应Google,亚马逊,Facebook,LinkedIn,雅虎等公司的内部需求而出现的 - 需要更好的可扩展性,更低的延迟,更大的 灵活性以及大数据和云计算时代的更高性价比。

它们以多种形式出现,从关键值商店到宽列商店,再到数据网格以及文档,图表和对象数据库。 作为一个群体 - 尽管仍然是非正式的定义 - NoSQL(大多数人认为是指“不仅是SQL”)正在快速增长。 根据市场研究公司的数据,全球NoSQL市场预计到2018年将达到34亿美元,去年和2018年之间的复合年增长率为21%。

Rick van der Lans是一位专注于数据仓库,商业智能(BI),数据库技术和数据虚拟化的独立分析师,顾问,演讲人和作家,他说:“现在有各种应用正在使用NoSQL系统构建。 他的书“SQL简介”是第一本关于SQL数据库的英文书籍。
 
他说,Web站点和BI提供了两个例子,NoSQL数据库被采用,“两个世界都是大数据世界”。 例如,像亚马逊这样的网站,“他们正在分析你作为客户在现场做什么。 你正在寻找一本书,他们正在主持推荐,所以他们正在分析用户在他们的网站周围移动时在后台创建的高度复杂和多结构化数据的巨大网络日志。“
 
事实上,NoSQL为大数据带来的好处之一是它允许存储无模式数据,这使得它非常适合数据没有特定结构的大数据环境 - 它可能是非结构化的,就像文本一样,并且对于相同数据的不同结构可能会有所不同:
 
“这就是为什么有些人称这些数据为多结构化的,这意味着您可以从不同角度查看相同的数据,”van der Lans说,也许从今天的客户和明天的供应商角度来看。 “就好像您在查看同一个对象时使用不同的过滤器。”
 
与其提出用于建模数据的结构,就像关系数据库一样,“NoSQL系统让我们将数据存储起来,”他说,在嵌套和层次结构中,表中的记录中可以具有不同的结构,并且可以添加哪些值,但尚未定义任何列。 “当我们访问数据时,当我们查询它时,我们确定了我们想要使用的结构。这意味着它更加灵活。“
 
数据建模仍然是一项重点
 
然后,数据建模在NoSQL环境中仍然扮演重要角色。 “数据建模过程总是存在的,”他说。 van der Lans解释说,你可以用一种简单的方式来看待这个角色,把它看作一个导致图表的过程。在创建图表的过程中,您试图了解数据意味着什么以及数据元素如何相互关联。因此,“理解”是数据建模的一个关键方面。
 
正如您在为SQL环境进行数据建模时一样,NoSQL的数据建模需要完成相同的作业:与最终用户交谈并阅读报告,以获得指定数据结构和含义的逻辑模型。他指出,这是以业务为导向的一步。 “当我们想要解释数据的时候,我们必须理解它,”他说。与SQL环境相比,实现该逻辑模型(数据建模的物理和技术方面)在NoSQL环境中发生了显着变化。
 
在SQL环境中,导致这种理解的数据建模过程存在于数据库服务器中。然而,在NoSQL环境中,数据建模最终会在读取数据的应用程序代码中出现,van der Lans说。 “二十年前,如果您要进行数据建模,结果将始终是一个数据库结构 - 表和列。”在今天的NoSQL环境中,“数据模型最终会以应用程序代码行结束......结构是有的,只是在应用程序代码中。“因为这种方法,它只是围绕着改变你想要查看数据的方式进行,而不需要重新组织物理数据库。
 
牢记差异
 
他还指出,成功实施这些实施需要区分不同类型的NoSQL系统。 “有一种将NoSQL归类为同类产品的趋势,但它们非常不同,”你必须建立数据模型,以便从你使用的系统中获得最佳性能。
 
“在NoSQL系统中,一切都是性能和可扩展性的次要因素。在SQL世界中,趋势是想出一个非常适合所有事情的非常中立的数据库结构。使用NoSQL系统,您的目标是让一个应用程序快速且可扩展。“
 
作为一个例子,为MongoDB设计一个数据模型,这是一个NoSQL数据库文档,有些人也称之为JSON数据存储,为了达到速度和规模,应该将重点放在您的事务上。例如,一起插入和更新的数据,订单和订单行将是SQL数据库中的两个单独的表。 “在MongoDB中,我们会说这只是一张桌子,所以如果有人做了一个订单插入,那么订单标题和订单在逻辑上和物理上形成一个对象,”他说。因此,MongoDB中数据模型的设计受交易的严重影响,而在Hadoop Hbase中,设计可能更多地针对报告,这可能导致非规范化的数据模型。
 
变化的景观
 
他补充说,那些熟悉NoSQL系统和为他们建模数据的人的看法是,他们的工作方式与传统数据库服务器不同,并且必须进行不同的优化。这包括承担SQL系统自动处理数据存储位置或提取数据的最有效方式的工作,例如。在NoSQL中,程序员必须在系统的低级编程语言中自己解决这个问题;尽管这意味着对性能的更多控制可能会拖累新报告或应用的上市时间。构建数据安全性和完整性层也掌握在程序员手中,假设不担心在性能成为最高要求时增加性能会降低性能。
 
有趣的是,那些从关系数据库时代开始就已经存在很久的数据专家可能能够将一些从很久以前的数据建模技巧应用到这个新世界。 “NoSQL和关系数据库之间有一点关系 - 它们是基于分层结构的,并且它们用于优化系统的一些方式几乎适用于某些NoSQL系统,”他说。
 
但是,没有理由相信事情确实停滞不前。他说,市场正在快速发展,并指出在过去的一年中,NoSQL系统之上支持SQL的许多新软件层出现了,因此您可以使用SQL访问这些NoSQL环境, “这一类新产品改变了一切。”