课堂笔记之大数据技术基础——NoSQL数据库

2023-05-16

本文概要

  1. NoSQL与关系数据库的比较
  2. NoSQL的四大类型、三大基石
  3. NoSQL和NewSQL数据库的区别
  4. 文档数据库MongoDB编程实践

一、NoSQL概述

NoSQL = Not Only SQL
关系型数据库不可能被完全取代,但是在许多业务场景中,非关系型数据库更有益

1. NoSQL数据的特点

  • 灵活的可扩展性:支持在多个节点进行水平扩展,可以存储海量数据
  • 灵活地数据模型:(HBase)在使用过程中可以动态增删列族
  • 和云计算的紧密结合 :云计算可以根据负载动态地纳入或移出集群中的机器,来达到负载均衡,非关系型数据库由于支持水平扩展,可以与云计算机制紧密结合

传统的关系型数据库特点:

  1. 非常完备的关系理论基础(占据主流市场三四十年)
  2. 具有事务性机制的支持
  3. 高效的查询优化机制

传统关系数据库的缺陷:

  1. 无法满足海量数据的管理需求
  2. 无法满足高并发的需求
  3. 无法满足高可扩展性和高可用性的需求

大多企业都通过MySql集群方式解决负载需求:

  1. 主从服务器实现读写分离,异步方式更新数据
  2. 分库分表

Mysql集群的缺陷:

  1. 复杂性:集群部署和配置非常复杂
  2. 延迟性:主从同步存在延迟
  3. 扩容问题:向集群增加机器时,需要对数据集进行重新划分,非常复杂,人工划分数据集时难以平衡负载

二、NoSQL数据的四大类型

1. 键值数据库

键值数据库特点
键值数据库是理想的缓冲层解决方案

2. 列族数据库

列族数据库特点

3. 文档数据库

是键值数据库的一种,value值是一个文档,多使用JSON数据类型
文档数据库特点

4. 图数据库

图数据库特点
不同数据库产品的比较

三、NoSQL的三大基石

1. CAP理论

CAP理论
CAP不可能兼得,只能取其二,一般有以下几种选择:

  1. CA:放弃分区容忍性,将所有数据放在同一台服务器上,以获取数据的一致性和可用性(传统数据库,扩展性差)
  2. CP:放弃可用性,成就一致性和分区容忍性,使用网络分区,短时间内数据不一致,等数据一致后再去取数据
  3. AP:放弃一致性,即使数据不一致,也要取用,成就可用性和分区容忍性

2. BASE

BASE NoSQL理论基石之一
在这里插入图片描述

3. 最终一致性

最终一致性分类
最终一致性分类
在这里插入图片描述
一致性的实现
实现强一致性的最低要求为W+R=N+1

四、从NoSQL到NewSQL

在这里插入图片描述
在这里插入图片描述
代表产品:亚马逊的RDS和微软的SQL Azure
在这里插入图片描述

五、文档数据库MongoDB

MongoDB中的数据格式叫做BSON,是binary形式的JSON数据
在这里插入图片描述
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

