NoSQL数据库概述

首字母缩写NoSQL是在1998年创造的。许多人认为NoSQL是一个诋毁SQL的贬义词。 实际上,这个术语不仅意味着SQL。 这个想法是两种技术都可以共存,并且每种技术都有自己的位置。 由于许多Web 2.0领导者采用了NoSQL技术,因此NoSQL运动在过去几年一直是新闻。 Facebook,Twitter,Digg,亚马逊,LinkedIn和谷歌等公司都以某种方式使用NoSQL。

让我们分解一下NoSQL,这样你就可以向你的CIO甚至你的同事解释它。

NoSQL从需求中涌现出来

数据存储:世界上存储的数字数据以兆字节为单位进行测量。 exabyte等于十亿千兆字节(GB)的数据。 根据Internet.com的统计,2006年存储的数据量为161艾字节。 仅在2010年的4年后,存储的数据量将接近1000 ExaBytes,增幅超过500%。 换句话说,世界上存储着大量的数据,并且它会持续增长。

相互关联的数据:数据继续变得更加连接。 在超链接中创建了网络,博客有pingbacks,每个主要的社交网络系统都有标签,可以将事情联系在一起。 主要系统的构建是相互关联的。

复杂的数据结构: NoSQL可以轻松处理层次化的嵌套数据结构。 为了在SQL中完成同样的事情,你需要多个关系表和各种关键字。

另外,性能和数据复杂性之间也有关系。 由于我们存储社交网络应用程序和语义网所需的大量数据,因此传统RDBMS中的性能可能会下降。

什么是NoSQL?

我猜想定义NoSQL的一种方法是考虑它不是什么。

这不是SQL,它不是关系型的。 就像名称所暗示的那样,它不是RDBMS的替代品,而是对它的赞扬。 NoSQL专为分布式数据存储而设计,可满足大规模数据需求。 用它的5亿用户或Twitter来思考Facebook,这些用户或Twitter每天都会收集Terabits的数据。

在NoSQL数据库中,没有固定的模式,也没有连接。 RDBMS通过获得更快更快的硬件和增加内存来“扩展”。 另一方面,NoSQL可以利用“扩展”。 扩大指的是分散许多商品系统的负载。 这是NoSQL的组件,使其成为大数据集的廉价解决方案。

NoSQL类别

目前的NoSQL世界适合4个基本类别。

  1. 键值存储主要基于2007年编写的亚马逊Dynamo Paper 。主要思想是存在一个哈希表,其中存在唯一键和指向特定数据项的指针。 这些映射通常伴随着缓存机制以最大限度地提高性能。
    Column Family Stores创建用于存储和处理分布在许多机器上的大量数据。 仍然有键,但它们指向多列。 在BigTable(谷歌的Column Family NoSQL模型)的情况下,行由行键标识,数据通过该键排序和存储。 这些列按列族排列。
  1. 文档数据库的灵感来自Lotus Notes ,并且与键值存储类似。 该模型基本上是版本化的文档,它们是其他键值集合的集合。 半结构化文档以JSON等格式存储。
  2. 图数据库用节点,笔记之间的关系和节点的属性构建。 除了行和列的表格以及SQL的严格结构之外,还可以使用灵活的图表模型,这种模型可以跨越多台机器进行扩展。

主要的NoSQL玩家

NoSQL的主要参与者主要是因为已经采用它们的组织而出现的。 一些最大的NoSQL技术包括:

查询NoSQL

如何查询NoSQL数据库是大多数开发人员感兴趣的问题。毕竟,如果无法检索并向最终用户或Web服务展示数据,存储在庞大数据库中的数据对任何人都没有任何好处。 NoSQL数据库不提供像SQL这样的高级声明式查询语言。 相反,查询这些数据库是特定于数据模型的。

许多NoSQL平台都支持RESTful接口。 其他报价查询API。 有几种查询工具已经开发,可以查询多个NoSQL数据库。 这些工具通常适用于单个NoSQL类别。 一个例子是SPARQL。 SPARQL是为图数据库设计的声明性查询规范。 以下是一个SPARQL查询的示例,用于检索特定博客的URL(由IBM提供):

PREFIX foaf:
SELECT?url
FROM
WHERE {
?贡献者foaf:名称“Jon Foobar”。
?贡献者foaf:weblog?url。
}

NoSQL的未来

有大量数据存储需求的组织正在认真对待NoSQL。 显然,这个概念在小型组织中没有得到太多的牵引力。 在Information Week进行的一项调查中,44%的商业IT专业人士还没有听说过NoSQL。 此外,只有1%的受访者表示NoSQL是他们战略方向的一部分。 显然,NoSQL在我们的互联世界中占有一席之地,但需要继续发展以获得许多人认为它可能具有的大众吸引力。