NoSQL介绍

in 编程
关注公众号【好便宜】( ID:haopianyi222 ),领红包啦~
阿里云,国内最大的云服务商,注册就送数千元优惠券:https://t.cn/AiQe5A0g
腾讯云,良心云,价格优惠: https://t.cn/AieHwwKl
搬瓦工,CN2 GIA 优质线路,搭梯子、海外建站推荐: https://t.cn/AieHwfX9

1.    介绍

1.1     出现的背景

NoSQL这个术语来源于一群定期在旧金山湾区开会并讨论一些共同关注可扩展的开源数据库的人们。该术语在2009年初被认同。

1.1.1      阻抗失谐

在关系模型当中,“关系元组的值必须很简单”,不能包含嵌套记录或列表等任何结构。但内存中的数据结构则无此限制,所以如果要把它保存到磁盘(关系型数据库)当中,必须将其转换为“关系”,需要在两种不同的表示形式之间转译。

Web服务的集成,可以将交互工作交给应用程序的接口,可以使用嵌套记录及列表等更丰富的数据结构,可存储在xml文档或json格式的介质中。如果使用sql交互,必须使用关系型的数据结构。

1.1.2      待处理的数据量大

21世纪互联网公司的网站规模在扩大,数据量在不断增长,用户越来越多,访问量越来越大。

关系型数据库并不是设计给集群用的,使用集群时,会出现技术(关系型数据库集群中的ACID问题)、许可费(商用关系型数据库非常昂贵)、横向扩展(sharding)和纵向扩展(购买机器,扩展度及其有限)问题。

 

1.2     什么是NoSQL?

NoSQL是关于快速而高效地处理数据,专注于性能、可靠性和敏捷性的一组概念。从以下方面来揭示它的主题:

1.3     NoSQL不是什么?

2.    NoSQL类型

NoSQL应用采用很多数据存储类型。有简单的表现键值关系的键值数据库、表现关联关系的图数据库、用以存储可变数据的文档存储和稀疏矩阵存储的列族数据库。每一种都有其独特的属性和使用场景:

 

                                   如表所示       4种主要的NoSQL系统及其代表产品

                

3.    NoSQL相关疑问总结

    3.1    为什么要用nosql?

        基于传统数据库的数据容量、处理速度、多样性而带来的问题,需要开发出这么一种数据结构多样化、灵活、处理速度达到大数据集的能力的产品。
        google论文的发表往往会催生出一些新技术的产生,如推动nosql运动最有影响力的Mapreduce系统,Google利用商用廉价的cpu将大量的web数据转换为内容搜索引擎
        Google的Bigtable催生出了一系列的分布式存储系统。而亚马逊的Dynamo是nosql运动的重要转折点,它的出生背景就是因为传统关系型数据库无法解决他们的业务需求,基于存储灵活、可靠性和可扩展性催生了键值对类型的数据结构,而在之后的nosql运动当中,nosql和RDBMS是兼收并蓄的。

         git、svn与nsoql采用了相同的模式,如分布式系统、文档散列和散列树来快速确定事务是同步的。如修改数据库的本地副本并且在需要时快速和主副本进行同步,实现方式就是计算系统的每个对象的散列值。

3.2    既然是个新兴数据库,是不是可以代替传统数据库?

主要为了弥补关系型数据库的不足而设计,所以两者是互补关系,并不能说谁替代谁

3.3    与关系型数据库有什么区别?

a.传统关系型数据库在设计的时候还没有诞生SSD,所以必然是HDD的产物,而且他是设计在单cpu上的。我们知道SSD比HDD快很多,nosql可以有效地利用SSD。
b.nosql大多采用一致性散列算法,将热点信息存储于缓存当中,可以减少磁盘访问,而且基于分布式的设计,一致性散列算法可以发布到分布式节点而
有效地比较远程数据库的一致性。
c.事务方面。两者采用完全不同的方法ACID和BASE(基本可用,软状态,最终一致性),从一定角度上说,ACID是悲观的,而BASE是乐观的。两者关注的点是不一样的
d.数据库的水平扩展。传统关系型数据库在面临cpu、磁盘瓶颈的时候,通常是分库分表,也就是数据切片,分布到不同的机器上,来平摊这些工作,而这些分库分表的操作都需要人手工干预。nosql则不然,他们内置了这种特性,只需增加机器就可以了。
e.nosql利用了协同工作的模块化组件这一思想,他认为工作可以划分给各个机器协同工作,可以重复利用资源
f.应用之间的差异非常明显,看图RDBMS与nosql应用的差异.PNG
g.RDBMS视图可以控制用户对表的访问权限,可以通过连接操作摘出表中可以被访问的字段,nosql没有这种特性,所以用哪种类型数据库还得看需求


3.4    nosql主要用来解决什么问题的?


性能瓶颈(磁盘、cpu处理器等)、存储容量(水平扩展与纵向扩展)、成本(数据库重构,分库分表,加字段)、数据结构僵硬不灵活、太过于复杂

关注公众号【好便宜】( ID:haopianyi222 ),领红包啦~
阿里云,国内最大的云服务商,注册就送数千元优惠券:https://t.cn/AiQe5A0g
腾讯云,良心云,价格优惠: https://t.cn/AieHwwKl
搬瓦工,CN2 GIA 优质线路,搭梯子、海外建站推荐: https://t.cn/AieHwfX9
扫一扫关注公众号添加购物返利助手,领红包
Comments are closed.

推荐使用阿里云服务器

超多优惠券

服务器最低一折,一年不到100!

朕已阅去看看