主頁 > 資料庫 > 讀改變未來的九大演算法筆記02_資料庫

讀改變未來的九大演算法筆記02_資料庫

2023-06-03 08:47:19 資料庫

1. 基礎思想

1.1. 預寫日志記錄

1.2. 兩階段提交

1.3. 關系資料庫

2. 兩個事實

2.1. 計算機程式會崩潰

2.1.1. 當一個程式崩潰時,它會丟掉所有正在處理的東西

2.1.2. 只有安放在計算機檔案系統中的資訊會得到保存

2.1.3. 崩潰相當寬泛:包括任何可能導致計算機停止運行進而損失資料的事

2.1.3.1. 可能的事件包括斷電、硬碟出錯、其他硬體出錯,以及作業系統或應用程式中的漏洞

2.1.4. 即便這些泛指的崩潰極少發生,一些資料庫也不能承受崩潰的風險

2.1.4.1. 銀行、保險公司和其他資料代表實際金錢的組織,這些組織不能承受任何情況下記錄中出現不一致性的風險

2.2. 硬碟和閃存條等計算機存盤設備一次只能寫入少量資料

2.2.1. 基本上在500個字符左右

2.2.2. 現代設備每秒能執行成千上萬次這種500個字符的寫入操作

2.2.2.1. 現實是磁盤內容每次只能改變數百個字符

2.2.3. 通常來說,對任何一個大小合理的資料庫而言,更改兩行的確需要兩次單獨的磁盤操作

3. 交易處理中的兩個主要問題

3.1. 高效性

3.2. 可靠性

4. 一致性

4.1. Consistency

4.2. 資料庫中的資訊并不自相矛盾

4.3. 存在不一致性非常有害且不能為自動化工具糾正的情況

4.3.1. 銀行轉賬

5. 預寫日志記錄

5.1. “待辦事項表把戲”

5.1.1. To-do List Trick

5.2. 基本思想

5.2.1. 維護一個資料庫計劃采取的動作日志

5.2.1.1. 日志被存盤在硬碟或其他一些永久性存盤介質中

5.2.1.1.1. 日志中的資訊就能幸免于崩潰和重啟

5.2.1.2. 在一項事務的任何動作得到執行前,它們都被記錄在日志中,然后再被保存到磁盤里

5.2.1.3. 如果事務成功完成,我們就能洗掉日志中的待辦事項串列,進而節省一些空間

5.2.2. 冪等

5.2.2.1. idempotent

5.2.2.2. 資料庫日志中創建的每一項都有相同的效果,不管日志被執行一次、兩次,還是更多次

5.2.2.3. 在從崩潰中恢復后,資料庫只需重新執行任一完整事務的日志活動即可,而且處理不完整事務也變得很容易了

5.2.2.4. 任何不以“終止事務”項結束的日志活動會按照相反順序撤銷,讓資料庫恢復事務未開始前的狀態

5.3. 能阻止不一致性

5.3.1. 排除了資料損壞,但并未消除資料丟失

6. 事務

6.1. 吉姆·格雷(Jim Gray)

6.1.1. 1992年首次出版

