上传网站教程,织梦,韶关市建设与房地产信息网站,网站开发如何修改域名引言NoSQL#xff08;Not Only Sql#xff09;#xff0c;泛指非关系型的数据库。 背景#xff1a;随着互联网web2.0网站的兴起#xff0c;传统的关系数据库在应付web2.0网站#xff0c;特别是超大规模#xff0c;超大流量以及高并发的时候得力不从心#xff0c;暴露了… 引言NoSQLNot Only Sql泛指非关系型的数据库。 背景随着互联网web2.0网站的兴起传统的关系数据库在应付web2.0网站特别是超大规模超大流量以及高并发的时候得力不从心暴露了很多难以克服的问题而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战尤其是大数据应用难题。 NoSQL与关系型数据库的比较比较关系型数据库NoSQL存储方式表格式行和列便于关联协作存储和数据提取存储在数据集如文档、键值对或者图结构存储结构预定义了结构列的定义确定数据的形式和内容具有可靠性和稳定性但是难以修改动态结构易于适应数据类型和结构的变化存储规范高规范性分割细化数据到关系表以避免重复和获得精简的空间数据管理逻辑清晰但是操作麻烦存储成了一个整体数据存储可能重复但整块数据更加便于读写存储扩展纵向扩展想要提高处理能力要使用速度更快的计算机横向扩展存储是分布式的可以通过给资源池添加更多的普通数据库服务器来分担负载查询方式结构化查询语言来操作数据库SQLCURD预定义优化方式如索引加快查询以块为单元操作数据非结构化查询语言UnQl无标准基于更简单更精确的数据访问模式优化查询事务ACID规则原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)对事务支持性更强BASE原则基本可用Basically Availble、软/柔性事务Soft-state 、最终一致性Eventual Consistency性能数据一致性强读写性能比较差。高并发读写性能非常差海量数据处理效率非常低无需sql的解析提高了读写性能。常用数据库SQL ServerMysqlOracleredismemcacheMongoDb授权方式大部分付费大部分开源总的来说Nosql相比于传统的关系性数据库来说具有高效集群、不使用关系模型、开源、易扩展和灵活的数据模型等优点。 Compose.io 的开发者 DJ Walker-Morgan 也说过“NoSQL 就像我购买营养食品去减肥一样负责的是控制必须有严格的纪律和谨慎的管理才适用”。 所以说关系型数据库还是主流Nosql目前来说主要是作为超大规模超大流量以及高并发情景下的解决方案。也许不久的将来Nosql会越来越完善向事务支持和大规模高并发两极发展而关系型数据库也将在保证稳定性安全性的同时针对大规模和高并发找到一些更有效的解决方案。可以说Nosql的高速发展促进了数据库行业的高效快速发展。就目前所持认知的想法不知道理解的对不对 分类Nosql可以分为键值(Key-Value)存储数据库、列存储数据库和图形(Graph)数据库四种数据库。 分类例子典型应用场景数据模型优点缺点键值存储数据库Tokyo Cabinet/Tyrant, Redis, Voldemort, Oracle BDB内容缓存主要用于处理大量数据的高访问负载也用于一些日志系统等等。Key 指向 Value 的键值对通常用hash table来实现查找速度快数据无结构化通常只被当作字符串或者二进制数据列存储数据库Cassandra, HBase, Riak分布式的文件系统以列簇式存储将同一列数据存在一起查找速度快可扩展性强更容易进行分布式扩展功能相对局限文档型数据库CouchDB, MongoDbWeb应用与Key-Value类似Value是结构化的不同的是数据库能够了解Value的内容Key-Value对应的键值对Value为结构化数据数据结构要求不严格表结构可变不需要像关系型数据库一样需要预先定义表结构查询性能不高而且缺乏统一的查询语法。图形数据库Neo4J, InfoGrid, Infinite Graph社交网络推荐系统等。专注于构建关系图谱图结构利用图结构相关算法。比如最短路径寻址N度关系查找等很多时候需要对整个图做计算才能得出需要的信息而且这种结构不太好做分布式的集群方案。键值(Key-Value)存储数据库这一类数据库主要会使用到一个哈希表这个表中有一个特定的键和一个指针指向特定的数据。Key/value模型对于IT系统来说的优势在于简单、易部署。但是如果DBA只对部分值进行查询或更新的时候Key/value就显得效率低下了。举例如Tokyo Cabinet/Tyrant, Redis, Voldemort, Oracle BDB. 列存储数据库。这部分数据库通常是用来应对分布式存储的海量数据。键仍然存在但是它们的特点是指向了多个列。这些列是由列家族来安排的。如Cassandra, HBase, Riak. 文档型数据库文档型数据库的灵感是来自于Lotus Notes办公软件的而且它同第一种键值存储相类似。该类型的数据模型是版本化的文档半结构化的文档以特定的格式存储比如JSON。文档型数据库可 以看作是键值数据库的升级版允许之间嵌套键值。而且文档型数据库比键值数据库的查询效率更高。如CouchDB, MongoDb. 国内也有文档型数据库SequoiaDB已经开源。 图形(Graph)数据库图形结构的数据库同其他行列以及刚性结构的SQL数据库不同它是使用灵活的图形模型并且能够扩展到多个服务器上。NoSQL数据库没有标准的查询语言(SQL)因此进行数据库查询需要制定数据模型。许多NoSQL数据库都有REST式的数据接口或者查询API。如Neo4J, InfoGrid, Infinite Graph.因此我们总结NoSQL数据库在以下的这几种情况下比较适用1、数据模型比较简单2、需要灵活性更强的IT系统3、对数据库性能要求较高4、不需要高度的数据一致性5、对于给定key比较容易映射复杂值的环境。 参考 Nosql简介 RedisMemchche,MongoDb的区别Nosql百度百科NoSQL 简介关系型数据库与NoSQL的对比Nosql 理解篇实战篇 一 了解nosqlNoSQL 没毛病为什么 MySQL 还是“王”