Redis基礎(1):NoSQL認識

SQL和NoSQL

數據庫可以分為關系型數據庫非關系型數據庫SQL(Structured Query Language)相信大家并不陌生,這是用于操作關系型數據庫的語言NoSQL,顧名思義,它對應的就是非關系數據庫,它是操作非關系型數據庫的技術類別。二者有很多地方是相同的,因為它們都是操作數據庫的技術,但二者又有很多的不同之處,下面讓我們從不同的角度了解二者的差異。

結構化(Structure)

SQL是結構化的查詢語言,其結構化表現在數據是以一張二維表的形式保存在數據庫中的,并且在創建表的時候,可以給表添加約束和字段限制。這些約束一旦建立好了,則這張二維表的結構就確定了,之后插入表中的數據就需要嚴格按照表的結構進行插入。并且表的結構是不建議修改的,需要在項目初期就確定好整張表的結構——由此也可以看出結構化對于SQL的重要性
NoSQL則是非結構化的,其對于數據的結構并沒有嚴格的約束——但并不是意味著完全沒有約束,需要根據NoSQL數據庫的類型具體分析。但不論是哪種,相較于SQL的數據結構都比較松散,并沒有這么強的結構和約束。

關系型

SQL對應的是關系型數據庫表中的數據是有關聯的。比如有三張表tb_user(用戶表)tb_item(商品表)tb_order(訂單表),這三張表看似是沒有任何關系的,但是可以通過foreign key外鍵技術讓三張表產生關系:

在刪除數據的時候,必須按照外鍵的關系按照順序刪除。
NoSQL數據庫本身是不會維護這種表之間的關系的,如果想要有SQL數據庫一樣的關系們必須依靠程序員自己維護。

SQL查詢

關系型數據庫可以通過SQL語句完成查詢,并且SQL語句在關系型數據庫中是通用的,不論是MySQL或者Oracle或者SQLSeverSQL語句都是通用的,其格式是固定的,語法也是固定的。
非關系型數據庫中的查詢語句完全不固定,根據不同的非關系型數據庫,有不同的查詢語句。

上圖是三種常見非關系型數據庫的查詢語句,如圖所示,三者都實現了查詢id為1的用戶信息這個功能,但是查詢的語句卻是大相徑庭的Redis是一種命令、MongoDB是一種基于函數形式的調用、elasticsearch是一種基于RESTful風格的請求

事務

確保事務可靠執行的四個特性是ACID(Atomicity原子性、Consistency一致性、Isolation隔離性、Durability持久性),在關系型數據庫中,經常會使用到事務,特別是涉及到多表操作時,而數據庫底層可以幫助我們實現ACID的特性,所以說可以認為所有的關系型數據庫都是滿足ACID特性的。
非關系型數據庫對于事務的ACID特性支持并不完善,有的數據庫無法滿足事務的強一致性,只能滿足基本一致性,有的數據庫甚至不支持事務。

存儲方式

關系型數據庫數據庫中的數據存儲一般是在磁盤中,非關系型數據庫數據庫中的數據一般是存儲在內存中。通過一些計算機組成原理的知識,我們可以知道內存的讀寫速度是遠遠高于磁盤的,所以說一般基于內存存儲的非關系型數據庫的查詢速度會遠遠高于基于磁盤存儲的關系型數據庫。但由于內存的容量較小,非關系型數據庫的數據容量也會小于關系型數據庫并且內存資源十分的寶貴,所以說一般不用來作持久化存儲

總結

上表就是SQLNoSQL的主要區別,在實際開發中可以按照具體的使用場景來選擇具體需要使用的數據庫,但是在更多的情況下,會將二者結合起來使用,通過SQL的結構化存儲來持久化保存數據;然后通過NoSQL的極致性能來做數據緩存,提升查詢效率。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/87931.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/87931.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/87931.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

QT6 源(153)模型視圖架構里的表格窗體視圖 QTableWidget 篇三:源碼及其元素 QTableWidgetItem 的源代碼帶注釋

&#xff08;14&#xff09;本源代碼定義于頭文件 qtablewidget . h 頭文件 &#xff1a; #ifndef QTABLEWIDGET_H #define QTABLEWIDGET_H#include <QtWidgets/qtableview.h> #include <QtWidgets/qtwidgetsglobal.h> #include <QtCore/qlist.h> #include …