6.1.2. 《事務處理:概念與技術》(Transaction Processing:Concepts and Techniques

6.1.3. “容錯”(Fault-tolerance)

6.2. 不管事務是完成還是“回滾”,資料庫仍然能保持一致性

6.3. 每一筆事務都是原子態(Atomic)

6.4. 一筆原始態的事務不能被分成更小的操作

6.4.1. 要么整筆事務成功地完成,要么資料庫處于其原始狀態,就像事務從未開始一般

6.5. 事務能“鎖定”單行或單列,或整張表

6.5.1. 一旦該項事務成功完成,就會“解鎖”之前被它“鎖定”的所有資料

6.5.2. 之后,其他事務就能更改之前被“凍結”的資料

6.6. 事務經常因為不可預料的原因而不能完成

6.6.1. 有時候資料庫事務必須被取消,這被稱為“回滾”或“放棄”一次事務

6.7. 如果一項事務需要“回滾”,資料庫程式只需通過預寫日志(比如待辦事項串列)逆向操作,就能逆轉事務中的每項操作

7. 兩階段提交協議

7.1. “預備提交把戲”

7.1.1. Prepare-thencommit Trick

7.1.2. 在預備階段,“主管”復制品檢查是否所有復制品都能完成事務,

7.1.3. 一旦所有事情都妥當,“主管”復制品就會讓所有復制品提交資料

7.1.4. 在預備階段,其中一個復制品出錯了

7.1.5. “撤銷”階段,其中每個復制品都必須“回滾”事務

7.2. 復制是抵御資料丟失的絕佳方法

7.2.1. 將為朝向阻止任何資料丟失的目標做出巨大努力

7.3. 保有兩份及以上的資料庫拷貝

7.3.1. 每份資料庫拷貝都被稱為復制品(replica)

7.3.2. 所有拷貝的集合被稱為復制資料庫(replicated database)

7.3.2.1. 復制資料庫能隨時保持資料庫的所有拷貝同步

7.3.3. 復制品在地理上是分開的

7.3.3.1. 其中一份復制品被一場災難抹掉,另一份復制品也還在

7.3.3.2. 同一資料庫的多份拷貝被存盤在不同地點

7.4. 鎖定(locking)

7.4.1. 死鎖

7.4.1.1. 許多資料庫都會定期運行偵測死鎖的特殊程式,當發現一個死鎖時,死鎖的其中一項事務會被取消,以便讓另一項事務進行

7.4.1.2. “回滾”能通過對待辦事項串列把戲稍做變更來實作

7.4.1.2.1. 預寫日志必須包含足夠的額外資訊才能在必要時撤銷每次操作

8. 關系資料庫

8.1. 埃德加·科德(E.F.Codd)

8.1.1. 1970年

8.1.2. IBM研究員

8.1.3. 論文《大型共享資料庫資料的關系模型》(A Relational Model of Data for Large Shared Data Banks)

8.2. “虛表把戲”

8.2.1. Virtual Table Trick

8.2.2. 盡管所有的資料庫資訊都能被存盤在一張固定大小的表中,資料庫也能在需要時生成新的臨時表(虛表)

8.3. 基本思想

8.3.1. 每張表都存盤不同的資訊集,但不同表中的個體通常都以某種方式相連

8.3.1.1. 表策略還有另一個巨大優勢,如果表設計無誤,對資料庫的變更會更容易

8.3.1.2. 大量重復(課程細節)和少量重復(課程號)進行了交換,總體而言,這是筆好交易

8.4. 關鍵特征

8.4.1. 資料庫中的資訊有一個預定義結構

8.5. 資料庫能提前計算出需要翻多少“塊”頁,并能記錄每“塊”開始和結束的頁首

8.5.1. 用于快鍵查找的預計算塊集合被稱為“B樹”(B-tree)

9. 備份

9.1. 某個特定時刻對一些資料的快照

9.2. 并不一定是最新的

轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/554208.html

標籤:其他

上一篇:02_重要的兩個日志 redo log 和 binlog

下一篇:返回列表

標籤雲
其他(160273) Python(38199) JavaScript(25474) Java(18184) C(15236) 區塊鏈(8269) C#(7972) AI(7469) 爪哇(7425) MySQL(7226) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5873) 数组(5741) R(5409) Linux(5346) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4581) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2434) ASP.NET(2403) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) .NET技术(1980) 功能(1967) HtmlCss(1952) Web開發(1951) C++(1928) python-3.x(1918) 弹簧靴(1913) xml(1889) PostgreSQL(1879) .NETCore(1863) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • GPU虛擬機創建時間深度優化

    **?桔妹導讀:**GPU虛擬機實體創建速度慢是公有云面臨的普遍問題,由于通常情況下創建虛擬機屬于低頻操作而未引起業界的重視,實際生產中還是存在對GPU實體創建時間有苛刻要求的業務場景。本文將介紹滴滴云在解決該問題時的思路、方法、并展示最終的優化成果。 從公有云服務商那里購買過虛擬主機的資深用戶,一 ......

    uj5u.com 2020-09-10 06:09:13 more
  • 可編程網卡芯片在滴滴云網路的應用實踐

    **?桔妹導讀:**隨著云規模不斷擴大以及業務層面對延遲、帶寬的要求越來越高,采用DPDK 加速網路報文處理的方式在橫向縱向擴展都出現了局限性。可編程芯片成為業界熱點。本文主要講述了可編程網卡芯片在滴滴云網路中的應用實踐,遇到的問題、帶來的收益以及開源社區貢獻。 #1. 資料中心面臨的問題 隨著滴滴 ......

    uj5u.com 2020-09-10 06:10:21 more
  • 滴滴資料通道服務演進之路

    **?桔妹導讀:**滴滴資料通道引擎承載著全公司的資料同步,為下游實時和離線場景提供了必不可少的源資料。隨著任務量的不斷增加,資料通道的整體架構也隨之發生改變。本文介紹了滴滴資料通道的發展歷程,遇到的問題以及今后的規劃。 #1. 背景 資料,對于任何一家互聯網公司來說都是非常重要的資產,公司的大資料 ......

    uj5u.com 2020-09-10 06:11:05 more
  • 滴滴AI Labs斬獲國際機器翻譯大賽中譯英方向世界第三

    **桔妹導讀:**深耕人工智能領域,致力于探索AI讓出行更美好的滴滴AI Labs再次斬獲國際大獎,這次獲獎的專案是什么呢?一起來看看詳細報道吧! 近日,由國際計算語言學協會ACL(The Association for Computational Linguistics)舉辦的世界最具影響力的機器 ......

    uj5u.com 2020-09-10 06:11:29 more
  • MPP (Massively Parallel Processing)大規模并行處理

    1、什么是mpp? MPP (Massively Parallel Processing),即大規模并行處理,在資料庫非共享集群中,每個節點都有獨立的磁盤存盤系統和記憶體系統,業務資料根據資料庫模型和應用特點劃分到各個節點上,每臺資料節點通過專用網路或者商業通用網路互相連接,彼此協同計算,作為整體提供 ......

    uj5u.com 2020-09-10 06:11:41 more
  • 滴滴資料倉庫指標體系建設實踐

    **桔妹導讀:**指標體系是什么?如何使用OSM模型和AARRR模型搭建指標體系?如何統一流程、規范化、工具化管理指標體系?本文會對建設的方法論結合滴滴資料指標體系建設實踐進行解答分析。 #1. 什么是指標體系 ##1.1 指標體系定義 指標體系是將零散單點的具有相互聯系的指標,系統化的組織起來,通 ......

    uj5u.com 2020-09-10 06:12:52 more
  • 單表千萬行資料庫 LIKE 搜索優化手記

    我們經常在資料庫中使用 LIKE 運算子來完成對資料的模糊搜索,LIKE 運算子用于在 WHERE 子句中搜索列中的指定模式。 如果需要查找客戶表中所有姓氏是“張”的資料,可以使用下面的 SQL 陳述句: SELECT * FROM Customer WHERE Name LIKE '張%' 如果需要 ......

    uj5u.com 2020-09-10 06:13:25 more
  • 滴滴Ceph分布式存盤系統優化之鎖優化

    **桔妹導讀:**Ceph是國際知名的開源分布式存盤系統,在工業界和學術界都有著重要的影響。Ceph的架構和演算法設計發表在國際系統領域頂級會議OSDI、SOSP、SC等上。Ceph社區得到Red Hat、SUSE、Intel等大公司的大力支持。Ceph是國際云計算領域應用最廣泛的開源分布式存盤系統, ......

    uj5u.com 2020-09-10 06:14:51 more
  • es~通過ElasticsearchTemplate進行聚合~嵌套聚合

    之前寫過《es~通過ElasticsearchTemplate進行聚合操作》的文章,這一次主要寫一個嵌套的聚合,例如先對sex集合,再對desc聚合,最后再對age求和,共三層嵌套。 Aggregations的部分特性類似于SQL語言中的group by,avg,sum等函式,Aggregation ......

    uj5u.com 2020-09-10 06:14:59 more
  • 爬蟲日志監控 -- Elastc Stack(ELK)部署

    傻瓜式部署,只需替換IP與用戶 導讀: 現ELK四大組件分別為:Elasticsearch(核心)、logstash(處理)、filebeat(采集)、kibana(可視化) 下載均在https://www.elastic.co/cn/downloads/下tar包,各組件版本最好一致,配合fdm會 ......

    uj5u.com 2020-09-10 06:15:05 more
最新发布
  • 讀改變未來的九大演算法筆記02_資料庫

    ![](https://img2023.cnblogs.com/blog/3076680/202306/3076680-20230602231102469-1389179464.png) # 1. 基礎思想 ## 1.1. 預寫日志記錄 ## 1.2. 兩階段提交 ## 1.3. 關系資料庫 # 2 ......

    uj5u.com 2023-06-03 08:47:19 more
  • 02_重要的兩個日志 redo log 和 binlog

    # 02_重要的兩個日志 redo log 和 binlog MySQL 45 講Note: 課程專欄名稱:《MySQL實戰45講》課程 筆記參考:[MYSQL45 講](https://gitee.com/moxi159753/LearningNotes/tree/master/MySQL/MyS ......

    uj5u.com 2023-06-03 08:47:10 more
  • Redis(一) -- 基礎

    # Redis Redis是一個開源(BSD許可高性能的記憶體存盤的key-value資料庫! 可用作資料庫,高速快取和訊息佇列代理。它支持字串、哈希表、串列(List)、集合(Set)、有序集合(Ordered Sets),位圖(bitmap),hyperloglogs,GEO等資料型別。內置復制 ......

    uj5u.com 2023-06-03 08:47:03 more
  • SQLite教程1

    ## 0簡介 在這個SQLite初學者教程中,我們用詳細的例子涵蓋了所有關于SQLite的基礎到高級主題。本課程將通過簡單易懂的主題和例子幫助你學習SQLite。 ### 什么是SQLite? SQLite是一個開源的、嵌入式的、關系型的資料庫管理系統,大約設計于2000年。它是一個輕量級的資料庫, ......

    uj5u.com 2023-06-03 08:46:50 more
  • 執行計劃快取,Prepared Statement性能躍升的秘密

    摘要:一起看一下GaussDB(for MySQL)是如何對執行計劃進行快取并加速Prepared Statement性能的。 本文分享自華為云社區《執行計劃快取,Prepared Statement性能躍升的秘密》,作者: GaussDB 資料庫。 引言 在資料庫系統中,SQL(Structure ......

    uj5u.com 2023-06-03 08:46:23 more
  • 2個場景實體講解GaussDB(DWS)基表統計資訊估算不準的處理方案

    摘要:通過2個實體場景講解GaussDB(DWS)運維解決方案。 本文分享自華為云社區《GaussDB(DWS)運維 -- 基表統計資訊估算不準的常見場景及處理方案》,作者:譡里個檔。 場景1:基表過濾欄位存在的隱式型別時,基表行數估算偏小 這種場景絕大部分場景DWS能夠處理,但是如果隱式型別轉后的 ......

    uj5u.com 2023-06-03 08:46:17 more
  • 4萬6千多高中作文大全ACCESS資料庫

    作文類的資料庫雖然已經有很多,有近萬條的,也有2萬條的,但今天弄到了小學、中學、高中一個系列的資料,而且最主要的是資料的記錄數很多。這份高中作文包含46169條記錄,分類也很好。 grade欄位統計:高一(14062)、高二(13375)、高三(17381)、高考(1351)。 type欄位統計:散 ......

    uj5u.com 2023-06-03 08:46:09 more
  • 2個場景實體講解GaussDB(DWS)基表統計資訊估算不準的處理方案

    摘要:通過2個實體場景講解GaussDB(DWS)運維解決方案。 本文分享自華為云社區《GaussDB(DWS)運維 -- 基表統計資訊估算不準的常見場景及處理方案》,作者:譡里個檔。 場景1:基表過濾欄位存在的隱式型別時,基表行數估算偏小 這種場景絕大部分場景DWS能夠處理,但是如果隱式型別轉后的 ......

    uj5u.com 2023-06-03 08:45:50 more
  • 讀改變未來的九大演算法筆記02_資料庫

    ![](https://img2023.cnblogs.com/blog/3076680/202306/3076680-20230602231102469-1389179464.png) # 1. 基礎思想 ## 1.1. 預寫日志記錄 ## 1.2. 兩階段提交 ## 1.3. 關系資料庫 # 2 ......

    uj5u.com 2023-06-03 08:45:34 more
  • Redis(一) -- 基礎

    # Redis Redis是一個開源(BSD許可高性能的記憶體存盤的key-value資料庫! 可用作資料庫,高速快取和訊息佇列代理。它支持字串、哈希表、串列(List)、集合(Set)、有序集合(Ordered Sets),位圖(bitmap),hyperloglogs,GEO等資料型別。內置復制 ......

    uj5u.com 2023-06-03 08:45:27 more