NoSQL是对不同于传统的关系数据库的数据库管理系统的统称。两者存在许多显著的不同点,NoSQL不使用SQL作为查询语言。其数据存储可以不需要固定的表格模式,经常会避免使用SQL的JOIN操作,有水平可扩展性特征。
NoSQL 是对不同于传统的关系数据库的数据库管理系统的统称。 两者存在许多显著的不同点,其中最重要的是 NoSQL 不使用 SQL 作为查询语言。其数据存储可以不需要固定的表格模式,也经常会避免使用 SQL 的 JOIN 操作,一般有水平可扩展性的特征。
虽然 NoSQL 的流行与火起来才短短一年的时间,但是不可否认,现在已经开始了第二代运动。尽管早期的堆栈代码只能算是一种实验,然而现在的系统已经更加的成熟、稳定。不过现在也面临着一个严酷的事实:技术越来越成熟——以至于原来很好的 NoSQL 数据存储不得不进行重写,也有少数人认为这就是所谓的 2.0 版本。该工具可以为大数据建立快速、可扩展的存储库。
发展历史
NoSQL 一词最早出现于 1998 年,是 Carlo Strozzi 开发的一个轻量、开源、不提供 SQL 功能的关系数据库。
2009 年,Last.fm 的 Johan Oskarsson 发起了一次关于分布式开源数据库的讨论,来自 Rackspace 的 Eric Evans 再次提出了 NoSQL 的概念,这时的 NoSQL 主要指非关系型、分布式、不提供 ACID 的数据库设计模式。
2009 年在亚特兰大举行的”no:sql(east)”讨论会是一个里程碑,其口号是”select fun, profit from real_world where relational=false;”。因此,对 NoSQL 最普遍的解释是“非关联型的”,强调键-值存储和面向文档数据库的优点,而不是单纯的反对 RDBMS。
基于 2014 年的收入,NoSQL 市场领先企业是 MarkLogic,MongoDB 和 Datastax。基于 2015 年的人气排名,最受欢迎的 NoSQL 数据库是 MongoDB,Apache Cassandra 和 Redis。
特点
当代典型的关系数据库在一些数据敏感的应用中表现了糟糕的性能,例如为巨量文档创建索引、高流量网站的网页服务,以及发送流式媒体。关系型数据库的典型实现主要被调整用于执行规模小而读写频繁,或者大批量极少写访问的事务。
NoSQL 的结构通常提供弱一致性的保证,如最终一致性,或交易仅限于单个的数据项。不过,有些系统,提供完整的 ACID 保证在某些情况下,增加了补充中间件层(例如:CloudTPS)。有两个成熟的系统有提供快照隔离的列存储:像是 Google 基于过滤器系统的 BigTable,和滑铁卢大学开发的 HBase。这些系统,自主开发,使用类似的概念来实现多行(multi-row)分布式 ACID 交易的快照隔离(snapshot isolation)保证为基础列存储,无需额外的数据管理开销,中间件系统部署或维护,减少了中间件层。
少数 NoSQL 系统部署了分布式结构,通常使用分布式散列表(DHT)将数据以冗余方式保存在多台服务器上。依此,扩充系统时候添加服务器更容易,并且扩大了对服务器失效的承受能程度。