1. 什么是NoSQL?
NoSQL 指的是 Not only SQL,我的理解是,为了弥补传统关系型数据库带来的问题,NoSQL改进了传统数据库的缺点,是一种非关系型的数据库。
2.关系型数据库的优点和缺点
<ul> 优点:
<li> 可以进行join 等复杂的操作</li>
<li>数据更新的开销很小 </li>
<li>保持数据的一致性 </li>
</ul>
<ul> 关系型数据库并不擅长以下处理:
<li> 大量的数据写入</li>
<li> 对简单的查询需要快速返回结果来处理 </li>
</ul>
详细说明这几个缺点:
2.1 大量的数据的写入处理
单台机器应对大量的写操作的时候,效率并不是很好。解决办法是 —— 分库思想
假设原来的数据库上面有表A,B,C,D ,现在使用两台机器,机器1上面保存表A,C;机器2上面保存表B,D。
优点 | 明显的可以减少每台数据库上面的数据量,减少I/O |
缺点 | 在物理层面上分隔了表A,C 和表B,D。所以分隔之后,没有办法进行join操作。 |
另外:
一般的网站为了应对访问的读写的压力,采用解决办法是使用主从复制技术来实现读写分离,以提高性能。(比如mysql的master-slave模式)不过这个是后话了。
2.2 对简单的查询没有办法快速返回结果来处理
因为关系型的数据库使用专门SQL的语言,进行数据读取,它需要对语言进行解析,同时还需要对表锁定和解锁。这里并不是先说想说关系型的数据库不适合台面太慢,二十而是想表达如果需要对数据进行告诉的查询,没有关系型数据库并不是唯一的选择。
3. NoSQL 数据库
NoSQL数据库只是应用于特定领域(或者可以理解为是SQL针对特定领域的优化),基本上不能进行复杂的操作(比如join),但是它恰恰弥补了之前列举的关系型数据库的不足之处。
下面是NoSQL的优点:
3.1 易于数据的分散
Nosql设计来就是不支持join的,所以它可以很方便的将数据分散到多个服务器上面,这样很明显的可以减少每个服务器的负担。
3.2 有很好的伸缩性
可以方便的通过增加服务器的数量来提高系统处理数据的能力。
小结:
NoSQL的数据库天生就是为海量数据而生的,因此其对伸缩性的支持都非常好。
4. 典型的NoSQL数据库
内存kay-value数据库 | 非内存的key-value 数据库 | 面向文档的数据库 | 面向列的数据库 |
---|---|---|---|
memcached | tokyo tyrant | MongoDB | HBase |
Redis | Flare | CouchDB | Cassandra |
</br>
PS:
之后一段时间内可能会花一点时间,学习和整理一下NoSQL的知识,笔记会写在这个新建的笔记本里面。
其他的文章
NoSQL 入门简介:http://www.jianshu.com/p/6a39544af0f9
一致性哈希:http://www.jianshu.com/p/a971e4709506
序列化和反序列化:http://www.jianshu.com/p/8e76d8e8defd
memcached 简介:http://www.jianshu.com/p/cfa066e4fc09
Redis 简介:http://www.jianshu.com/p/2e14c606d03b
MongoDB 简介:http://www.jianshu.com/p/71f9a9201803
HBase 列数据库:http://www.jianshu.com/p/d29bb02b1514
网友评论