數據庫服務器架構

ORM

ORM(Object Relational Mapping):對象與關系數據之間的映射

映射關系表:

類(class)—— 數據庫的表(table)

對象(object)——記錄(record 行數據)

對象的屬性(attribute)—— 字段(field)

主流技術:Hibernate ; MyBatis;Entity FrameWork

數據庫讀寫分離化

主從數據庫結構

特點:一般一主多從,也可以多主多從;主庫做寫的操作,從庫做讀的操作

主從復制操作:

  1. 主庫更新數據完成前,將操作寫binlog日志文件
  2. 從庫打開I/O線程與主庫連接,做binlog dump process(從日志中讀取主庫的操作),并將事件寫入中繼日志
  3. 從庫執行中繼日志事件,保持與主庫一致

緩存技術

用緩存緩解讀庫的壓力,將數據暫存在緩存中,減少對硬盤的直接操作

緩存與數據庫的協作

數據讀取:

  1. 根據key從緩存讀取
  2. 若緩存中沒有,則根據key在數據庫中查找
  3. 讀取到“值”之后,更新緩存

數據寫入:

  1. 根據key值寫入數據庫
  2. 根據key更新緩存?

常見的緩存技術

MemCache

簡單的key/value結構,不支持數據容災,不支持事務管理,結構簡單,功能較少

Redis

Redis集群切片:

  • 客戶端切片,在客戶端通過key的hash值對應到不同的redis服務器
  • 中間件實現切片:在應用軟件和redis中間實現服務器到后臺redis節點的切片
  • 客戶端服務器協作切片:兩者結合,服務器為客戶端提供slot(插槽)(一個服務器可能對應多個slot),再由客戶端的hash算法選擇相應的插槽。?

數據分片方案:

  • 范圍分片:根據某個關鍵字的取值范圍將數據分片
  • Hash分片:根據某個關鍵字的Hash值將數據分片,能夠較為均勻地分片
  • 一致性Hash分片: 將服務器的編號也進行Hash計算,再根據某個關鍵字的Hash值與服務器的Hash值進行比較,將數據存在Hash值距離較近的服務器上。(緩解了新增服務器后,數據遷移的問題)

分布式存儲方案:

  • 主從模式:一主多從(主負責寫,從負責讀),主服務器故障時手動切換?
  • 哨兵模式:在主從模式的基礎上增加哨兵的監督,哨兵負責監督服務器運行狀態,如果主服務器故障,哨兵可以自行選擇切換主服務器。
  • 集群模式:分節點對等集群,根據Web服務器的slot插槽來分配數據庫的節點。

Redis數據類型:

  • String:最大512MB,用于緩存,計數。共享Session
  • Hash (字典):一個Key對應一組數據,用于存儲、讀取、修改用戶屬性
  • List:雙向鏈表,增刪快,查詢慢,用于消息隊列,文章列表
  • Set(集合):鍵值對無序,唯一,增刪查復雜度為O(1),用于獨立IP,標簽
  • Sorted Set(有序集合):鍵值對有序,唯一,自帶按權重排序的效果,用于排行榜

數據淘汰機制:

  • 不淘汰:禁止驅逐數據,填滿了就報警,是系統默認的淘汰策略,常用機制:noeviction
  • 根據過期時間淘汰:常用機制:volatile - random(隨機移除某個過期的key),volatile - lru(優先移除最近未使用的過期的key),volatile-ttl(ttl值(ttl值標識過期時間,值最小表示過期最久)最小的key優先移除)?
  • 全鍵空間 :常用機制:allkey - random(隨機移除某個key) ,allkey -lru(優先移除最近未使用的key)

Redis的持久化(數據恢復):

  • RDB:傳統數據庫中快照的思想。指定時間間隔將數據進行備份
  • AOF:傳統數據庫中的日志思想,把每條改變數據集的命令追加到AOF文件的末尾,數據丟失時,可以根據AOF文件中的命令重建數據庫

