林子雨《大数据技术原理与应用》第五讲——NoSQL数据库

林子雨《大数据技术原理与应用》第五讲笔记


NoSQL数据库特点

  1. 灵活的可扩展性
  2. 灵活的数据模型
  3. 和云计算结合
  4. 查询性能差
  5. 未形成通用的行业标准
  6. 维护更加复杂

NoSQL数据库有四大类型

  • 键值数据库:redis
  • 列族数据库:HBase、Cassandra
  • 文档数据库:MongoDB
  • 图数据库:Neo4j

键值数据库

数据模型:键是一个字符串对象,值可以是任意类型的对象
典型应用:设计频繁读写,拥有简单数据模型的应用
优点:扩展性好,灵活性好,大量写操作性能高,数据模型简单
缺点:无法存储结构化信息,条件查询效率低
不适用情形:无法提供通过值的查询
使用者:百度云数据库(Redis)
作用:是理想的缓冲层解决方案

列族数据库

数据模型:列族
典型应用:分布式数据存储与管理
优点:查找速度快、可扩展性强、容易进行分布式扩展、复杂性低
缺点:功能较少、大都不支持强事务一致性
不适用情形:需要ACID事务支持的情形Cassandra等就不适用
使用者:Facebook(HBase),Yahoo(HBase)
相关产品:Big Table、HBase、Cassandra

文档数据库

特性:能够将自己的数据内容和类型进行自我描述
数据模型:本质上是键值数据库,只不过value是版本化文档
典型应用:存储、索引并管理面向文档的数据或者类似的半结构化数据
优点:性能好(高并发),灵活性高
缺点:缺乏统一的查询语法
不适用情形:不支持文档间的事务
使用者:百度云数据库(MongoDB)
相关产品:MongoDB、CouchDB

图数据库

相关产品:Neo4j
数据模型:图结构
优点:灵活性高、支持复杂的图形算法,可用于构建复杂的关系图谱
缺点:数据模型应用范围有限
典型应用:专门用于处理具有高度相互关联关系的数据,比较适合于社交网络、模式识别、依赖分析、推荐系统以及路径寻找等问题

NoSQL的理论基石

CAP理论

 Consistency 一致性:从不同地方读取到的数据是一致的Availability 可用性:随时可以进行操作Partition tolerance 分区容忍性:当系统中一部分节点无法和其他节点进行通信——即出现了网络分区——系统也能正常运行

理论与实践
研究表明,这三者是不能同时兼顾的。
假设这样一个场景,有一个数据库可以在机器1和机器2上读写访问。机器1上有一个进程A向数据库更新信息,更新信息后机器1自动向机器2发送更新的信息,再从机器2上读信息。如果此时机器1和机器2之间的通信断了,那么从机器2上读取信息就不能读到最新的信息。
如果满足AP,也就是让数据库随时都能访问,出现网络分区也能够运行,那么此时从机器1和机器2上读到的信息是不一致的,也就是不能满足一致性。
如果要让读到的信息一致,满足一致性,要么有一个时间不能读取到信息(也就是在机器1和2之间的网络断了时不能读取信息,因为此时读到的信息是不一致的),即舍弃A;要么不能出现网络分区(上述机器1和机器2之间网络断了的情况不能出现),即舍弃P。因此,三者只能取其二。
By the way, 如果要满足CA,往往会把所有与事务有关的内容放在同一台机器上。

不同产品在CAP理论下的不同设计原则

  • 选择CA:MySQL、SQL Server、PostgresSQL
  • 选择CP:Neo4j、BigTable、MongoDB、HBase、Hypertable、Redits
  • 选择AP:Dynamo、Cassandra、Voldemort、CouchDB、Riak

BASE

Basically Avaible Soft StateEventual consistency的简写。

BASE是NoSQL数据库的理论基石,base有“碱”的意思,而ACID是关系型数据库中事务的四个性质,acid有“酸”的意思,两者刚好是互相对应的。