课堂笔记之大数据技术基础——NoSQL数据库 的相关文章

  • 我需要有关 NoSQL/MongoDb 和数据/模型结构的建议

    最近我正在探索NoSQL 数据库 我需要关于如何针对给定问题以最优化 最有效的方式存储数据的建议 我现在的目标是 MongoDB 不过 它应该与 CouchDB 相同 假设我们有这 3 个模型 Story id title User id
  • 如何从领域数据库中查询具有不同结果的java

    我有一个Realm对象类 并在其中存储大量数据 想象我有一个String uid 场地 我想获取 uid 名称 但相同的 uid 名称只能获取一次 例如 uid AA AA BB CC DD BB BB 我想得到只是 AA BB CC DD
  • 使用 MongoDB 与 MySQL 与大量 JSON 字段?

    有一种微博类型的应用程序 两个主要的基本数据库存储是 MySQL 或 MongoDB 我计划对大量数据进行非规范化 即对帖子进行的投票存储在投票表中 并且主帖子表中的计数也会增加 该帖子还涉及其他操作 例如点赞 投票否决 如果我使用 MyS
  • 伏地魔与卡桑德拉相比如何?

    如何伏地魔 http project voldemort com 相比于卡桑德拉 http incubator apache org cassandra 我不是在谈论社区的规模 只想听听实际使用过这两种社区的人的意见 我特别感兴趣的是 添加
  • 对布尔键进行 DynamoDB 查询

    我是 DynamoDB 以及一般的 noSQL 新手 并且在理解一些概念方面遇到了一些困难 特别是一件事给我带来了一些问题 即基于布尔键查询表 我意识到我无法在布尔键上创建主索引或辅助索引 但我不知道理想情况下应该如何对具有以下结构的表进行
  • MongoDB 脚本基础知识 - 如何

    MongoDB 脚本的基础知识是什么 我认为剧本将以 js 我们使用它来运行它mongo try js 但如果我把 print db foo find in try js并使用mongo try js 它会说 MongoDB shell v
  • Firebase 检索嵌套数据

    我在尝试从 Firebase 检索时遇到了一些麻烦 基本上我的组表是这样的 在这种情况下 根据group ID KpFibCHjJ1xpfLd07WJ 有一个account ID KpFiX2L7ENt6EBgrB0S 右边将会有多个帐户
  • 由于新的 couchbase 安装,将数据恢复到 couchbase

    我们有一个 couchbase 服务器 不知何故进行了全新安装 并且我们在那里的所有数据都丢失了 我已经设法备份了 opt couchbase var lib couchbase data 现在 当我尝试将数据复制回来时 它没有显示 cou
  • MongoDB:无法从 BSON 类型 EOO 转换为 Date

    我尝试使用聚合框架 带有 ruby 并像这样投影日期 db requests aggregate project gt id 0 method method user user year year gt timestamp 该文件是这样的
  • 无需服务器端代码即可在 Firebase 中搜索

    我正在尝试获取名称包含 Firebase 给定字符串的所有用户 例如 如果我有这些用户 Devid Andy Bob 我希望获得名称中包含 D 的所有用户 因此我希望得到这样的结果 Devid Andy 这是我的 Firebase 目前的结
  • 如何选择字段总和大于 MongoDB 中的值的位置

    使用 MongoDB 我将如何编写这个常规 SQL 语句 SELECT FROM table WHERE field1 field2 field3 gt 1 我一直在搞乱 group project add 等 我觉得我在围绕解决方案跳舞
  • 寻找一个轻量级的java兼容内存键值存储[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 Berkeley DB 可能是最好的选择 但由于许可问题我无法使用它 还有其他选择吗 你可以试试榛卡斯
  • MongoDB 架构设计 - 实时聊天

    我正在启动一个项目 我认为该项目特别适合 MongoDB 因为它提供的速度和可扩展性 我目前感兴趣的模块是与实时聊天有关的 如果我要在传统的 RDBMS 中执行此操作 我会将其分为 频道 一个频道有很多用户 用户 一个用户有一个频道但有多条
  • nosql 是什么意思?有人可以用简单的话向我解释一下吗?

    在这篇文章中堆栈溢出架构 http highscalability com stack overflow architecture我读到了一些叫做 nosql 的东西 我不明白它的意思 我试图在谷歌上搜索 但接缝我无法确切地了解它是什么 谁
  • 是否可以针对 noSQL DB 构建复杂的查询

    我一直在研究 noSQL DB 但未能为自己满意地回答这个问题 是否可以针对 noSQL DB 构建复杂的查询 我想知道的查询类型是这样的 select from DB where vara gt x AND varb 2 AND varc
  • 是否有一个 nosql 存储也允许存储实体之间的关系?

    我正在寻找 nosql 键值存储 它还提供存储 维护存储实体之间的关系 我知道 Google App Engine 的数据存储允许实体之间拥有和不拥有的关系 任何流行的 nosql 商店都提供类似的东西吗 尽管它们中的大多数都是无模式的 但
  • Cassandra cli:将十六进制值转换为人类可读的格式

    我开始于卡桑德拉 questions tagged cassandra 当我跑步时list or get命令在cassandra cli questions tagged cassandra cli 我得到这样的结果 default use
  • Firebase 数据库结构 - 需要建议

    我知道这个问题可能被视为基于意见的问题 但是我认为值得讨论正确构建数据库的方法 我在 Swift 中开发 iOS 应用程序 并决定使用 firebase 作为我的后端服务 让我们从应用程序描述开始 该应用程序旨在为图书阅读体验提供跟踪和社交
  • Neo4j.rb 创建独特的关系

    这是我的 Neo4j 活动节点 class User include Neo4j ActiveNode has many out following type following model class User end john User
  • ScyllaDB 是否支持 OR 运算符?

    scyladb 中 SELECT 语句的 WHERE 子句中的 OR 条件如何工作 我已经在电子邮件上创建了二级索引 下面的查询工作正常并返回结果 cqlsh gt select from test d emp where email em

随机推荐

  • ros 命名空间

    文章目录 全局命名空间相对名称私有名称节点命名空间 全局命名空间 rosout前面的反斜杠 表明该节点名称属于全局命名空间 之所以叫做全局名称因为它们在任何地方 xff08 包括代码 命令行工具 图形界面工具等的任何地方 xff09 都可以
  • DenseNet及torchvision中的实现

    ResNets Highway Networks Stochastic depth DenseNet他们的共同的特点是 They create short paths from early layers to later layers 他们
  • Xmanager5用Xstart连接CentOS7

    今天安装了Xmanager5 xff0c 原本已经有了Xshell5 xff0c 没有冲突 xff0c 测试Xftp Xshell使用上均无问题 到了Xstart却出错了 xff0c 客户端设置完后点击运行 xff0c 出现报错 查找了许多
  • CAN总线入门学习(一)

    今天带着大家学习 xff0c CAN总线 1 概要 本资料是面向 CAN 总线初学者的 CAN 入门 对 CAN 是什么 CAN 的特征 标准规格下的位置分布等 CAN 的概要及 CAN 的协议进行了说明 2 使用注意事项 本资料对博世 B
  • java调用接口

    long dateStr 61 System currentTimeMillis 1000 String url 61 34 34 创建参数 JSONObject jsonObject 61 new JSONObject jsonObjec
  • 英特尔NUC 11板载USB3.0座子接口定义

    规格书没有座子PIN定义 xff0c 于是我找技术支持提供了定义
  • 宝塔配置Workerman

    map span class token variable http upgrade span span class token variable connection upgrade span span class token punct
  • px4飞控和机载电脑通信:机载电脑接收飞控的自定义px4消息

    机载电脑接收飞控的自定义px4消息 mavros功能包能够实现px4飞控和机载电脑之间的实时通信 而对于大部分的消息通信mavros都已经有相应接口可以调用 xff0c 例如 xff1a 位置 期望位置 速度 四元素等消息都可以通过C 43
  • px4飞控和机载电脑通信:飞控接收机载电脑的自定义mavlink消息

    前面一篇讲了机载电脑怎么接受飞控的px4消息 这一篇讲解如何飞控怎么接收从机载电脑传过来的消息 分成两部分 机载电脑发送消息 飞控接收消息 pixhawk版本 pixhawk4 px4版本 1 11 2 ros版本 1 14 10 机载电脑
  • 多无人机通信-路由器实现

    多无人机通信 多无人机之间相互通信是实现编队飞行的基础 而想要实现通信就需要组建网络 在网络之间实现数据信息的互相传输 按结构分成两大类 中心节点网络和无中心节点网络 我们这里所用的路由器就是中心节点网络 所有的数据的传输都要经过中心节点
  • js做文件分片上传

    js做文件分片上传 分片上传视频 xff0c 图片 xff0c 音频 xff0c 转base64 64 Layout 61 null lt DOCTYPE html gt lt html gt lt head gt lt meta name
  • 锐捷交换机基本配置命令

    锐捷交换机基本配置命令 锐捷交换机 xff0c 忘记colsole口的en密码 xff0c 重启交换机 xff0c 立即按ctrl 43 c xff0c 进入bootloader 菜单 xff0c 再按ctrl 43 q xff0c 然后输
  • 驱动设计思想(机制、策略、分离、分层)

    1 机制和策略 1 机制就是提供什么功能 xff0c 策略就是怎么使用这些功能 在编写驱动时需要在编程时间和驱动的灵活性之间取一个可接受的折中 xff0c 驱动提供机制 xff0c 尽量不提供策略 xff0c 策略让上层应用去做 2 机制和
  • debian重启没办法进入图形界面

    在遇到重启有时候没办法进入图形界面的情况下 xff0c 你可以考虑是自己电脑或者服务器显卡的问题 xff0c 如果你进入了命令行的界面 xff0c 执行 etc init d kdm restart 可以重新启动图形界面的话那么就可以肯定时
  • linux线程详解:线程概念、线程调度、线程安全、线程模型

    1 线程与进程的区别 1 线程是轻量级的进程 xff0c 是程序执行流的最小单位 xff1b 2 进程是资源分配的最小单位 xff0c 线程是调度的最小单位 xff1b 3 进程可以创建线程 xff0c 线程不可以创建进程 xff1b 4
  • ARM架构的中断机制详解(S5PV210芯片)

    1 中断介绍 1 中断是指计算机运行过程中 xff0c 出现某些意外情况需主机干预时 xff0c 机器能自动停止正在运行的程序并转入处理新情况的程序 xff0c 处理完毕后又返回原被暂停的程序继续运行 2 中断是为了实现宏观上的并发 比如我
  • USB接口WIFI(MT7601芯片)的驱动源码移植过程详解(驱动源码编译、wpa_supplicant工具交叉编译、文件系统移植)

    1 MT7601的移植步骤 1 确认你的WT7601网卡硬件是正常的 xff1b 2 修改驱动源码 xff0c 依赖内核源码树编译并加载 xff1b 3 交叉编译wpa supplicant工具 xff0c 移植到根文件系统里 xff1b
  • 时钟芯片DS1302时序分析、读写代码解析

    1 DS1302芯片原理图分析 引脚名称功能X1 X2外接32 768kHz 晶振 xff0c 用于内部计时SCLK和主控通信的时钟线I O数据输入输出引脚CE使能引脚VCC1接电池供电 xff0c 保证主板掉电时间能继续走VCC2主板的电
  • 服务器重启后vncserver无法启动、连接不上问题解决

    解决方案 xff1a 1 终端输入 xff1a vncserver xff0c 那么可能出现如下结果 xff1a root 64 hadoop vncserver Warning hadoop 1 is taken because of t
  • 课堂笔记之大数据技术基础——NoSQL数据库

    本文概要 NoSQL与关系数据库的比较NoSQL的四大类型 三大基石NoSQL和NewSQL数据库的区别文档数据库MongoDB编程实践 一 NoSQL概述 NoSQL 61 Not Only SQL 关系型数据库不可能被完全取代 xff0