NoSql是什么?

一、nosql的简介

   Nosql的全称是Not Only Sql,这个概念早起就有人提出,
而我们常用的都是关系型数据库。就像我们常用的mysql,sqlserver一样,
这些数据库一般用来存储重要信息,应对普通的业务是没有问题的。
但是,随着互联网的高速发展,传统的关系型数据库在应付超大规模,
超大流量以及高并发的时候力不从心。而就在这个时候,Nosql得到的告诉的发展。


二、Nosql和关系型数据库的区别
1.存储方式

  关系型数据库是表格式的,因此存储在表的行和列中。他们之间很容易关联协作存储,
Nosql通常存储在数据集中,就像文档、键值对或者图结构。

2.存储结构

关系型数据库对应的是结构化数据,数据表都预先定义了结构(列的定义),
结构描述了数据的形式和内容。这一点对数据建模至关重要,
虽然预定义结构带来了可靠性和稳定性,但是修改这些数据比较困难。
而Nosql数据库基于动态结构,使用与非结构化数据。
因为Nosql数据库是动态结构,可以很容易适应数据类型和结构的变化。

3.存储规范

关系型数据库的数据存储为了更高的规范性,把数据分割为最小的关系表以避免重复,
获得精简的空间利用。虽然管理起来很清晰,但是单个操作设计到多张表的时候,
数据管理就显得有点麻烦。而Nosql数据存储在平面数据集中,
数据经常可能会重复。单个数据库很少被分隔开,而是存储成了一个整体,
这样整块数据更加便于读写

4.存储扩展

这可能是两者之间最大的区别,关系型数据库是纵向扩展,也就是说想要提高处理能力,
要使用速度更快的计算机。因为数据存储在关系表中,操作的性能瓶颈可能涉及到多个表,
需要通过提升计算机性能来克服。虽然有很大的扩展空间,
但是最终会达到纵向扩展的上限。而Nosql数据库是横向扩展的,
它的存储天然就是分布式的,可以通过给资源池添加更多的普通数据库服务器来分担负载。

5.查询方式

关系型数据库通过结构化查询语言来操作数据库(就是我们通常说的SQL)。
SQL支持数据库CURD操作的功能非常强大,是业界的标准用法。
而Nosql查询以块为单元操作数据,使用的是非结构化查询语言(UnQl),
它是没有标准的。关系型数据库表中主键的概念对应Nosql中存储文档的ID。
关系型数据库使用预定义优化方式(比如索引)来加快查询操作,
而Nosql更简单更精确的数据访问模式。

6.事务

 关系型数据库遵循ACID规则(原子性(Atomicity)、一致性(Consistency)、
(基本可用(Basically Availble)、软/柔性事务(Soft-state )、最终一致性(Eventual Consistency))。由于关系型数据库的数据强一致性,
所以对事务的支持很好。关系型数据库支持对事务原子性细粒度控制,
并且易于回滚事务。而Nosql数据库是在CAP(一致性、可用性、分区容忍度)中任选两项,因为基于节点的分布式系统中,很难全部满足,所以对事务的支持不是很好,
虽然也可以使用事务,但是并不是Nosql的闪光点。

7.性能

 关系型数据库为了维护数据的一致性付出了巨大的代价,读写性能比较差。
而Nosql存储的格式都是key-value类型的,并且存储在内存中,非常容易存储,
而且对于数据的 一致性是 弱要求。Nosql无需sql的解析,提高了读写性能。

8.授权方式
 

 关系型数据库通常有SQL Server,Mysql,Oracle。主流的Nosql数据库有redis,
成本较大,而Nosql数据库通常都是开源的。

三、为什么使用NoSQL ?

今天我们可以通过第三方平台(如:Google,Facebook等)可以很容易的访问和抓取数据。
用户的个人信息,社交网络,地理位置,用户生成的数据和用户操作日志已经成倍的增加。
我们如果要对这些用户数据进行挖掘,那SQL数据库已经不适合这些应用了,
 NoSQL数据库的发展也却能很好的处理这些大的数据
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章