概念

  • Basically Avaible:基本可用,分布式系统一部分发生问题,另一部分依然可用
  • Soft-State:软状态。有软状态和硬状态之分。硬状态指必须保持一致,软状态允许有段时间不一致。
  • Eventual Consistency:最终一致性。有强一致性和弱一致性之分。两者的区别在于高并发的数据访问下,后续操作是否能够获得最新数据。最终一致性就是弱一致性的特例。
    • 最终一致性可以分为:

      • 因果一致性
      • “读己之所写”一致性
      • 会话一致性
      • 单调读一致性
      • 单调写一致性

如何实现各种一致性
假设一个分布式系统,为了实现它的可靠性,要对数据进行冗余存储,记N为数据冗余的份数,W为更新数据时需要保证写完成的节点数,R为读取数据时需要读取的节点数
W+R>N:强一致性。必有写节点和读节点重复
W+R<=N:弱一致性

实例
HBase是借助底层的HDFS来实现数据冗余备份的,HDFS采用强一致性,设置W=N,R=1

NewSQL数据库

从NoSQL数据库到NewSQL数据库

数据库发展初期(OldSQL),追求一种架构支持多类应用,即One Size Fits All。发展到现在大数据时代,架构多元化,追求多架构支持多类应用

应用场景

  • 分析型应用:用NewSQL支持
  • 事务型应用:用OldSQL支持
  • 互联网应用:用NoSQL支持

NewSQL数据库的特点

  • 仍然采用关系型数据
  • 支持海量数据存储
  • 支持SQL查询
  • 水平可扩展
  • 强一致性
  • 事务一致性

MongoDB 文档数据库

概念

  • C++写的
  • 水平可扩展
  • 将数据存储为文档
  • 数据结构由键值对组成

特点

  • 提供了面向文档存储,操作更加容易
  • 可以设置任何属性的索引
  • 水平可扩展性好
  • 丰富的查询表达式
  • 可替换已完成文档的某个指定字段
  • 可进行MapReduce操作
  • 安装简单

MongoDB中的概念解析

SQL术语\概念 MongoDB术语\概念 解释
database database 数据库
table collection 数据库表\集合
row document 数据记录行\文档
column field 数据字段\域
index index 索引
table joins 表连接MongoDB不支持
primary key primary key 主键MongoDB自动将_id字段设置为主键

MongoDB数据库的服务端和客户端

服务端:mongod
客户端:mongo

集合

在MongoDB中集合就是文档组,存在于数据库中,文档没有固定的结构,可以对集合插入不同格式和类型的数据

使用MongoDB shell访问MongoDB的步骤

  1. 连接服务器
  2. 登陆数据库
  3. 创建数据库
  4. 创建集合
  5. 插入文档

