NoSQL数据库使用场景以及架构介绍

文章目录

  • 一. 什么是NoSQL?
  • 二. NoSQL分类
  • 三. NoSQL与关系数据库有什么区别
  • 四. NoSQL主要优势和缺点
  • 五. NoSQL体系框架

在这里插入图片描述

其它相关推荐:
系统架构之微服务架构
系统架构设计之微内核架构
鸿蒙操作系统架构
架构设计之大数据架构(Lambda架构、Kappa架构)

所属专栏:系统架构设计师

一. 什么是NoSQL?

NoSQL(Not-onlySQL):不仅仅只是SQL,泛指非关系型的数据库。
在这里插入图片描述

是对关系型数据库的补充和完善,它不使用传统的表格模式,而是使用其他的数据模型来存储数据。NoSQL数据库非常适合处理大规模的非结构化或半结构化数据,具有高可扩展性、高灵活性、高性能、高可用性等特点。常见的NoSQL数据库包括MongoDB、Cassandra、Redis等。


二. NoSQL分类

  1. 键值(key-value)
  • 这种类型的数据库有Redis、Memcached、Tokyo Cabinet/Tyrant、Voldement、Oracle BDB
  • 典型应用场景:内容缓存,主要用于处理大量数据的高访问负载,也用于一些日志系统等等。
  • 数据模型:key 指向 value 的键值对,通常用hash table来实现。
  • 优点:查找速度快。
  • 缺点:数据无结构化,通常只被当作字符串或者二进制数据。
  1. 列存储数据库
  • 这种类型的数据库有Hbase、Cassandra、Riak
  • 典型应用场景:分布式的文件系统。
  • 数据模型:以列簇式存储,将同一列数据存在一起。
  • 优点:查找速度快,可扩展性强,更容易进行分布式扩展。
  • 缺点:功能相对局限。
  1. 文档型数据库
  • 这种类型的数据库有MongoDB、CouchDB
  • 典型应用场景:Web应用(与key-value类似,value是结构化的,不同的是数据库能够了解value内容)
  • 数据模型:key-value对应的键值对,value为结构化数据。
  • 优点:数据结构要求不严格,表结构可变,不需要像关系型数据库一样预先定义表结构。这种数据库类型按照文档格式(如JSON、XML等)来存储数据,数据之间可以有嵌套关系,具有更好的灵活性,支持各种复杂的数据结构。支持动态模式、可扩展性好、数据结构灵活。
  • 缺点:查询性能不高,而且缺乏统一的查询语法。
  1. 图形数据库(Graph)
  • 这种类型的数据库有Neo4J、InfoGrid、Infinite Graph
  • 典型应用场景:社交网络,推荐系统等。专注于构建关系图谱。
  • 数据模型:图结构。
  • 优点:利用图结构相关算法。比如最短路径寻址,N度关系查找等。
  • 缺点:很多时候需要对整个图做计算才能得出需要的信息,而且这种结构不太好做分布式存的集群方案。

三. NoSQL与关系数据库有什么区别

对比维度关系数据库NoSQL
应用领域面向通用领域 特定应用领域
数据容量有限数据海量数据
数据类型结构化数据(二维表)非结构化数据
并发支持支持并发,但性能低高并发
事务支持高事务性弱事务性
扩展方式向上扩展向外扩展

与关系型数据库相比,NoSQL数据库对数据之间的关系的处理更加灵活,因此可以满足更多种类的应用场景,例如大数据、云计算、分布式存储等。

四. NoSQL主要优势和缺点

主要优势:
(1)避免不必要的复杂性
(2)高吞吐量
(3)高水平扩展能力和低端硬件集群
(4)避免了昂贵的对象-关系映射

缺点:
(1)数据模型和查询语言没有经过数学验证
(2)不支持ACID特性
(3)功能简单
(4)没有统一的查询模型

五. NoSQL体系框架

NoSQL数据库整体框架分为四层,分别为数据持久层(data persistence)、整体分布层(data distribution model)、数据逻辑模型层(data logical model)和接口层(interface),这四层之间是相辅相成,协调工作。

