2-NoSQL(非关系型数据库)-入门概述

2023-05-16

1、NoSQL是什么?

         NoSQLNot only SQL,不仅仅是数据库),泛指非关系型数据库数据库,其数据存储不需要固定的模式,无需多余操作就可以横向扩展。

f8a344e92061ef39ce07c26a7cd4419f041.jpg

2、传统的RDBMS VS NOSQL

83a1cec130be7541cf8b048fa557d70109f.jpg    8d272f08bb8349d841469975db0965982fd.jpg

3、传统的非关系型数据库:RedisMemcacheMongoDB

  • MongoDB是最像关系型数据库的一种非关系型数据库
  • 若只想干一件事,比如只干“高速缓存”,就采用Memcache
  • 但若想一招多能,数据类型丰富,采用Redis,Redis主要用于:KV+Cache+Persistence+……

 

4、当下NOSQL的经典应用  【应该将SQLNOSQL一起使用】

问:阿里巴巴中文站商品信息如何存放?【以女装/女包包为例】

f65df3275316220031c1a931ade9234729c.jpg           314a1986980a4f8c4431996b243267ca2d2.jpge0d5618546188ee00985625f320521d9f9c.jpg                     1bfad8b00349d07d364cd4409eeef86e7ba.jpg

8afba9cf59a03c71237addf731dfcbee27f.jpg                 db66112fe3c355caafb1aa1fc1e58409689.jpg

 

5NOSQL数据模型简介   

问题:以一个电商客户、订单、订购、地址模型来对比下关系型数据库和非关系型数据库?

1)关系型数据库:用户表、订单表、地址表、订单类别、支付、商品   【ER图(1:1、1:N、N:N,主外键等常见)】

6a6500d5298e882c92bd0154583d82bce43.jpg【ER图】

2)非关系型数据库(NOSQL):需要用BSON(类似于Json的存储格式)画出构建的数据模型

非关系型数据库中:customer>orders>orderPayment

30e5748d018588fa05deb9343907eba5b05.jpg

ea5244cfa6fa670edd38bba72179cc72501.jpg

3)总结:NOSQL数据库模型===>聚合模型:包括KV键值、Bson、列族、图形

①KV键值对(典型:新浪(BerkeleyDB+redis);美团(redis+tair);阿里、百度(memcache+redis))

②文档型数据库(bson格式(类似于json串的数据表达和描述)比较多,一般采用MongoDB)

③列存储数据库(按列存储数据,特点:方便存储结构化和半结构化数据、数据压缩,对针对某一列或者某几列的查询有非常大的IO优势。)

④图关系数据库(一般都是存放关系:比如朋友圈社交网络、推荐系统等)eb786a60eb78e83e5afef5abf772c8cce90.jpg

四者比较:fddf19ef9930107f7060920f456406c11f8.jpg

 

6、在分布式数据库中CAP原理CAP+BASE

1)传统的关系型数据库需要具备ACID 【注:ACID必须要全部具备】

原子性(A-Atomicity):整个事务中的所有操作,要么全部完成,要么全部不完成。

一致性(C-Consistency):在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏。

独立性(I-Isolation):有两个事务在相同的时间内执行相同的功能,隔离性将确保每一事务在系统中认为只有该事务在使用系统。【串行化】

持久性(D-Durability):在事务完成以后,该事务所对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。

2NOSQL非关系数据库需要具备CAP

CConsistency一致性):所有的节点上的数据时刻保持同步

AAvailability可用性):每个请求都能接受到一个响应,无论响应成功或失败

PPartition tolerance分区容错):系统应该能持续提供服务,即使系统内部有消息丢失(分区)  【必须实现!】

3CAP只能32

c9a7b005bf80caf96b1b704b5bf52ced420.jpg     

一般的使用:f12914433a04101bee408b3266262b63ba9.jpg

4BASE为了解决关系数据库强一致性引起的问题而引起的可用性降低而提出的解决方案。

BASE=Basically Available (基本可用)+Soft state(软状态)+Eventually consistent(最终一致)   【即:相当于牺牲C,完成AP】

5)分布式+集群简介

①分布式:不同的多台服务器上面部署不同的服务模块(工程),他们之间通过Rpc/Rmi之间通信和调用,对外提供服务和组内协作。

②集群:不同的多台服务器上面部署相同的服务模块,通过分布式调度软件进行统一的调度,对外提供服务和访问。

                   【集群=人多力量大】

