NoSQL技术——Redis

简单介绍

Redis是当下最流行的NoSQL数据库。在Redis中,数据的存储格式是以键值对的方式进行存储的。在键值对的存储形式中,值除了是常见的字符串,也可以是类似于Json对象的形式,或者是List,Map等数组格式,或者是其他的复杂类型,所以键值对的存储方式也足够满足我们日常的使用:

像这种的,并不是以标准的表的格式存储的数据库,而是使用自身特定的数据结构进行存储的数据库叫做NoSQL的数据库。当然对于NoSQL的定义要更加的广泛,现在暂时就用存储结构将SQL和NoSQL数据库进行简单的区分即可。

认识NoSQL

SQL:关系型数据库

NoSQL:非关系型数据库,或者说,不仅仅是数据库

两者的区别

首先,SQL的S表示的是(Structured)结构化的意思,也就是说关系型数据库中的数据存储格式都是非常的规整的表的格式,并且我们还会加上一些约束让其中的数据更加的规范标准。

NoSQL的数据类型就相对比较松散,对于数据的存储并没有太强的约束,比如Redis的数据类型就是键值对的类型,其中键值的数据类型可以任意定义。或者对于ES这类的文档型,他们的数据存储格式就是JSON格式的存储方式。

除了数据的不同,当我们在定义SQL的表结构的时候,一般定义好了之后就不会轻易地修改表的结构,容易出现对应的业务无法正常实现的风险,或者数据发生错误,但是对于NoSQL来说,字段的数量可以随时的添加修改,我们只关注对应的字段,至于其他的字段是多了或者少了都对我们没有影响。

其次,SQL的第二个特点就是(Relational)关联,这个特性在之前我们学习MySQL时接触到的外键约束和多表查询,或者在做Java程序的时候学过的多对多关系中都有体验,比如我们用一个用户表,一个订单表,一开始这两张表并没有关系,但是当业务开始实现,一个用户购买了一个商品,这时候就会出现一张中间表去维护某个用户购买了某样商品,这时候表与表之间就开始有了关联,当我们再想去随意的操作关联表中的数据的时候,可能会因为某个表中的关联数据而导致无法正常的更改数据。

而对于NoSQL来说,他不会刻意的去维护表与表之间的关系,甚至对于数据与数据之间的关系都非常的模糊,如果想要将两个数据联系起来,一般的方式会选择嵌套,即在一个JSON对象中再加入一个JSON对象的方式去将多个对象进行联系。

然后就是查询方式的区别,SQL数据库的查询方式是使用SQL语言进行查询,但是对于NoSQL来说,查询语言并不是固定的,而是不同的 NoSQL数据库都有不同的查询方式,并没有一个统一的格式。各有各的好处,比如我们的SQL查询语言比较统一,基本上一套SQL语言可以在各种关系型数据库中使用,而非关系型数据库虽然不统一,但是查询的方式多半都比较符合程序员的编码方式,所以学习起来也并不是非常的困难。

还有就是事务方面的区别,所有的关系型数据库的事务,都满足ACID的特性,而非关系型数据库,并不能完美的实现事务,只能实现基本的事务的一致性。

除了以上这些大方向的差异,还有一个小的差异,比如SQL一般会将数据持久化到硬盘中,而非关系型数据库会将数据暂时存储在内存中,当触发持久化的操作的时候,才会真正的将数据落盘。以及在关系型数据库设计之初,就并没有为分布式做考虑,也就是说,当你需要提升数据库的性能的时候,只能不断地增加本机的性能,这种方式就是垂直扩展。但是NoSQL之所以现在发展的很快,就是因为它搭上了大数据的快车,大数据的对于数据的要求量非常的大,所以大数据的组件一开始的设计就是为了能够水平扩展,也就是由多台设备组成一个集群,从而协同运作提升效率,NoSQL的数据库也满足这一分布式的特性,从而和大数据一拍即合。

当然,根据不同的业务需求去选择不同的数据库也是非常重要的,所以了解了这些两者的不同点之后才能更好地发挥不同组件的作用。

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

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

相关文章

leetcode 92.反转链表II dummy节点的应用

题目 方法 dummy节点 链表的第一个结点,因为没有前驱结点,存在同时删除前驱和后继的情况,这时候我们需要人为构造dummy节点——人为制造出来的第一个结点的前驱结点,也就是说,在可能操作head节点时,我们可…

【CAD二次开发】重新加载acad.pgp快捷菜单文件

为了加快绘图速度,好多人会进行CAD快捷命令的修改,那怎么在不需要重启CAD的情况下自动更新? CAD修改acad.pgp,快捷命令后,自动更新。 方法一 命令行输入reinit,命令。 在弹出的窗口中,选择‘PGP文件’&…

腾讯汤道生:超千亿参数 超2万亿tokens 腾讯混元大模型向行业全面开放

9月7日,2023腾讯全球数字生态大会在深圳宝安举行。腾讯集团高级执行副总裁、云与智慧产业事业群CEO汤道生表示,腾讯将迈入“全面拥抱大模型”时代:“以大模型生成技术为核心,人工智能正在成为下一轮数字化发展的关键动力&#xff…

了解 glTF 2.0 格式

推荐:使用 NSDT场景编辑器快速搭建3D应用场景 介绍 glTF 代表 GL 传输格式。 glTF 是一种用于存储和加载 3D 场景的标准化文件格式,其基本目的是由 3D 创建工具轻松生成并被任何图形应用程序使用,无论使用何种 API,处理最少。 …

一个产品级MCU菜单框架设计

分享一个用单色屏做的菜单框架。代码托管在github: https://github.com/wujique/stm32f407/tree/sw_arch 1、概述 本处所说的菜单是用在128*64这种小屏幕的菜单,例如下面这种,不是彩屏上的GUI。 2、菜单框架设计 作为一个底层驱动工程师&a…