?常見問題:

  • 緩存雪崩:短時間內大量緩存數據失效,客戶端的大量請求直接發送到數據庫,導致數據庫崩潰,可以通過加鎖或隊列、設置不同的緩存失效時間、添加二級緩存等方法避免
  • 緩存穿透:緩存沒有存儲服務器需要的數據或查詢數據為空,服務器有大量直接訪問數據庫的請求。可以通過為空數據設置默認值;設置過濾器等方法緩解
  • 緩存預熱:系統上線后,需要將相關需要緩存數據直接加到緩存系統中,避免需要第二次訪問某些數據時才將數據加入緩存的效率低下的問題
  • 緩存更新:緩存中的過期數據沒有及時更新,可以通過定期更新;根據查詢語句判斷是否過期等方式避免

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

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

相關文章

【論文速遞】2025年04周 (Robotics/Embodied AI/LLM)

目錄 DeepSeek-R1: Incentivizing Reasoning Capability in LLMs via Reinforcement Learning摘要 Evolving Deeper LLM Thinking摘要 Kimi k1.5: Scaling Reinforcement Learning with LLMs摘要 Agent-R: Training Language Model Agents to Reflect via Iterative Self-Train…

FortiAI 重塑Fortinet Security Fabric全面智能化進階

專注推動網絡與安全融合的全球性綜合網絡安全解決方案供應商 Fortinet(NASDAQ:FTNT),近日宣布,旗下 Fortinet Security Fabric 安全平臺成功嵌入了 FortiAI 關鍵創新功能。這一舉措將有效增強用戶對各類新興威脅的防護…

汽車免拆診斷案例 | 2019款大眾途觀L車鼓風機偶爾不工作

故障現象 一輛2019款大眾途觀L車,搭載DKV發動機和0DE雙離合變速器,累計行駛里程約為8萬km。車主進廠反映,鼓風機偶爾不工作。 故障診斷  接車后試車,鼓風機各擋位均工作正常。用故障檢測儀檢測,空調控制單元&#x…

MySQL為什么默認使用RR隔離級別?

大家好,我是鋒哥。今天分享關于【MySQL為什么默認使用RR隔離級別?】面試題。希望對大家有幫助; MySQL為什么默認使用RR隔離級別? 1000道 互聯網大廠Java工程師 精選面試題-Java資源分享網 MySQL 默認使用 RR(Repeatable Read)…

目標檢測篇---R-CNN梳理

目標檢測系列文章 第一章 R-CNN 目錄 目標檢測系列文章📄 論文標題🧠 論文邏輯梳理1. 引言部分梳理 (動機與思想) 📝 三句話總結🔍 方法邏輯梳理🚀 關鍵創新點🔗 方法流程圖補充邊界框回歸 (BBR)1. BBR 的…

Java技術棧 —— 基本規范

Java技術棧 —— 基本規范 一、接口文檔生成工具二、接口設計2.1 開發順序2.2 接口規范 三、數據類封裝 一、接口文檔生成工具 有很多jar包都支持swagger的接口文檔,這樣方便了接口測試,不需要用apifox自己寫接口,直接調用文檔里的swagger接…

Django ORM 定義模型

提示:定義模型字段的類型 文章目錄 一、字段類型二、字段屬性三、元信息 一、字段類型 常用字段 字段名描述備注AutoFieldint 自增必填參數 primary_keyTrue,無該字段時,django自動創建一個 BigAutoField,一個model不能有兩個Au…

[密碼學基礎]GB與GM國密標準深度解析:定位、差異與協同發展

[密碼學基礎]GB與GM國密標準深度解析:定位、差異與協同發展 導語 在國產密碼技術自主可控的浪潮下,GB(國家標準)與GM(密碼行業標準)共同構建了我國商用密碼的技術規范體系。二者在制定主體、法律效力、技術…

Day-1 漏洞攻擊實戰

