2019/08/08 NoSQL基础概念及MongoDB(01)~1

MongoDB属于nosql的领域,nosql是一种技术流派而不是特定的技术
大数据通常描述四维线
google收购的公司都是人工智能之类在特定领域走在前列的公司

并行数据库系统,是新一代高性能的数据库系统,是在MPP和集群并行计算环境的基础上建立的数据库系统。一般都支持关系型数据模型和sql语句查询,对传统意义上的数据库做了并行扩展,比如mysql的分片技术,将数据切片分布在不同 的节点上,来实现存储
使用了两种技术员:
水平切割和分区查询
,切割以后,数据就分布在不同的物理节点,每一个节点称为一个分区,从逻辑角度来讲,每个数据片称为一个分区,查询操作可能需要跨分区进行查询,sql的查询要落在越少的分区上越好,

nosql出现在1998,非关系模型,分布式的,通常不支持ACID数据库设计范式的数据库管理系统,有几个特点
使用非常简单的数据模型,实现了元数据和数据分离,弱一致性
CAP,可用性,一致性,分区容错性,分布式系统通常关注其中两个,可用性和分区容错性
nosql可以完成高吞吐量,
google的mapreduce每天处理的数据量可以达到20PB、
较高的水平扩展能力和低端硬件集群
nosql不支持ACID,所以就不能保证严格意义上的事务操作,因此对于高事务要求,NOSQL是不适用的,功能简单,要存储复杂的数据,还需要额外的设计,没有统一的查询语言
nosql有很多技术流派
1.数据模型和查询语言没有经过数学验证
2.不支持ACID特性
3.功能简单
4.没有统一的查询模型

还有一种叫newsql管理系统,关系型数据在处理优化的时候需要优化的因素有很多
关系型数据库在处理ACID处理时,有几个要素对性能影响非常大,比如
节点间的通信,

缓冲区管理,把数据库组成页缓存在缓冲区
针对这些问题,新数据库在针对这方面采用了不同的设计方式,比如取消了耗资源的缓冲池,进而在整个内存中运行,把所有数据放在内存中运行,内存数据库
很多摒弃了单线程服务加锁的机制,采用并行模式多线程用同一个锁,才用冗余机制,来代替单机的昂贵资源消耗,这种尽可能改进了传统数据库,提升了性能,扩展到了多机系统上
代表产品比如clustrix,GenieDB,ScaleBase,NimbusDB
mysql的Ndb cluster 也算是newsql的实现
mysql的变种,适合在云环境,Drizzle

nosql和newsql不同在于,newsql可以提供sql数据库的质量保证,也能够提供nosql的扩展性保证,是一种跨界产品。
MongoDB是nosql的一只,非常火热

还有云数据管理系统,DBAAS,数据库即服务,

大数据的分析处理
常用的是MapReduce机制,将数据先做map,切割到多个节点上去,而后再做聚合,hadoop就是这样的系统,用的是分布式文件存储,
HBASE是nosql的一种
在统计学,R语言非常流行,也是开源编程语言,程序对数据进行编程处理,还可以直接展示非常直观的结果

在这里插入图片描述
CAP:
可用性,强一致性,P分区容错性(网络分区了,仍然可以接受请求,处理请求)
mysql单机实现可用性,一致性
分布式系统一般,可用性,和分区容错性

在这里插入图片描述
ACID,原子性,一致性,隔离性,持久性
base基本可用,软状态,最终一致性
base是相对于ACID的一种技术

弱一致性根据保证还可以划分不同的模型
因果一致性,
读自己写一致性好,读自己写的数据是一致的
会话一致性
单调读一致性,用户读取到某个数据后,后续的操作不会读到该数据更早版本,
时间轴一致性,所有数据的副本以相同的数据执行同一个更新操作

ACID和BASE在功能实现上是有所区别的在这里插入图片描述
ACID BASE
强一致性 弱一致性
隔离性 可用优先
注重事务提交 尽力保证
嵌套事务 近似最近的数据,因为弱一致性
可用性 首选可用性
悲观的保守的方案 较为简单的数据模型

ACID:强一致性,隔离性,采用悲观保守的方法,难以变化,
BASE:弱一致性,可用性优先,采用乐观的方法,适应变化,更简单,更快

