NoSQL是not only SQL的缩写。事实上,大多数NoSQL数据库都不是关系型数据库,不支持SQL语言。如今很多大数据都是非结构化或半结构化的,这就是NoSQL存在的依据。例如,大部分网页数据都不能很好地结构化(网页的结构各不相同)。传统的关系型数据库不适合存储这样的数据。
目前有各种各样的NoSQL数据库,我们只能粗略地将它们分为3类:
(1)列式存储或值键对存储。这种数据库通常以(列,时间戳,值)或是(键,值)的形式存储数据。其中的代表有BigTable(Google) 、 Hbase (Apache)和Accumulo (Apache)。
(2)文档型存储。这种数据库存储文档,通常以半结构化的形式(JSON, XML)。MongoDB是这类数据库中最流行的一个例子。
(3)图存储。这类数据库擅长存储图,例如AllegroGraph。
表2-1对NoSQL数据库和关系型数据库进行了比较。(www.xing528.com)
表2-1 NoSQL数据库与关系型数据库
通常,NoSQL数据库可以处理大数据和非结构化数据,但不支持事务处理和SQL。
有很多系统尝试把关系型数据库和NoSQL数据库的优势结合起来。有一些使用NoSQL作为底层存储,但提供了对SQL的支持。例如,Apache HIVE使用HDFS作为存储,但提供了类SQL的语言。SQL语句被转变成底层的操作(例如MapReduce任务)。不过,由于缺乏底层支持,这些系统依然无法支持事务处理。
关系型数据库提供商(Oracle, IBM, Microsoft)也提供了将NoSQL数据库连接到他们的关系型数据库的支持。非结构化的数据在NoSQL数据库中存储,从中抽取的结构化信息存储在关系型数据库里。抽取的过程通常通过MapReduce或者SQL查询实现(后者会在底层NoSQL数据库中转换成MapReduce操作)。这种方式的好处是用户仍然能使用那些针对关系型数据库的软件。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。