③分布式系统:(distributed system):由多台计算机和通信的软件组件通过计算机网络连接(本地网络或广域网)组成。分布式系统是建立在网络之上的软件系统。正式软件的特性,所以分布式系统具有高度的内聚性和透明性。因此,网络和分布式系统之间的区别更多的在于高层软件(特别是操作系统),而不是硬件。分布式系统可以应用在不同的平台上,如:PC、工作站、局域网和广域网等。

转载于:https://my.oschina.net/pansy0425/blog/3073618

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

2-NoSQL(非关系型数据库)-入门概述 的相关文章

  • C#四种相等性判断方法 equals,referenceEquals

    C 中的ReferenceEquals Equals以及 61 61 C 中有一共有四种相等性判断方法 xff1a Object中定义的三个方法 public static bool ReferenceEquals object objLe
  • C++的Opencv动态库遇到的问题

    1 c 中的位图传入时注意bitmapdata的 stride这个参数 xff0c 步幅 xff0c 图像宽度 通道数 xff0c 必须是整4的倍数貌似 xff0c 待确定 2 某个对象正在在使用的异常 xff0c 用lock锁锁住共享资源
  • C#内存分配概念

    在C 中 xff0c 内存分成5个区 xff0c 他们分别是堆 栈 自由存储区 全局 静态存储区和常量存储区 栈 xff0c 就是那些由编译器在需要的时候分配 xff0c 在不需要的时候自动清楚的变量的存储区 里面的变量通常是局部变量 函数
  • C#中Marshal 类的内存操作的一般功能概述

    Marshal 类的内存操作的一般功能 Marshal类 提供了一个方法集 xff0c 这些方法用于分配非托管内存 复制非托管内存块 将托管类型转换为非托管类型 xff0c 此外还提供了在与非托管代码交互时使用的其他杂项方法 命名空间 Sy
  • C# Marshal的使用,非托管内存中分配内存注意的问题

    IntPtr ptr 61 Marshal AllocHGlobal 704 576 3 如果没有手动释放内存 xff0c 会有内存溢出 xff1b 发生OutOfMemoryException 没有足够的内存继续执行程序时引发的异常 调用
  • Lock锁的问题

    多个线程共用一个锁时 xff0c 同一时间只有一个可获得锁执行 xff0c 其他线程会阻塞进入队列 xff0c 按理解事件如果是多线程的 xff0c 那么每次事件触发的含lock的函数都会将进入队列等待 xff0c 越排越多 需待实验证明
  • SVN的Status字段含义小记

    执行SVN up和svn merge等命令出现在首位置的各字母含义如下 xff1a 无修改 A 新增 C 冲突 D 删除 G 合并 I 忽略 M 改变 R 替换 X 未纳入版本控制 xff0c 但被外部定义所用 未纳入版本控制 该项目已遗失
  • c#中在工作线程创建窗体并操作

    实例1 public void CycleShow 循环绘图 Task Factory StartNew 61 gt threadB 61 new Thread 61 gt AllDealWithSpectrumDicSingle Clea
  • c#绘制星图靶标实例

    public partial class Form2 Form public Form2 InitializeComponent private void button1 Click object sender EventArgs e Ta
  • C#工作线程创建窗体及绘制星图实例

    public partial class Form2 Form public Form2 InitializeComponent private void button1 Click object sender EventArgs e Ta
  • 委托事件的线程问题

    事件注册方法或委托后 xff0c 事件所在的线程执行注册的方法或委托 xff0c 所以如果方法中有跨线程控件就需要使用invoke等处理
  • 怎么判断应用程序是多少位运行的

    C 中 int bitSize 61 IntPtr Size 指针多少字节 if bitSize 61 61 8 MessageBox Show 34 64位程序 34 else if bitSize 61 61 4 MessageBox
  • 图像的色彩类别,灰度化,二值化

    灰度化 xff1a 在RGB模型中 xff0c 如果R 61 G 61 B时 xff0c 则彩色表示一种灰度颜色 xff0c 其中R 61 G 61 B的值叫灰度值 xff0c 因此 xff0c 灰度图像每个像素只需一个字节存放灰度值 xf
  • 服务器与客户端概念

    比如说 xff0c 你浏览百度的网页 xff0c 你的电脑就是客户端 xff0c 而百度网页所存放的机器就是服务器 你通过internet互联网连到百度网页服务器 xff0c 才能浏览网页 再比如说 xff0c 你玩网络游戏 xff0c 你
  • 图像灰度图,直方图,像素通道问题

    1 图像直方图概述 直方图广泛运用于很多计算机视觉运用当中 xff0c 通过标记帧与帧之间显著的边缘和颜色的统计变化 xff0c 来检测视频中场景的变化 在每个兴趣点设置一个有相近特征的直方图所构成 标签 xff0c 用以确定图像中的兴趣点
  • 深入浅出的讲解傅里叶变换(真正的通俗易懂)

    我保证这篇文章和你以前看过的所有文章都不同 xff0c 这是 2012 年还在果壳的时候写的 xff0c 但是当时没有来得及写完就出国了 于是拖了两年 xff0c 嗯 xff0c 我是拖延症患者 这篇文章的核心思想就是 xff1a 要让读者
  • 理解图像傅里叶变换的频谱图

    很多人都不了解图像 xff08 二维 xff09 频谱中的每一点究竟代表了什么 xff0c 有什么意义 一句话解释为 xff1a 二维频谱中的每一个点都是一个与之一 一对应的二维正弦 余弦波 视觉的优势永远大于其他器官对人的作用 xff0c
  • 机器视觉自动数据标注方法

    目录 一 背景阅读 个人总结 xff1a xff08 半 xff09 自动数据标注的方法基本都是采用类似的思路 xff0c 即通过少量标注数据进行训练后得到一个预训练模型 xff0c 然后再次基础上对该网络的输出结果进行人工核验 xff0c
  • 理解图像的傅里叶变换

    最近在看图像的傅里叶变换 xff0c 看着频谱图一直没看明白到底为啥是那样的 xff0c 跟同学研究了好久 xff0c 终于想明白了 感谢同学的耐心指导 xff01 大家相互讨论真的很快就能出结果 xff0c 多讨论 xff0c 多学习 图
  • 快速傅里叶变换(FFT)详解

    快速傅里叶变换 xff08 FFT xff09 详解 xff08 这是我第一次写博 xff0c 不喜勿喷 xff09 关于FFT已经听闻已久了 xff0c 这次终于有机会在Function2的介绍下来了解一下FFT了 快速傅里叶变换 Fas