数据持久层定义了数据的存储形式,主要包括基于内存、硬盘、内存与硬盘相结合、订制可插拔四种形式。基于内存形式的数据存取速度最快,但可能会造成数据丢失;基于硬盘的数据可能保存很久,但存取速度较基于内存的形式慢;内存和硬盘相结合的形式,结合了前两种形式的优点,既保证了速度,又保证了数据不丢失;订制可插拔则保证了数据存取具有较高的灵活性。

整体分布层定义了数据是如何分布的,相对于关系型数据库,NoSQL可选的机制比较多,主要有三种形式:一是CAP支持,可用于水平扩展。

数据逻辑模型层定义了数据之间的联系和操作方式,主要包括文档、键值对、图像、列存储等。

接口层定义了与数据访问相关的接口,包括查询、索引、事务、权限等。

在这里插入图片描述

其它相关推荐:
系统架构之微服务架构
系统架构设计之微内核架构
鸿蒙操作系统架构
架构设计之大数据架构(Lambda架构、Kappa架构)

所属专栏:系统架构设计师

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/129368.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python算法——快速排序

快速排序(Quick Sort)是一种高效的分治排序算法,它选择一个基准元素,将数组分成两个子数组,小于基准的放在左边,大于基准的放在右边,然后递归地排序子数组。快速排序通常比冒泡排序和选择排序更…

Android-Framework 默认屏蔽多任务按键,添加控制属性控制

一、环境 高通865 Android 10 二、代码修改 device/qcom/qssi/system.prop # Disable recent key persist.recentkey.disable11-屏蔽多任务按键 0-打开多任务按键 frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java -2770,7 2770,8 …

【C/C++】虚析构和纯虚析构

纯虚析构的问题 多态使用时,如果子类中有属性开辟到堆区,那么父类指针在释放时无法调用到子类的析构代码。 解决方式:将父类中的析构函数改为虚析构或者纯虚析构 虚析构和纯虚析构共性: 可以解决父类指针释放子类对象都需要有…

【C语言_线程pthread_互斥锁mutex_条件触发cond 之解析与示例 (开源)】.md updata:23/11/03

文章目录 线程 pthread线程 vs 进程线程退出 等待 消息传递join:等待,传参void*; exit:退出,对参数赋值void**; 互斥锁 mutex互斥锁mutex条件cond_等待wait、触发signal 控制线程执行 补充: 宏-静态初始化 互斥锁/条件 线程 pthread 线程 vs…

轧钢厂安全生产方案:AI视频识别安全风险智能监管平台的设计

一、背景与需求 轧钢厂一般都使用打包机对线材进行打包作业,由于生产需要,人员需频繁进入打包机内作业,如:加护垫、整包、打包机检修、调试等作业。在轧钢厂生产过程中,每个班次生产线材超过300件,人员在一…

2023下半年软考高项答题技巧!

2023下半年软考倒计时最后一天,一些软考高项答题技巧分享! 高项答题技巧 1、综合知识 (1)首先是分析试题的技巧 –先看清楚问题,再看选项; –判断题目到底考察的是什么知识点,排除干扰项。…

Java 反射与注解

1. Class 类 1.1 Class 对象 在 Java 中,每个已加载的类在内存中都有一份类信息,类信息对应的类是 java.lang.Class,每个对象都持有指向它所属类信息的引用。想要获取 Class 对象,有以下三种方法: 1. 通过类名获取&…

docker打包container成image,然后将image上传到docker hub

第一步&#xff1a;停止正在运行的容器 docker stop <container_name> eg: docker stop xuanjie_mlir 第二步&#xff1a;将对应的container打包成image docker commit <container_id> <镜像名&#xff1a;版本> eg&#xff1a;docker commit 005672e6d97a…

ChinaSoft 论坛巡礼 | 安全攸关软件的智能化开发方法论坛

2023年CCF中国软件大会&#xff08;CCF ChinaSoft 2023&#xff09;由CCF主办&#xff0c;CCF系统软件专委会、形式化方法专委会、软件工程专委会以及复旦大学联合承办&#xff0c;将于2023年12月1-3日在上海国际会议中心举行。 本次大会主题是“智能化软件创新推动数字经济与社…

京东数据平台:2023年9月京东智能家居行业数据分析

