NoSQL(最初表示Non-SQL[1],后来有人转解为Not only SQL[2][3]),是对不同于传统的关系数据库的数据库管理系统的统称。
允许部分数据使用SQL系统存储,而其他数据允许使用NoSQL系统存储。其数据存储可以不需要固定的表格模式以及元数据(metadata),也经常会避免使用SQL的JOIN操作,一般有水平可扩展性的特征。
发展历史
NoSQL一词最早出现于1998年,是Carlo Strozzi开发的一个轻量、开源、不提供SQL功能的关系数据库[4]。
2009年,Last.fm的Johan Oskarsson发起了一次关于分布式开源数据库的讨论[5],来自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[6]。基于2015年的人气排名,最受欢迎的NoSQL数据库是MongoDB,Apache Cassandra和Redis[7]。
特点
当代典型的关系数据库在一些数据敏感的应用中表现了糟糕的性能,例如为巨量文档建立索引、高流量网站的网页服务,以及发送流式媒体[8]。关系型数据库的典型实现主要被调整用于执行规模小而读写频繁,或者大批量读而极少写访问的事务。
NoSQL的结构通常提供弱一致性的保证,如最终一致性,或交易仅限于单个的数据项。不过,有些系统,提供完整的ACID保证在某些情况下,增加了补充中间件层(例如:CloudTPS)[9]。有两个成熟的系统有提供快照隔离的列存储:像是Google基于过滤器系统的BigTable[10],和滑铁卢大学开发的HBase[11]。这些系统,自主开发,使用类似的概念来实现多行(multi-row)分布式ACID交易的快照隔离(snapshot isolation)保证为基础列存储,无需额外的数据管理开销,中间件系统部署或维护,减少了中间件层。
少数NoSQL系统部署了分布式结构,通常使用分布式散列表(DHT)将数据以冗余方式保存在多台伺服器上。依此,扩充系统时候添加伺服器更容易,并且扩大了对伺服器失效的承受能程度。[12]
分类
- GT.M
- InterSystem Globals[14]
- Tokyo Cabinet
- Tuple space
- TreapDB
- Keyspace (data store)
- OpenQM
- Rocket U2
- Revelation Software's OpenInsight
- Extensible Storage Engine(ESE/NT)
- Versant Object Database
- db4o
- GemStone/S
- InterSystems Caché
- JADE
- Objectivity/DB
- ZODB
- ObjectStore
参考文献
外部链接
参见
Wikiwand in your browser!
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.