随机推荐

  • 图像处理:如何理解傅里叶变换在图像处理中的应用

    声明 xff1a 这篇文章的主要目的是通过建立一维傅里叶变换与图像傅里叶变换中相关概念的对应关系来帮助读者理解图像处理中的离散傅里叶变换 xff0c 因此 xff0c 理解图像中离散傅里叶变换的前提条件是读者需要了解一维傅里叶变换的基本知识
  • 图像处理中的傅里叶变换和频率域滤波概念

    写在前面的话 作者是一名在读的硕士研究僧 xff0c 方向是机器视觉 由于视觉是一门相对复杂的学科 xff0c 作者在课堂上学到的东西只是非常浅显的内容 xff0c 我们老师说是 xff0c 领我们进了个门 现在打算利用图书馆和网络上的资源
  • 图像处理的傅里叶变换理解

    傅立叶变换在图像处理中有非常非常的作用 因为不仅傅立叶分析涉及图像处理的很多方面 xff0c 傅立叶的改进算法 xff0c 比如离散余弦变换 xff0c gabor与小波在图像处理中也有重要的分量 印象中 xff0c 傅立叶变换在图像处理以
  • 傅里叶变换分类

    傅里叶变换 傅里叶变换 xff08 Fourier transform xff09 是一种线性的积分变换 xff0c 从时间转换为频率的变化 1 1 连续傅里叶变换 这是将频率域的函数F 表示为时间域的函数f xff08 t xff09 的
  • C++实现二维离散傅里叶变换

    在上一篇文章 C 43 43 实现一维离散傅里叶变换 中 xff0c 我们介绍了一维信号傅立叶变换的公式和C 43 43 实现 xff0c 并阐述了频域幅值的意义 一维傅立叶变换只适用于一维信号 xff0c 例如音频数据 心脑电图等 在图像
  • MFC显示JPG,bmp图片

    主要代码如下 xff1a 方法说明 显示JPG和GIF BMP图片 参数说明 CDC pDC 设备环境对象 参数说明 CString strPath 要显示的图片路径 参数说明 int x 要显示的X位置 参数说明 int y 要显示的Y位
  • MFC关于JPG图片显示处理的几个方式

    做远程视频监控项目 xff0c 接触较多图片处理方面问题 xff0c 作为学习做以下记录 xff1a 一 截图默认bmp格式转jpg压缩 采用jpglib库去实现 二 jpg图片接收后MFC显示 四种方式 MFC提供的CWnd只有默认加载B
  • opencv学 之图像傅里叶变换dft

    一 前言 接触了图像的傅里叶变换 xff0c 数学原理依旧不是很懂 xff0c 因此不敢在这里妄言 下午用Opencv代码实现了这一变换 xff0c 有一些经验心得 二 关键函数解析 2 1copyMakeBorder 扩展图片尺寸 傅里叶
  • UML轻松入门之动态建模

    在UML中 xff0c 静态建模可以描述系统的组织结构 xff0c 而动态建模则可以描述系统的行为和动作 在动态建模机制中 xff0c 以消息完成对象之间的交互 xff0c 用状态图 顺序图 协作图和活动图来描述系统的行为 消息 在面向对象
  • C++实现 (FFT)一维快速傅里叶变换

    一维离散傅里叶变换的公式为 xff1a 如果直接基于该定义进行编程实现 xff0c 则算法时间复杂度为O N2 具体的编程实现我们已经在 C 43 43 实现一维离散傅里叶变换 中介绍过了 当一维信号长度达到几十万个信号时 xff0c 当前
  • 信号傅里叶变换后的实数和虚数部分理解

    傅里叶 xff08 FFT DFT 傅立叶 Fourier xff09 傅里叶变换的结果为什么含有复数 xff1f 为什么傅里叶变换的结果含有复数成份 xff1f 看了很多关于FFT的资料 xff0c 现在看到一个资料说FFT转换的结果是实
  • 从头到尾彻底理解傅里叶变换算法

    http www xuebuyuan com 2052774 html 经典算法研究系列 xff1a 十 从头到尾彻底理解傅里叶变换算法 上 作者 xff1a July dznlong 二零一一年二月二十日 推荐阅读 xff1a The S
  • 一维傅里叶变换后的复数怎样理解?

    我刚开始学傅氏变换也有这样的疑问 xff01 首先回答问题一 xff1a 为什么一个实信号经过傅氏变换后 xff0c 再反变换回来得到的是一个复数 这是由于matlab计算引起的 xff0c 你在计算傅氏反变换后引入了复数 xff0c 最后
  • 二维傅里叶变换是怎么进行的?

    1 首先回顾一下一维FT 通俗来讲 xff0c 一维傅里叶变换是将一个一维的信号分解成若干个三角波 对于一个三角波而言 xff0c 需要三个参数来确定它 xff1a 频率 幅度 A xff0c 相位 因此在频域中 xff0c 一维坐标代表频
  • 傅里叶变换和逆傅里叶变换numpy

    理论基础 时域 xff1a 以时间为横坐标 频域 xff1a 以频率的倒数为横坐标 xff0c 可以看出 xff0c 频域更加简单 相位 xff1a 与时间差有关的一个概念 傅里叶说 xff0c 任何连续周期信号 xff0c 可以由一组适当
  • 复数的物理意义

    很不错的文章 xff01 xff01 复数最直观的理解就是旋转 xff01 4 i i 61 4 就是 4 在数轴上旋转了180度 那么4 i就是旋转了90度 另外 xff0c e t是什么样呢 xff1f 但当你在指数上加上i之后呢 xf
  • 动态初始化一维数组详解

    动态初始化一维数组 1 动态初始化一维数组 xff0c 会在堆内存中分配这个数组 并且数组中每一个元素都采用默认值 byte short int long 0 float double 0 0 boolean false char u000
  • c语言之 malloc函数详解 在堆中动态分配内存malloc和new的区别

    一 原型 xff1a extern void malloc unsigned int num bytes 头文件 xff1a include lt malloc h gt 或 include lt alloc h gt 注意 xff1a a
  • 8086汇编与c++编译器就内存方面的感想

    8086汇编中可以手动分配栈内存 xff0c 没有堆内存的概念 xff0c 而c 43 43 编译器中栈是系统分配的 xff0c 堆是手动分配的
  • 2-NoSQL(非关系型数据库)-入门概述

    1 NoSQL是什么 xff1f NoSQL xff08 Not only SQL xff0c 不仅仅是数据库 xff09 xff0c 泛指非关系型数据库数据库 xff0c 其数据存储不需要固定的模式 xff0c 无需多余操作就可以横向扩展