鲸参谋监测的京东平台9月份智能家居市场销售数据已出炉&#xff01; 9月份&#xff0c;智能家居市场销售额有小幅上涨。根据鲸参谋电商数据分析平台的相关数据显示&#xff0c;今年9月&#xff0c;京东平台智能家居的销量为37万&#xff0c;销售额将近8300万&#xff0c;同比增…

XUbuntu22.04之解决桌面突然放大,屏幕跟着鼠标移动问题(一百九十)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

【基带开发】AD9361 复乘 com_cmpy_a12_b12

IP核 tb_com module tb_com();reg ad9361_l_clk,rst; initial beginad9361_l_clk0;forever #4.545 ad9361_l_clk~ad9361_l_clk; end initial beginrst1;#9.09 rst0; end wire [63 : 0] m_fll_phase_shift_dout; // fll 输出 dout // FLL Phase Shift com_cmpy_a12_b12 FLL_P…

QT在线安装5.15之前的版本(下载速度飞快)

使用最新的QT在线安装器&#xff0c;安装QT版本时只能安装5.15以及之后的版本&#xff0c;安装QT5.15之前的版本只能通过离线安装的方式&#xff0c;离线安装后还要自己去配置QT&#xff0c;离线安装还有个问题的&#xff0c;后续维护比较麻烦&#xff0c;QT的维护工具还要自己…

【动作模式识别】实现复合动作模式识别(离线控制模块)

一、思路 一般来说&#xff0c;要实现摸脸动作&#xff0c;需要采集手臂的以下肌肉的肌电信号&#xff1a; 肱二头肌&#xff1a;控制肘关节的屈曲肱三头肌&#xff1a;控制肘关节的伸展前臂屈肌群&#xff1a;控制手腕和手指的屈曲前臂伸肌群&#xff1a;控制手腕和手指的伸…

记一次并发问题 Synchronized 失效

记一次并发问题 Synchronized 失效 场景&#xff1a;为避免信息提交重复&#xff0c;给事务方法增加了synchronized修饰符&#xff0c;实际场景中仍然无法完全避免重复&#xff0c;原因是因为在第一个线程执行完synchronized代码段后&#xff0c;此时spring还未完成事务提交&a…

JMM讲解

一&#xff1a;为什么要有JMM&#xff0c;它为什么出现&#xff1f; CPU的运行并不是直接操作内存而是先把内存里面的数据读到缓存&#xff0c;而内存的读和写操作的时候会造成不一致的问题。JVM规范中试图定义一种Java内存模型来屏蔽掉各种硬件和操作系统的内存访问差异&…

AndroidAuto PCTS A118解决杂音问题

A118最后播放三段media类型音频数据,中间会有一点beep的杂音,这个是暂停跟播放没有衔接好导致的,解决这个问题的思路是要分离开播放跟暂停,不能还没完全暂停就播放下一段音频数据 修改点在AudioPlayer.java @Overridepublic synchronized void onStart(int sessionId) {if …

WPF布局控件之WrapPanel布局

前言&#xff1a;博主文章仅用于学习、研究和交流目的&#xff0c;不足和错误之处在所难免&#xff0c;希望大家能够批评指出&#xff0c;博主核实后马上更改。 概述&#xff1a; 后续排序按照从上至下或从右至左的顺序进行&#xff0c;具体取决于方向属性的值。WrapPanel 位…

Linux内核分析(一)--内核架构和子系统

目录 一、引言 二、内核架构 ------>2.1、kernel源码获取 ------>2.2、cpuinfo ------>2.3、内核体系结构 ------>2.4、内核主要组件 三、内核源码及子系统 ------>3.1、整体结构与子系统 ------>3.2、cpuinfo ------>3.3、整体结构与子系统 -…

海上风电应急救援vr模拟安全培训提高企业风险防范能力

相比传统的发电厂&#xff0c;海上风电作业积累的经验少&#xff0c;风险高&#xff0c;因此为了规范施工人员的行为和操作&#xff0c;保障生产安全进行&#xff0c;开展海上风电VR安全培训具有重要意义。 有助于提高员工的安全意识 通过模拟真实的海上风电作业环境&#xff0…