SSL證書是網絡安全的一把利刃

SSL證書&#xff08;安全套接層證書&#xff0c;現普遍升級為TLS證書&#xff09;確實是網絡安全領域中一把至關重要的“利刃”&#xff0c;它在保護數據傳輸安全、建立用戶信任、防范網絡攻擊等方面發揮著不可替代的作用。以下是其核心價值與作用的詳細分析&#xff1a;一、SS…

Apache 配置文件提權的實戰思考

在 Linux 系統中&#xff0c;如果普通用戶被授予以 sudo 執行 Apache 并加載自定義配置文件的權限&#xff08;如 sudo apache2 -f /home/user/user.conf&#xff09;&#xff0c;那么該權限極可能被濫用為本地提權路徑。 雖然 Apache 默認采用了更嚴格的權限限制機制&#xff…

代碼隨想錄算法訓練營第四十四天|動態規劃part11

1143.最長公共子序列 題目鏈接&#xff1a;1143. 最長公共子序列 - 力扣&#xff08;LeetCode&#xff09; 文章講解:代碼隨想錄 思路&#xff1a; 其實就是求兩個字符串的最長公共子序列的長度 與公共子數組的區別是可以不連續 &#xff0c;順序對就可以 狀態轉移方程不一樣 …

部署mysql

# 環境: 操作系統window11 安裝了vagrant 通過vagrant部署、啟動虛擬機(centos7) # 準備安裝mysql8 # 添加 MySQL 官方 YUM 源 sudo rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm # 安裝 MySQL Server sudo yum install -y mysql-s…

SQL分析與打印-p6spy組件

有性能消耗&#xff0c;只推薦在非生產環境下使用 SpringBoot3MybatisPlushttps://baomidou.com/guides/p6spy/ MyBatis-Plus提供了SQL分析與打印的功能&#xff0c;通過集成p6spy組件&#xff0c;可以方便地輸出SQL語句及其執行時長。本功能適用于MyBatis-Plus 3.1.0及以上版本…

FLUX.1-Kontext 高效訓練 LoRA:釋放大語言模型定制化潛能的完整指南

在人工智能領域&#xff0c;尤其是大型語言模型&#xff08;LLM&#xff09;的應用浪潮中&#xff0c;高效、低成本地定制模型行為已成為關鍵需求。LoRA&#xff08;Low-Rank Adaptation&#xff09;技術以其參數高效、資源節省的特性脫穎而出。而 FLUX.1-Kontext 作為一款創新…

群暉 DS3617xs DSM 6.1.7 解決 PhotoStation 安裝失敗問題 PHP7.0

群暉 DS3617xs DSM 6.1.7 解決 PhotoStation 安裝失敗問題 PHP7.0問題描述解決方案1. 準備所需文件2. 檢查當前 PHP 版本3. 安裝 PHP 版本5. 查詢已安裝好的套件6. 升級 PHP 版本7. 手動安裝套件PhotoStation注意事項總結問題描述 在群暉 DS3617xs DSM 6.1.7-15284 版本中&…

pnpm 升級

pnpm 的安裝源太多了&#xff0c;感覺系統變量都有引入順序。 今天踩坑記錄&#xff1a; pnpm &#xff0c;如果最初用npm 裝的&#xff0c;可以用npm 升級&#xff1b; 如果最初用brew 裝的&#xff0c;得用brew 升級&#xff1b; 如果最初是用corepack 裝的得用corepack 升級…