林子雨《大数据技术原理与应用》第五讲——NoSQL数据库相关推荐

  1. 林子雨大数据技术原理与运用期末复习

    一.填空题 1.大数据的数据结构类型包括结构化数据.半结构化数据和___非结构化数据____. 2.大数据的4V10是(只填英文)__数据量大__Volume____._数据类型多_Variety__ ...

  2. 大数据技术原理与应用之【NoSQL数据库】习题

    1.如何准确理解NoSQL的含义? NoSQL是一种不同于关系数据库的数据库管理系统设计方式,是对非关系型数据库的一类统称,它采用的数据模型并非传统关系数据库的关系模型,而是类似键/值.列族.文档等非 ...

  3. 林子雨—大数据技术原理与应用—上机实验三

    题目:熟悉常用的HBase操作 实验环境:        操作系统:ubuntu16.04        hadoop版本:1.2.1        JDK版本:1.8        Eclipse ...

  4. 林子雨—大数据技术原理与应用—上机实验二

    题目:熟悉常用的HDFS操作 实验环境:        操作系统:ubuntu16.04        hadoop版本:1.2.1        JDK版本:1.8        Eclipse 3 ...

  5. 大数据技术原理与应用之【云数据库】习题

    1.试述云数据库的概念. 答:云数据库是部署和虚拟化在云计算环境中的数据库.云数据库是在云计算的大背景下发展起来的一种新兴的共享基础架构的方法,它极大地增强了数据库的存储能力,消除了人员.硬件.软件的 ...

  6. 大数据技术原理与应用课程建设经验分享

    大数据技术原理与应用课程 建设经验分享 林子雨 厦门大学信息科学与技术学院, 福建 厦门 361005   摘要:大数据专业人才的培养是世界各国新一轮科技较量的基础,高等院校承担着大数据人才培养的重任 ...

  7. 大数据技术原理与应用课后题(林子雨)

    大数据技术原理与应用(林子雨) 第1章 大数据概述 1单选(2分) 第三次信息化浪潮的标志是: A.个人电脑的普及 B.云计算.大数据.物联网技术的普及 C.虚拟现实技术的普及 D.互联网的普及 正确 ...

  8. 大数据技术原理与应用 第三版 林子雨 期末复习(二) Hadoop HDFS HBase

    大数据技术原理与应用 第三版 林子雨 期末复习(二) Hadoop HDFS HBase Hadoop生态系统 HDFS HDFS结构 块 Name Node与Second Name Node与Dat ...

  9. 林子雨试卷《大数据技术原理与应用》试题与答案

    <大数据技术原理与应用>试题与答案 问答题(100分): (问答题,共13道题目,第1题4分,第2题6分,第3题10分,第4题10分,第5题16分,第6题6分,第7题12分,第8题6分,第 ...

  10. 大数据技术原理与应用—课后题答案(第一章)

    大数据技术原理与应用_林子雨版_课后题答案(第一章) 1.试述信息技术发展史上的3次信息化浪潮及具体内容. 信息化浪潮 发生时间 标志  解决问题                           ...

最新文章

  1. ajax获取php cookie,Ajax 无法跨域获取 cookie
  2. iOS:弹出窗控制器:UIPopoverController
  3. 理解SQL Server中的锁
  4. 体验决定销量,真假4K争论仅仅是忽悠人而已
  5. java用对话框输出计算结果_Java怎么实现输入一个string表达式然后输出计算的结果...
  6. python 词云 fontpath_Python酷炫词云图原来可以这么玩?
  7. 微信二维码扫码登录的原理
  8. android intent传文件,android如何用intent跳转到文件管理器
  9. NFT交易平台2.0来了,源代码,智能合约整套
  10. EBS Form : 消息字典 fnd_message. (转)
  11. docker Hub-Node模式运行selenium grid4,经常遇到用例运行到60%-65%时无法继续运行
  12. zookeeeper 启动失败 Unexpected exception, exiting abnormally java.io.eofexception
  13. 学生成绩管理系统 002
  14. 使用腾讯云轻量应用服务器搭建网络质量拨测工具 SmokePing
  15. 申请工作居住证办事指南
  16. Charles手机端抓包,抓取小说软件整本小说的示例
  17. java里面出生日期_java出生日期格式
  18. telnet不是内部或者外部命令也不是可运行的程序
  19. 数据库中的全表扫描,索引扫描,以及相关知识点
  20. Java实现搜索在Bait游戏中的应用研究

热门文章

  1. 关于jQuery通知插件toastr的使用
  2. 深度好文:这才是实际工作中的竞品分析
  3. 地铁供电系统原理图_地铁供电系统的运行方式及特点分析吴迪原稿(图文高清版)...
  4. 电脑网线主要分类(网络传输介质)
  5. ios共享账号公众号_新增iOS游戏账号共享06
  6. 4600u黑苹果 r5_黑苹果集显hd4400、hd4600显卡Clover引导驱动方法教程
  7. 当AI邂逅电能:与图知科技一起探索工业AI王座|白洞战报
  8. js 日期时间的格式化工具类
  9. 华为大数据解决方案(PPT)
  10. 苹果手机如何查看html代码,苹果手机怎么利用代号查看硬件信息