多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
[NoSQL](https://zh.wikipedia.org/wiki/NoSQL) NoSQL是对不同于传统的关系数据库的数据库管理系统的统称。 两者存在许多显著的不同点,其中最重要的是NoSQL不使用SQL作为查询语言。其数据存储可以不需要固定的表格模式,也经常会避免使用SQL的JOIN操作,一般有水平可扩展性的特征。 ## 发展历史 NoSQL一词最早出现于1998年,是Carlo Strozzi开发的一个轻量、开源、不提供SQL功能的关系数据库[1]。 2009年,Last.fm的Johan Oskarsson发起了一次关于分布式开源数据库的讨论[2],来自Rackspace的Eric Evans再次提出了NoSQL的概念,这时的NoSQL主要指非关系型、分布式、不提供ACID的数据库设计模式。 2009年在亚特兰大举行的"no:sql(east)"讨论会是一个里程碑,其口号是"select fun, profit from real_world where relational=false;"。因此,对NoSQL最普遍的解释是“非关联型的”,强调Key-Value Stores和文档数据库的优点,而不是单纯的反对RDBMS。 ## 特点 当代典型的关系数据库在一些数据敏感的应用中表现了糟糕的性能,例如为巨量文档创建索引、高流量网站的网页服务,以及发送流式媒体。[3]关系型数据库的典型实现主要被调整用于执行规模小而读写频繁,或者大批量极少写访问的事务。 NoSQL的结构通常提供弱一致性的保证,如最终一致性,或交易仅限于单个的数据项。不过,有些系统,提供完整的ACID保证在某些情况​​下,增加了补充中间件层(例如,CloudTPS)[4]。有两个成熟的系统有提供快照隔离的列存储:像是Google基于过滤器系统的BigTable[5],和滑铁卢大学开发的HBase[6]。这些系统,自主开发,使用类似的概念来实现多行(multi-row)分布式ACID交易的快照隔离(snapshot isolation)保证为基础列存储,无需额外的数据管理开销,中间件系统部署或维护,减少了中间件层。 少数NoSQL系统部署了分布式结构,通常使用分布式散列表(DHT)将数据以冗余方式保存在多台服务器上。依此,扩充系统时候添加服务器更容易,并且扩大了对服务器失效的承受能程度。[7] ##分类 1. 文档存储 | 名称 | 语言 | | --- | --- | |BaseX| XQuery,Java| |CouchDB| Erlang| |eXist | XQuery| |iBoxDB | Java,CSharp| |Jackrabbit| Java| |Lotus Notes| LotusScript,Java等| |MarkLogic Server| XQuery| |MongoDB |C++| |OrientDB |Java| |SimpleDB |Erlang| |Terrastore |Java| |ElasticSearch |Java| |No2DB |C#| 2. 图形关系存储 | 名称 | 语言 | | --- | --- | |AllegroGraph| SPARQL| |DEX |Java , C#| |Neo4j |Java| |FlockDB| Scala| 3. 键-值(key‐value)存储 **最终一致性的键-值存储** * Cassandra * Dynamo * Hibari * Project Voldemort * Riak **架构性键-值储存** * GT.M * InterSystem Globals 4. 主机式服务 **Key/value硬盘存储** * BigTable * MemcacheDB * LevelDB * Tokyo Cabinet * Tuple space * TreapDB **Key/value RAM存储** * Oracle Coherence * memcached * Citrusleaf database * Velocity * Redis * Tuple space **Key-value基于Paxos算法的存储** * Keyspace 5. 多数据库 * OpenQM * Rocket U2 * Revelation Software's OpenInsight * Extensible Storage Engine(ESE/NT) 6. 时序型数据库 | 名称 | 语言 | | --- | --- | |Graphite |Python| |InfluxDB |Go| |Informix TimeSeries| Erlang| |OpenTSDB |Java| |RRDtool | C | 7. 对象数据库[编辑] * Versant Object Database * db4o * GemStone/S * InterSystems Caché * JADE * Objectivity/DB * ZODB * ObjectStore 8. 列存储[编辑] * Cassandra * HBase * Hypertable