【MongoDB】什么是NoSQL及BASE理论

1.什么是NoSQL 

nosql是设计互联网规模数据库解决方案的一种新方式。它并非一个产品或一项技术,而是定义一套
数据技术的术语,它并不以传统的RDBMS原则为基础。

RDBMS系统基于:ACID事务的概念。
A:原子性:一个事务的所有变更要么都应用,要么都不应用。
C:一致性:应用事务后数据处于一致性状态。
I:隔离性:被应用到相同数据集的事务都是彼此独立的。一个事务不干扰另外一个事务。
D:持久性:变更在系统中是永久的。并且出现任何故障也不会丢失。

nosql使用场景:
1.社交网络图 
谁与谁有关联,谁的文章应该在一个社交网络站点的用户涂鸦强或主页上可见。
2.搜索和检索。
搜索具有特定关键字的所有相关页面,按照页面上该关键字出现的次数排序。

noSQL定义;
NOSQL是用于数据存储的一个涵盖性术语,不遵循RDBMS原则。
不仅仅是SQL;

nosql使用了一种被称为BASE的方法。

2.CAP定理 

CAP定理(布鲁尔定理)
该定理规定,在设计一个分布式环境中的应用程序时,存在三种基本需求,分别是
一致性,
可用性,
分区容错性。

一致性:意味着在修改数据的任何操作被执行之后,数据仍旧保持一致,并且所有访问该应用程序的用户
或客户端都要得到相同的更新后的数据。
可用性:意味着系统总是保持可用。
分区容错性:即使系统被划分为无法彼此通信的机组服务器,也要持续第正常运行。

CAP定理宣称:在任何时间点,一个分布式系统都只能满足上面三个保证中的两个。

3.base理论

BASE:
BA:基本可用,根据CAP定理,系统是可用的。
S:软状态:即便没有为系统提供任何输入,其状态也将随时间而变化。这符合最终一致性。
E:最终一致性:从长远来看,系统将达到一致性,即便这段时间内没有任何输入被发送到系统也会如此。


NRW:是用于描述最终一致性模型是如何在所有nosql数据库中实现可能会因不同的nosql数据库而不同。

N:是数据库已经保存的数据副本数量。
R:是在返回一个读取请求的输出之前,一个应用程序需要涉及的副本数量。
W:是在一个写操作被标记为成功之前需要对其进行写入的数据副本数量。

可以同时在读和写操作层面实现一致性。


写操作。
N=W 
写操作将更新所有的数据副本。这个类似于实现同步复制时传统RDBMS数据库的工作方式。
这个设置会降低写的性能。

如果写性能是关注点,希望写快速完成,可以设置W=1,R=N 
这表明,只写入一个副本,读取时会读所有的副本,没有被更新的副本需要等待更新完成才读取完成。
这样会降低读的性能。

大多数nosql实现都是使用:N>W>1 ;
这表明需要成功更新多个节点,不过并非所有节点都需要同时更新。

读操作:
如果R=1,那么读操作将读取任意一个副本,它可能是过期的。
如果R>1,那么会读取多个副本,并且读取最近的值。不过这会降低读操作的性能。

使用N<W+R 总是会确保一个读操作检索最新的值。这是由于写副本和读副本的数量总是大于实际的副本数量。
从而确保至少有一个读副本具有最新的版本。这是约定俗成的组合。



ACID                     BASE 
原子性                  基本可用 
一致性                  最终一致性 
隔离性                  软状态 
持久性。

4.NOSQL的特点

NOSQL的特点。
高扩展性:新一代的nosql数据库旨在横向扩展。使用低端廉价服务器进行水平扩展。
可维护性和管理运营
nosql数据库主要旨在处理自动修复,分布式数据以及较简单的数据模型,这会导致低水平的可维护性和管理运营。
低成本:NOSQL数据库的目的通常在于使用一个廉价服务器的集群,以便让用户可以花费较低的成本
来存储和处理更多的数据。
灵活的数据模型:
NOSQL数据库拥有一个非常灵活的数据模型,这使得台们可以处理任何类型的数据。任何涉及更新数据库模式
的应用程序都能被轻易实现。

NOSQL的缺点。
成熟度
大多数nosql数据库都是试生产版本,其关键功能仍然有待完善。
支持度
大多数nosql数据库都来自曾经开源的初创公司。相较于企业级软件公司,其支持度极小。可能没有全球影响力
或支持资源。
有限的查询功能
nosql数据库通常被开发出来以满足网络规模应用程序的扩展需求,他们提供了有限的查询功能。
管理运营
要求具有安装和维护该解决方案的技能和精力。
专业知识:其技术有关的专业知识局限于开发人员和管理员社区。

5.SQL和NOSQL的对比

RDBMS主要是纵向扩展,横向扩展能力差。难以处理模式变更和扩展问题。

RDBMS:
模式灵活性:添加一个列式禁忌。影响性能,可能需要重建表。
复杂查询:消耗大量的数据库资源来实现。
数据更新:长期开启事务会损害数据库的性能。
可扩展性:
跨物理数据库实例同步需要多少时间?
跨数据中心同步数据需要多少时间?
同步数据需要多大的宽带?
交换的数据是否已经优化过?
跨服务器同步任意更新时的延迟是多少?

NOSQL;
模式灵活性:面向列的数据库会将数据存储为列。使得在运行时添加一个列成为可能。
复杂查询:不支持关系或外键。不能存在复杂查询,也没有join
数据更新
数据更新和跨物理实例的同步时要解决的难点工程问题。
MongoDB 允许跨节点并发更新,具有冲突解决方案的同步。
可扩展性: 
nosql解决方案提供了更大的可扩展性。

6.NOSQL数据库的种类

基于文档的   mongodb 
XML数控库    MarkLogic
图形数据库:GraphDB
键值存储: Cassandra,Redis,Memcached 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值