数据一致性的实现技术
NRW策略,N表示数据所有数据副本数,R完成读操作最少设计到的副本数,W完成写操作涉及到的副本数,
R+W>N强一致性,R+W<=N弱一致
投票系统,qurom
2pc,2端式提交,一种协议,保证数据强一致性,主要把事务处理阶段分两个阶段,1.请求阶段,准备2.提交阶段,
paxos,也是实现数据一致性的一种技术
vector clock向量时钟
在这里插入图片描述

数据存储模型:对nosql划分的流派就是根据数据存储模型来划分的
http://www.nosql-database.org
**列式 存储模型
文档数据模型
键值数据模型
图式数据模型(地理计算)
对象数据库
网格,云数据库解决访问
**

在这里插入图片描述
在这里插入图片描述
主要流派
列式存储 (展示结果跟表一样,不支持关系型数据的表链接查询)
键值数据模型(模型简单,易于实现)
文档数据模型 mongodb
图式数据模型(把数据的每个位置当做一个节点,并围绕节点,朝某个方向发散得到多个访问路径)

列式模型:、
应用场景:在分布式文件系统之上提供支持随机读写的分布式数据存储
典型产品:HBASE (有中心节点,有元数据服务器) ,Hypertable(facebook)
数据模型:以“”列“”为中心进行存储,将同一列数据存储在一起
优点:快速查询、高可扩展性、易于实现分布式扩展

mysql能用的,mongodb都可以用,区别是mysql支持事务,mongodb不支持跨表事务

文档模型:
应用场景:非强事务需求的web应用
典型产品:mongodb、elasrticsearch(围绕apache,lucene,搜索引擎构建的搜索引擎工具,经常被拿来存储web服务的日志的,快速实现分析,logstash来收集日志存到els中,kibana是个web页面,提供了搜索页面)、couchDB,coushbase server
数据模型:也是键值模型,但存储为文档
优点:数据模型无非事先定义

memacached只是一个缓存,不是数据库

键值模型:
应用场景:内容缓存,用于大量并行数据访问高负载场景
典型产品:redis、dynamoDB(亚马逊研发,适合在较快速度上的SSD硬盘),riak,genidb,memachedb(新浪研发的,memacached提供持久存储服务)
数据模型:基于hash表实现的key-value
优点:查询迅速
redis的数据结构:string,映射,集合,有序集合,列表

图示模式:
应用场景:社交网络、推荐系统、关系图谱
典型产品:Neo4J(最知名),Infinite graph,titan,Trintiv
数据模型:图示结构,提升效应算法性能
优点:适应于图示计算场景
在这里插入图片描述在这里插入图片描述
**易于伸缩扩展高性能的开源的,schema free 灵活易变,基于文档的 nosql关系型数据库
纵轴表示越往上,扩展性越强
横轴表示提供的功能的丰富性
RDBMS关系型管理数据库,功能强大,扩展很差
memcached只支持kv
**
MongoDB特性在这里插入图片描述
1.适用存储海量数据,2.基于文档的数据库系统。3.c++语言,开源GPL协议,支持solaris,linux,macos
由10gen商业公司来负责维护
在这里插入图片描述在这里插入图片描述
利用json的方式来实现数据存储,支持索引,在单个列上,支持64个索引,
不支持事务,但支持原子事务
内存映射文件,支持延迟写
scalable扩展性
强大复制功能,一种类似主从复制,一种是副本集复制机制,一个几点出现故障,能快速自己内部自己选举新的主节点
auto-sharding实现自动分片机制(mysql要分片需要自己使用分片框架)
官方文档很丰富
在这里插入图片描述查询也是基于文档来实现,不能使用select,查询语句是json格式
可以在all shards上实现并行查询
gridfs分布式文件系统,
支持geospatial indexing 地理位置索引信息
有许多的many production deployments

适合哪些场景
web站点
缓存
较大数据量
高扩展性
没有严格事务要求,

在这里插入图片描述
不满足的场景
sql
对事物高要求
商业
在这里插入图片描述

mongodb:nosql,文档存储,json数据模型,

https://www.mongodb.com在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值