實訓任務1 漏洞攻擊實戰一 使用 御劍 得到網站后臺地址 數據庫登錄與日志配置?? 使用默認密碼 root:root 登錄phpMyAdmin,執行 SHOW VARIABLES LIKE general% 查看日志狀態。 開啟日志功能:set global general_log "ON";(配圖&…

leetcode 2563. 統計公平數對的數目 中等

給你一個下標從 0 開始、長度為 n 的整數數組 nums &#xff0c;和兩個整數 lower 和 upper &#xff0c;返回 公平數對的數目 。 如果 (i, j) 數對滿足以下情況&#xff0c;則認為它是一個 公平數對 &#xff1a; 0 < i < j < n&#xff0c;且lower < nums[i] …

011數論——算法備賽

素數篩 給定n, 求2~n內的所有素數 埃氏篩 利用素數的定義&#xff0c; 輸出素數2&#xff0c;然后篩掉2的倍數&#xff0c;得 {2,3,5,7,9,11,13&#xff0c;…}輸出素數3&#xff0c;然后篩掉3的倍數&#xff0c;得 {2,3,5,7,11,13&#xff0c;…} 繼續上述步驟&#xff0…

算法之貪心算法

貪心算法 貪心算法核心思想常見應用場景典型案例案例一&#xff1a;找零問題案例二&#xff1a;活動選擇問題案例三&#xff1a;貨倉選址問題 貪心算法的應用詳解霍夫曼編碼最小生成樹Dijkstra最短路徑算法 總結 貪心算法 核心思想 貪心算法&#xff08;Greedy Algorithm&…

英碼科技與泊川軟件,攜手加速AI與嵌入式系統融合創新

2025年4月15日&#xff0c;廣州英碼信息科技有限公司&#xff08;以下簡稱“英碼科技”&#xff09;與廣州泊川軟件技術有限公司&#xff08;以下簡稱“泊川軟件”&#xff09; 正式簽署戰略合作框架協議。此次合作將充分發揮雙方在AI計算硬件與嵌入式操作系統領域的技術優勢&a…

Flowable7.x學習筆記(九)部署 BPMN XML 流程

前言 到本篇為止&#xff0c;我們已經完成了流程定義以及其 BPMN XML 本身的查詢和新增功能&#xff0c;那我們有有了XML之后就可以開始著手研究實現 Flowable7對流程的各種操作了&#xff0c;比如部署&#xff0c;掛起&#xff0c;發起等等。 首先第一步&#xff0c;我們本篇文…

electron 渲染進程按鈕創建新window,報BrowserWindow is not a constructor錯誤;

在 Electron 中&#xff0c;有主進程和渲染進程 主進程&#xff1a;在Node.js環境中運行—意味著能夠使用require模塊并使用所有Node.js API 渲染進程&#xff1a;每個electron應用都會為每個打開的BrowserWindow&#xff08;與每個網頁嵌入&#xff09;生成一個單獨的渲染器進…

深入規劃 Elasticsearch 索引:策略與實踐

一、Elasticsearch 索引概述 &#xff08;一&#xff09;索引基本概念 Elasticsearch 是一個分布式、高性能的全文搜索引擎&#xff0c;其核心概念之一便是索引。索引本質上是一個存儲文檔的邏輯容器&#xff0c;它使得數據能夠在高效的檢索機制下被查詢到。當我們對文檔進行…

llamafactory的包安裝

cuda版本12.1&#xff0c;python版本3.10&#xff0c;torch版本2.4.0&#xff0c;幾個關鍵包版本如下&#xff1a; torch2.4.0cu121 transformers4.48.3 triton3.0.0 flash-attn2.7.1.post4 xformers0.0.27.post2 vllm0.6.3.post1 vllm-flash-attn2.6.1 unsloth2025.3.18 unsl…

Redis專題

前言 Redis的各種思想跟機組Cache和操作系統對進程的管理非常類似&#xff01; 一&#xff1a;看到你的簡歷上寫了你的項目里面用到了redis&#xff0c;為啥用redis&#xff1f; 因為傳統的關系型數據庫如Mysql,已經不能適用所有的場景&#xff0c;比如秒殺的庫存扣減&#xff…

【Rust 精進之路之第7篇-函數之道】定義、調用與參數傳遞:構建代碼的基本單元

系列: Rust 精進之路:構建可靠、高效軟件的底層邏輯 作者: 碼覺客 發布日期: 2025-04-20 引言:封裝邏輯,代碼復用的基石 在之前的文章中,我們已經探索了 Rust 如何處理數據(變量、標量類型、復合類型)以及如何控制程序的執行流程(if/else、循環)。這些構成了編寫簡…

文件有幾十個T,需要做rag,用ragFlow能否快速落地呢?

一、RAGFlow的優勢 1、RAGFlow處理大規模數據性能&#xff1a; &#xff08;1&#xff09;、RAGFlow支持分布式索引構建&#xff0c;采用分片技術&#xff0c;能夠處理TB級數據。 &#xff08;2&#xff09;、它結合向量搜索和關鍵詞搜索&#xff0c;提高檢索效率。 &#xf…