树形控件加自定义图标样式及指引线

记录一下留用&#xff0c;有错误请指正。 效果图如下&#xff1a; 自定义图标及指引线 代码&#xff1a; <div class"head-container" style"margin-left: -15px;"><el-tree icon-class"none"style"height:100%; overflow-y: h…

npm报错sass

1.删除node模块 2.删除node-sass&#xff1a; npm uninstall node-sass 3.重新下载对应版本node-sass&#xff1a; npm i node-sass7.0.3&#xff08;指定版本 控制台报错什么版本就写什么版本&#xff09; 4.再运行项目 或者

Redis 分布式锁

面试题&#xff1a; Redis除了拿来做缓存&#xff0c;你还见过基于Redis的什么用法&#xff1f; 1.数据共享&#xff0c;分布式Session 2.分布式锁 3.全局ID 4.计算器、点赞 5.位统计 6.购物车 7.轻量级消息队列&#xff1a;list、stream 8.抽奖 9.点赞、签到、打卡 10.差集交集…

基于Java+SpringBoot+Vue前后端分离科研项目验收管理系统设计和实现

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

idea 打 jar 包以及运行使用

1. 在 idea 右侧点击 maven 2. 点击Lifecycle——》clean 运行 3. 点击 Lifecycle——》compile 4. 点击 Lifecycle——》package 5. 打成的 jar 包可以在 target中找到 6. jar 包的名字和版本可以在 pom.xml文件中设置 7. 注意事项&#xff1a;打 jar 包的时候 test 里的 tes…

RabbitMQ工作模式-发布订阅模式

Publish/Subscribe&#xff08;发布订阅模式&#xff09; 官方文档&#xff1a; https://www.rabbitmq.com/tutorials/tutorial-three-python.html 使用fanout类型类型的交换器&#xff0c;routingKey忽略。每个消费者定义生成一个队列关绑定到同一个Exchange&#xff0c;每个…

linux安装wget命令_linux下载文件到本地命令

1、检查是否有安装wget rpm -qa|grep "wget" 复制 在这里插入图片描述 若存在则移除&#xff0c;以下为移除命令 # 移除wget yum remove wget 复制 2、登录wget官网下载地址&#xff0c;下载最新的wget的rpm安装包到本地 下载地址&#xff1a;http://mirrors.…

数据结构与算法(四):栈与队列

栈与队列 我们一般把栈与队列合在一块讨论&#xff0c;因为他们具有相似的性质。 栈&#xff1a;栈是限定仅在表尾进行插入和删除操作的线性表&#xff0c;所以栈又称为后进先出&#xff08;LastIn First Out&#xff09;的线性表&#xff0c;简称LIFO结构。 队列&#xff1…

Postgresql JSON对象和数组查询

文章目录 一. Postgresql 9.5以下版本1.1 简单查询(缺陷&#xff1a;数组必须指定下标&#xff0c;不推荐)1.1.1 模糊查询1.1.2 等值匹配1.1.3 时间搜索1.1.4 在列表1.1.5 包含 1.2 多层级JSONArray&#xff08;推荐&#xff09;1.2.1 模糊查询1.2.2 模糊查询 NOT1.2.3 等值匹配…

微软8月系统更新引发问题:虚拟内存分页文件出现错误

微软的八月系统更新引发了一系列问题&#xff0c;其中包括“UNSUPPORTED_PROCESSOR”蓝屏错误和文件管理器故障。尽管微软已经修复了前者&#xff0c;但据国外科技媒体Windows Latest报道&#xff0c;仍有用户反馈在非微星设备上出现“fault in nonpaged area”蓝屏错误。 如果…

如何用SSH克隆GitHub项目

诸神缄默不语-个人CSDN博文目录 使用场景&#xff1a;由于不可知的网络问题&#xff0c;无法用HTTPS克隆GitHub项目。 报错fatal: unable to access https://github.com/PolarisRisingWar/llm-throught-ages.git/: GnuTLS recv error (-110): The TLS connection was non-pro…

基于阻塞队列的生产消费模型

目录 一、线程同步 1.生产消费模型&#xff08;或生产者消费者模型&#xff09; 2.认识同步 &#xff08;1&#xff09;生产消费模型中的同步 &#xff08;2&#xff09;生产者消费者模型的特点 二、条件变量 1.认识条件变量 2.条件变量的使用 3.代码改造 三、基于阻…

同旺科技USB to I2C 适配器烧写 Arduino 模块

所需设备&#xff1a; 内附链接 1、同旺科技USB to I2C 适配器 2、Arduino 模块 硬件连接&#xff1a; 用同旺科技USB to I2C 适配器连接芯片的TX、RX、GND; 打开Arduino IDE编辑工具&#xff0c; 点击“上传”按钮&#xff0c;完成程序的编译和烧录&#xff1b;

【Day-31慢就是快】代码随想录-二叉树-中序和后序遍历构造二叉树

根据一棵树的中序遍历与后序遍历构造二叉树。 注意: 你可以假设树中没有重复的元素。 思路 首先知道怎么画&#xff0c;然后写代码流程。 以 后序数组的最后一个元素为切割点&#xff0c;先切中序数组&#xff0c;根据中序数组&#xff0c;反过来再切后序数组。一层一层切下去…

探索隧道ip如何助力爬虫应用

在数据驱动的世界中&#xff0c;网络爬虫已成为获取大量信息的重要工具。然而&#xff0c;爬虫在抓取数据时可能会遇到一些挑战&#xff0c;如IP封禁、访问限制等。隧道ip&#xff08;TunnelingProxy&#xff09;作为一种强大的解决方案&#xff0c;可以帮助爬虫应用更高效地获…