[C#] WPF - 資源URI

一、組成 1、資源URI總共包括4個部分(當前程序集可以省略前3個)&#xff1a; ①&#xff1a;pack://application:,,, ②&#xff1a;/[程序集名稱] ③&#xff1a;;Component ④&#xff1a;/[資源路徑] 二、舉例 項目結構如下圖所示&#xff1a; 1、MainWindow.xaml 文件…

【Mysql系列】Mysql 多級隔離級別揭秘

目錄 一、什么是隔離級別 1.1、為什么復合操作需要事務&#xff1f; 1.2、事務的 ACID 特性如何保障操作可靠性&#xff1f; 1.3、隔離性通過隔離級別來控制 二、為什么用多級隔離級別 2.1、事務并發執行時可能引發以下問題 2.1.1、臟讀&#xff08;Dirty Read&#xff…

odoo17 警示: selection attribute will be ignored as the field is related

在 Odoo 17 中&#xff0c;當使用 related 字段時&#xff0c;直接在 fields.Selection 中指定選擇列表會被忽略&#xff08;因為選擇項會從關聯字段繼承&#xff09;。wtd_fuwlx fields.Selection(服務類型 , relatedwtd_id.fuwlx, storeTrue)遇到了一個警告&#xff0c;提示…

gemma-3n-E2B多模態模型使用案例:支持文本、圖像、語音輸入

參考&#xff1a; https://developers.googleblog.com/en/introducing-gemma-3n-developer-guide/下載&#xff1a; https://modelscope.cn/models/google/gemma-3n-E2B-it 模型下載 運行代碼&#xff1a; https://github.com/huggingface/huggingface-gemma-recipes 微調&…

計算機網絡實驗——互聯網安全實驗

實驗1. OSPF路由項欺騙攻擊和防御實驗一、實驗目的驗證路由器OSPF配置過程。驗證OSPF建立動態路由項過程。驗證OSPF路由項欺騙攻擊過程。驗證OSPF源端鑒別功能的配置過程。驗證OSPF防路由項欺騙攻擊功能的實現過程。二、實驗任務使用自己的語言簡述該實驗原理。如圖1所示的網絡…

Pytorch中torch.where()函數詳解和實戰示例

torch.where() 是 PyTorch 中非常常用的一個函數&#xff0c;功能類似于 NumPy 的 where&#xff0c;用于條件篩選或三元選擇操作。在深度學習訓練、掩碼操作、損失函數處理等場景中非常常見。一、基本語法 torch.where(condition, x, y)condition&#xff1a;一個布爾張量&…

基于Hadoop的公共自行車數據分布式存儲和計算平臺的設計與實現

文章目錄 有需要本項目的代碼或文檔以及全部資源&#xff0c;或者部署調試可以私信博主項目介紹&#xff1a;基于Hadoop的公共自行車數據分布式存儲與計算平臺設計與實現數據介紹數據預處理 Hadoop 集群的幾個主要節點介紹1. NameNode&#xff08;主節點&#xff09;2. DataNod…

Java項目:基于SSM框架實現的程序設計課程可視化教學系統【ssm+B/S架構+源碼+數據庫+畢業論文】

摘 要 使用舊方法對程序設計課程可視化教學信息進行系統化管理已經不再讓人們信賴了&#xff0c;把現在的網絡信息技術運用在程序設計課程可視化教學信息的管理上面可以解決許多信息管理上面的難題&#xff0c;比如處理數據時間很長&#xff0c;數據存在錯誤不能及時糾正等問題…

Unity 實現 NPC 隨機漫游行為的完整指南

在游戲開發中&#xff0c;NPC&#xff08;非玩家角色&#xff09;的行為邏輯對于營造真實、沉浸式的游戲世界至關重要。一個常見但又極具表現力的需求是&#xff1a;讓 NPC 在場景中自然地隨機移動&#xff0c;仿佛它們有自己的意識和目的地。 本文將詳細介紹如何使用 Unity 的…

重新學習Vue中的按鍵監聽和鼠標監聽

文章目錄按鍵事件1. 使用 keyup.enter 修飾符2. 使用 v-on 監聽鍵盤事件3. 在組件上監聽原生事件Vue 2Vue 34. 全局監聽鍵盤事件注意事項鼠標事件1. 基本鼠標事件監聽常用鼠標事件2. 事件修飾符3. 鼠標按鍵檢測4. 鼠標位置信息5. 自定義指令監聽鼠標事件6. 組合鼠標事件7. 性能…

vue2啟動問題以及解決方案

vue2啟動時&#xff1a;ERROR Invalid options in vue.config.js: "typescript.validate.enable" is not allowed如果需要在 VSCode 中控制 TypeScript 驗證&#xff1a;在項目根目錄創建 .vscode/settings.json 文件&#xff08;如不存在&#xff09;添加以下配置&a…