(原创)MongoDB之NoSQL简介
Nosql简介
1.1系统对数据的需求
Nosql[Nosql主要用途大数据处理]的全称为”not only sql”,为非关系型数据库[非关系型数据库就是关系型数据库的所有特点都没有了,主外键,约束也没有了,sql语句也没有了。]。这类数据库的主要特点是:
非关系型、分布式、开源的、水平可扩展的。Nosql最典型的应用为key-value存储。Nosql的最主要的用途是大数据的处理,这个问题在传统的关系型数据库中有严重的系统瓶颈,而nosql的诞生很好的解决了这个问题。
传统的数据库在应付web2.0网站,特别是超大规模和高并发的网站的时候,暴漏出了很多的问题。
1、High performance (对数据库高并发读写的需求)
因为web2.0的网站要根据用户的需求实时生成动态页面和提供动态的信息,所以基本上不能使用页面缓存的技术。因此数据库的并发负载特别高。所以要应付上万次并发的读写请求,传统数据库就有点力不从心了。
2、High Storage (对海量数据的高效存储和访问需求)
对于一些大型的网站,每天都要产生海量的信息,以国外的fack book为例,每个月就要达到2.4亿条数据,对于关系型数据库来说,一张表存储2.5亿条数据,然后再对其查询,其效率是极其低下的。
3、High Scalability&&High Availability (高扩展性和高可用性需求)
在一个web结构中,数据库是很难横向扩展的。当一个系统的用户量和访 问量增长特别大的时候,你没有办法像web service那样通过简单的添加硬 件和服务节点来扩展性能和负载能力。往往要进行数据迁移,这个事情对
于很多DBA来说是比较痛苦的。
1.2关系型数据库的缺点
1、对于海量数据,关系型数据库对于实时性这点来说是很难做到的,如果想做到,必须增加数据库服务器,而数据库服务器有很多文件,例如:控制文件、数据文件、日志文件等。特别是控制文件的结构特别复杂,增加服务器就涉及到备份数据库,这个工作将是很庞大的。而且有的时候,需要涉及到添加硬件。这就需要消耗大量的资金。
2、关系型数据库一次读取,需要消耗很多资源。例如:先打通数据库的连接,再开启会话,然后发送请求即sql语句。数据库内部解析SQL语句也是一个比较复杂的过程。如果碰到一次性大批量的数据的读写要求,这对关系型数据库是很难做到效率比较高的。
1.3Nosql特点
可以处理超大量的数据,可以运行在p机上,查询过程中不会产生Sql,可以减少解析sql的环节,并且NoSql开源。MongoDB都不用装,就是一个文件夹,拷贝即可。NoSQL的事物支持的很弱。
1、可以处理超大数量的数据
2、可以运行在便宜的PC上,成本比较低
3、在查询的过程中,没有了sql语句,所以减少了数据库解析sql语句的环节,这个环节没有了,大大的提升了系统的性能。
4、Nosql的产品都是开源的。我们可以清楚的了解最底层的事情。[开源东西没有商业保证,这也就是NoSQL的区别。Hadoop最大应用就是互联网市场。]
注:没有事务的回滚机制,容易丢失数据。
转载请注明:http://www.xujin.org或http://www.virgocloud.com