课堂笔记之大数据技术基础——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数据库 的相关文章

  • 带 Java 客户端的键值数据库

    我基本上想在磁盘上存储一个哈希表 以便以后可以查询它 我的程序是用Java 编写的 哈希表从字符串映射到列表 那里有很多键值存储 但经过大量研究 阅读后 尚不清楚哪一个最适合我的目的 以下是一些对我来说很重要的事情 简单的键值存储 允许您使
  • 正式支持 MonoTouch 的 NoSQL 数据库

    我无法通过设备上的本地数据库找到正式支持 MonoTouch 的 NoSQL 数据库 如果是的话 有人可以在这里提供他们的名单吗 根据http nosql database org http nosql database org 有siaq
  • 使用 cassandra-cli 创建两个复合列

    我的列族需要两个复合列 关键数据类型是BytesType 以下是使用 CQL 的表定义 CREATE TABLE stats gid blob period int tid blob sum int uniques blob PRIMARY
  • Cassandra - 使用主键列的任意子集按主键搜索

    是否有可能在 Cassandra 中找到主键与所有主键字段的任意子集匹配的记录 Example 使用下面描述的表 可以找到主键具有特定的记录type and name没有指定id or size CREATE TABLE playlists
  • 查询 mongodb 返回今天创建的文档

    我如何编写今天创建的结果文档的过滤器 我知道 ObjectId 有时间戳 我试过这个 db doc find id gte ObjectId getTimestamp getTime 我可以写吗 db doc find id getTime
  • 在 MVC 框架中将 noSQL 和 ORM 结合起来用于实际案例应用程序

    一段时间以来 我一直在尝试将过去几年中读到的一些有关 noSQL couchDB mongoDB Redis 的 酷 东西投入实际使用 我非常习惯使用 Django 编写应用程序 并开始使用 Play 当 Java 是唯一可接受的部署选项
  • 如何在Cassandra中搜索不相等的二级索引?

    我需要能够仅使用 对二级索引执行搜索 据我所知 Cassandra 至少需要一个等式索引子句 因为它会迭代该等式索引的所有结果 是否有任何技巧可以仅使用 执行操作 至少在概念上 这是一个坏主意吗 另外 有人知道 Cassandra 是否有计
  • 使用 NoSQL 文档存储数据库有哪些实际用例?

    在过去的几天里 我一直在阅读文档并观看特定于 Mongo DB 的截屏视频 我不知道像这样的解决方案何时会比典型的 pg 或 mysql 环境更好 具体来说 我的问题是在什么情况下 有用例就很好 你会选择 nosql 路线 Thanks 许
  • Neo4j.rb 创建独特的关系

    这是我的 Neo4j 活动节点 class User include Neo4j ActiveNode has many out following type following model class User end john User
  • 适用于 Web 照片库的正确 NoSQL 数据架构

    我正在寻找为照片库的 NoSQL 存储构建合适的数据结构 在我的网络应用程序中 一张照片可以是一个或多个相册的一部分 我有使用 MySQL 的经验 但几乎没有使用键值存储的经验 使用 MySQL 我将设置 3 个表 如下所示 photos
  • 在同一个应用程序上创建多个 PouchDB 数据库是否被认为是糟糕的设计?

    我有 Mysql 背景 现在使用 Pouchdb 我习惯了每个应用程序有 1 个数据库和许多表的 SQL 模式 在 pouchDB 中情况有所不同 因为数据不是存储在表中而是存储在文档中 因此 在我的应用程序中 我有一个任务数据库 使用以下
  • Firebase 数据库 - 编码错误

    我是 Firebase 的新手 我想使用他们的数据库 但编码似乎存在一些问题 这是我使用 UTF 8 编码的示例 json Stack This is madness Overflow 666 这就是当我将 json 导入 Firebase
  • Cassandra 集群 - 特定节点 - 特定表高丢弃突变

    我在生产中的压缩策略是 LZ4 压缩 但我将其修改为 Deflate 对于压缩更改 我们必须使用 nodetool Upgradesstables 强制升级所有 sstable 上的压缩策略 但是 一旦在集群中的所有 5 个节点上完成了 U
  • 在不知道对象键的情况下进行 Cosmos DB 查询

    单个文档示例 id xxxxxx properties a prop type names value John b prop type score value 5 5 c prop type names value Steve 问题 如何
  • 用于标签搜索的数据存储解决方案

    我已经按照预先计算的分数订购了数百万件商品 每个项目都有许多布尔属性 假设总共有大约一万个可能的属性 每个项目有十几个 我希望能够请求实时 几毫秒 给定任意属性组合的前 n 个项目 您会推荐什么解决方案 我正在寻找可扩展性极强的东西 我们目
  • MongoDB 支持浮点类型吗?

    我正在将 mysql 数据库迁移到 mongodb 但我读过 MongoDb 数据类型 然后没有引用浮点类型 如 float double decimal 我如何在 mysql 模式中拥有一些带有十进制类型的字段 我该怎么做或我能做什么 M
  • 如何使用对 Azure 表存储的单个查询检索多种类型的实体?

    我试图了解 Azure 表存储如何创建 facebook 风格的提要 但我陷入了如何检索条目的困境 我的问题几乎和https stackoverflow com questions 6843689 retrieve multiple typ
  • 修订:算法和数据结构

    我需要通过修订来构建和处理数据的想法 例如 我有一个对象数据库 例如汽车 每个对象都有许多属性 这些属性可以是任意的 因此没有一个固定的模式来描述这些对象 这些对象可能保存为键值对 现在我需要更改对象的属性 我不想完全重写它 我希望能够返回
  • PHP 中的 MongoDB - 如何将项目插入集合中的数组中?

    这必须很容易 但我似乎无法弄清楚 假设我有一个集合users这是集合中的第一项 id ObjectId 4d8653c027d02a6437bc89ca name Oscar Godson email email protected cdn
  • ArangoDB:(1 个具有多个边缘定义的图)Vs(每个图 1 个边缘定义)

    我想知道在一个图中拥有多个边定义与每个图都有一个边定义相比是否有任何优势 谢谢你的帮助 使用多个边缘定义而不是仅使用一个边缘定义有多种原因 显示内容差异 您可能需要不同的边缘集合bought and watched 不过 这也可以通过使用标

随机推荐

  • 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