摘要:讀取出數據時,將此版本號一同讀出,之后更新時,對此版本號加一。此時,將提交數據的版本數據與數據庫表對應記錄的當前版本信息進行比對,如果提交的數據版本號大于數據庫表當前版本號,則予以更新,否則認為是過期數據。
前言
很多人都在討論數據的指數型增長,以及我們將會有比想象的還要大的數據量。但是,很少有人從數據庫的角度談論這個問題。隨著數據量的暴漲,數據庫也需要隨之升級。這也是為什么既要了解如何分析海量數據,也要了解數據庫如何存儲這些數據變得越來越重要。
AACID(Atomicity, Consistency, Isolation, Durability)
通常用于SQL數據庫,用來形容數據庫事務的屬性
補充:
Atomicity原子性:一個事務的所有操作,要么全部完成,要么全部不完成。不會結束在中間某個階段
Consistency一致性:在事務開始之前和事務結束以后,數據庫的完整性沒有被破壞。表示數據庫寫入的資料必須完全符合所有的預設規則
Isolation隔離性:數據庫允許多個并發事務同時對其數據進行讀寫和修改能力,隔離性可以防止多個事務并發執行時由于交叉執行而導致的數據不一致。事務的隔離級別包括讀未提交(Read uncommitted)、讀提交(read committed)、可重復讀(repeatable read)和串行化(Serializable)
Durability持久性:對數據的修改是永久的,即使系統故障也不會丟失因為之前面試有被問到過數據庫的事務隔離級別,所以在這里加深一下印象:
未提交讀:能讀取到其他會話中未提交事務修改的數據(很少使用)
已提交讀:只能讀取到已經提交的數據,數據的讀取都是不加鎖的,但是數據的寫入、修改和刪除是需要加鎖的
可重復讀:在同一個事務內的查詢都是事務開始時刻一致的,InnoDB默認級別。
串行讀:完全串行化的讀,每次讀都需要獲得表級共享鎖,讀寫相互都會阻塞
悲觀鎖:對數據被外界(包括本系統當前的其他事務,以及來自外部系統的事務處理)修改持保守態度,因此,在整個數據處理過程中,將數據處于鎖定狀態。往往依靠數據庫提供的鎖機制
樂觀鎖:大多是基于數據版本( Version )記錄機制實現。何謂數據版本?即為數據增加一個版本標識,在基于數據庫表的版本解決方案中,一般是通過為數據庫表增加一個 “version” 字段來實現。讀取出數據時,將此版本號一同讀出,之后更新時,對此版本號加一。此時,將提交數據的版本數據與數據庫表對應記錄的當前版本信息進行比對,如果提交的數據版本號大于數據庫表當前版本號,則予以更新,否則認為是過期數據。
Aggregate 聚合
一組可以被當做一個單元的領域對象。適合作為大型分布式系統上的數據存儲單元。
BASE(Basic Availability, Soft State, Eventual Consistency)
用來形容數據庫事務的屬性,尤其是需要管理非結構化數據的NoSQL數據庫。約等于放棄CAP屬性中的一致性。
Basic Availability:不保證時時刻刻的可用性
Soft State:系統狀態可能在沒有輸入的情況下會發生改變,因為需要達到最終的一致性
Eventual Consistency:系統會在一段時間之后最終達成一致
B-樹
所有的葉節點都在同一個高度,所有的非葉節點都包含n~2n個子節點的數據結構。它用于優化讀寫大量數據塊或是大量讀操作。
云原生數據庫
在云上構建并運行的數據庫
Complex event processing 復雜事件處理
從多個流中有組織的收集數據進行分析和規劃的過程
Consistency 一致性
數據庫事務的四個基本屬性之一,指如果一個事務失敗了,那么數據將會返回至最初的狀態。如果成功了,那么將新建一個數據狀態。
CAP(Consistency,Availability, Partition Tolerance)
這個概念通常用于提醒開發人員在數據庫設計中所需要作出的妥協。
Consistency: 確保分布式集群中每一個節點返回相同的且是最近成功寫入的數據D
Availability: 每個沒有當掉的節點在一段時間內對每一個讀寫請求作出相應
Partition Tolerant: 盡管存在網絡分區,系統仍然能正常運行并保持一致性
Database clustering 數據庫集群
將兩個或多個實例連接到數據庫,通常用于容錯,負載均衡和并行處理。
Data management數據庫管理
一個組織存儲,運行和分析數據的完整的生命周期。
Data mining 數據挖掘
在大量數據中發掘模式,并將其轉化為可以理解的形式的過程
DBMS 數據庫管理系統
一套用于管理終端用戶和數據庫之間的數據的軟件和工具
Distributed system 分布式系統
一組獨立的計算機協作運行,使其看上去好像是一臺計算機在工作。
Document Store
從文檔而不是定義好的table中獲取數據的一種數據庫,通常會將文檔數據以一種可以搜索的方式展示出來。
ElasticSearch 彈性搜索
一個基于JAVA的搜索引擎,可以將近實時的搜索和索引文件,能夠自動索引JSON文檔。
Fault tolerance 容錯性
系統能夠在不干擾別的系統的情況下應對硬件或是軟件故障。
Graph store
一種用于處理包含大量關聯的數據的數據庫,比如社交圖,標簽系統,或是一切富鏈接領域。它還常用于路由和定位服務。
High availability 高可用性
指及時出現組件崩潰,也能持續提供可用資源的系統。它可以通過硬件冗余,軟件方法和其它特殊的策略來實現。
Hybrid transaction/analytical processing
一種應用的架構,該架構據說突破了事務處理和分析的高墻,從而支持實時決策制定。
In-memory
一個通用的生產用語,通常指將數據加載到RAM或是閃存而不是硬盤的數據管理工具
Join
SQL術語,在關系型數據庫中將多個數據庫用一些列關聯起來
Journaling
指實時的將數據庫中的所有數據更新寫入日志。如果原始數據損壞或是刪除,可以用生成的日志恢復。
JPA(Java Persistent API)
基于JAVA的用于獲取,管理和持久化數據的實現。
Key-value store
一種將數據以鍵值對的形式存儲的數據庫。它用于處理大量小型的,連續的讀寫操作。
MapReducer
Google創建的一種具有高可擴展性的編程模型。
MVCC 多版本同步控制
一種用于處理同時讀寫數據庫的策略。
InnoDB中MVCC的實現N
一般我們認為MVCC有下面幾個特點:
1.每行數據都存在一個版本,每次數據更新時都更新該版本
2.修改時Copy出當前版本隨意修改,個事務之間無干擾
3.保存時比較版本號,如果成功(commit),則覆蓋原記錄;失敗則放棄copy(rollback)InnoDB的默認事務隔離級別為可重復讀(RR),使用行級鎖
Innodb為每行記錄都實現了三個隱藏字段:6字節的事務ID(DB_TRX_ID ),7字節的回滾指針(DB_ROLL_PTR),隱藏的ID
1.事務以排他鎖的形式修改原始數據
2.把修改前的數據存放于undo log,通過回滾指針與主數據關聯
3.修改成功(commit)啥都不做,失敗則恢復undo log中的數據(rollback)
NoSQL
不同于傳統的關系型數據庫結構,結合了傳統SQL以外的查詢手段的一類數據庫。
ORM
使用面向對象編程語言而非數據庫語言將數據在不兼容的系統之間進行轉化的一種工具。
Parallelism
操作系統能夠相互協作來解決一個問題的狀態
Sharding 分表
也可以成為水平分割,將數據庫分割為幾個片段,通常用來提升數據庫的速度和可靠性
Wide-column store
又被稱為大數據倉庫,這些數據庫以記錄的形式存儲數據,而且能夠保存大量的動態列。列的名稱和鍵不是固定的
原文鏈接在這里。
其中還有一些新興的名詞在文中并沒有提及,一方面是因為不熟悉感覺翻譯會有偏差,另一方面是希望面向面試來了解相關的詞匯。
后序還會在這里更新一些其他的感覺比較重要的數據庫概念。
參考文件Innodb中的事務隔離級別和鎖的關系
ACID vs BASE
理解CAP理論
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/17676.html
摘要:因此,誤解幾乎是與之俱來的。這是完全錯誤的。就像所強調的,對于一個被稱作的來說,狀態轉移管理是一個必須要完成的需求。你可以將其稱為或是,但是請不要把它叫做。 2000年的時候,Douglas Crockford聲明JavaScript是最被誤解的編程語言。這種誤解來源于不良的命名規范,錯誤設計,非標準模式等等。因此,誤解幾乎是與之俱來的。 我也在關于Restful架構上發表了一個相似的...
摘要:是指可能導致程序終止的非常嚴重的時間。具有最高的級別,旨在關閉中的日志功能。因此為每一個消息選擇一個合適的日志級別是非常重要的。日志的個小建議將日志訪日代碼塊它能顯著的減少因為字符串拼接而帶來的性能的影響。 前言 首先,這篇文章沒有進行任何的日志功能的詳細介紹,而是對日志提出了幾種最佳實踐。適合對日志記錄有所了解的同學閱讀。下面是正文: JAVA日志管理既是一門科學,又是一門藝術。科學...
摘要:否則它就會用新的值替代當前值。在這種情況下,鎖可能會優于原子變量,但在實際的爭用級別中,原子變量的性能優于鎖。在中引入了另外一個構件。 題目要求 在我們深入了解CAS(Compare And Swap)策略以及它是如何在AtomicInteger這樣的原子構造器中使用的,首先來看一下這段代碼: public class MyApp { private volatile int ...
閱讀 2351·2021-11-24 11:16
閱讀 2034·2021-09-30 09:47
閱讀 2004·2021-09-10 10:51
閱讀 1322·2019-08-30 14:08
閱讀 3140·2019-08-30 13:47
閱讀 1528·2019-08-30 13:02
閱讀 3232·2019-08-29 12:29
閱讀 3195·2019-08-26 17:05