資料服務與資料庫技術
目錄
一、資料服務
資料服務(Data Serving)指的是面向各種操作型業務,提供資料的增加、刪除、修改以及簡單的查詢功能。提供資料服務功能的系統就是資料服務系統,包括支撐操作型業務的關係資料庫、NoSQL資料庫以及NewSQL資料庫等。
二、OLTP與OLAP
OLTP
定義
On-Line Transaction Processing聯機事務處理過程(OLTP),也稱為面向交易的處理過程,其基本特徵是前臺接收的使用者資料可以立即傳送到計算中心進行處理,並在很短的時間內給出處理結果,是對使用者操作快速響應的方式之一。
特徵:
- 支援大量併發使用者定期新增和修改資料。
- 反映隨時變化的單位狀態,但不儲存其歷史記錄。
- 包含大量資料,其中包括用於驗證事務的大量資料。
- 可以進行優化以對事務活動做出響應。
- 提供用於支援單位日常運營的技術基礎結構。
- 個別事務能夠很快地完成,並且只需訪問相對較少的資料。
- 實時性要求高。
- 交易一般是確定的,所以OLTP是對確定性的資料進行存取。(比如存取款都有一個特定的金額)
- 併發性要求高並且嚴格的要求事務的完整、安全性。(比如這種情況:有可能你和你的家人同時在不同的銀行取同一個帳號的款)。
OLAP
定義:
聯機分析處理OLAP是一種軟體技術,它使分析人員能夠迅速、一致、互動地從各個方面觀察資訊,以達到深入理解資料的目的。
特徵:
它具有FASMI(Fast Analysis of Shared Multidimensional Information),即共享多維資訊的快速分析的特徵。其中
F是快速性(Fast),指系統能在數秒內對使用者的多數分析要求做出反應;
A是可分析性(Analysis),指使用者無需程式設計就可以定義新的專門計算,將其作為分析的一部 分,並以使用者所希望的方式給出報告;
M是多維性(Multi—dimensional),指提供對資料分析的多維檢視和分析;
I是資訊性(Information),指能及時獲得資訊,並且管理大容量資訊。
區別:
三、不同資料庫技術(SQL、NoSQL、NewSQL)的對比
關係資料庫(SQL、RMDBS)
關係資料庫,是建立在關係資料庫模型基礎上的資料庫,藉助於集合代數等概念和方法來處理資料庫中的資料,同時也是一個被組織成一組擁有正式描述性的表格,該形式的表格作用的實質是裝載著資料項的特殊收集體,這些表格中的資料能以許多不同的方式被存取或重新召集而不需要重新組織資料庫表格。關係資料庫的定義造成元資料的一張表格或造成表格、列、範圍和約束的正式描述。每個表格(有時被稱為一個關係)包含用列表示的一個或更多的資料種類。 每行包含一個唯一的資料實體,這些資料是被列定義的種類。當創造一個關係資料庫的時候,你能定義資料列的可能值的範圍和可能應用於那個資料值的進一步約束。而SQL語言是標準使用者和應用程式到關係資料庫的介面。其優勢是容易擴充,且在最初的資料庫創造之後,一個新的資料種類能被新增而不需要修改所有的現有應用軟體。主流的關係資料庫有oracle、db2、sqlserver、sybase、mysql等。
並行資料庫與分散式資料庫
並行資料庫(parallel database):
並行資料庫是新一代高效能資料庫系統,是在大規模並行處理計算機和叢集平行計算環境的基礎上提出。
根據所在的計算機的處理器(Processor)、記憶體(Memory)及儲存裝置(Storage)的相互關係,並行資料庫可以歸納為三種基本的體系結構:
共享記憶體(Shared-Memory,簡稱SM)
該結構由多個處理機,一個全域性共享的主儲存器,多個磁碟儲存組成。各個處理器通過高速通訊網路(Interconnection Network)與共享記憶體連線,並均可直接訪問系統中的一個、多個或全部的磁碟儲存,在系統中,所有的記憶體和磁碟儲存均由多個處理器共享。
提供資料庫服務的處理器通過全域性共享記憶體交換訊息和資料,通訊效率高,查詢內部和查詢間並行性實現不需要額外的開銷。
資料庫資料儲存在多個磁碟上,可被所有處理器訪問
此結構硬體成本高,由於多個處理器共享記憶體,處理器數量增加導致記憶體爭用,系統中處理器數量受到限制,可擴充性差。由於共享記憶體機制,記憶體錯誤直接影響系統。
共享磁碟(Shared-Disk,簡稱SD)
此結構由多個擁有獨立記憶體的處理器和多個磁碟組成,各個處理器之間沒有直接的資訊和資料的交換,每個處理器都可以讀寫全部磁碟。處理器與磁碟由高速通訊網路連線。
優點:此結構經常用於實現資料庫叢集,硬體成本低,可擴充性好,可用性強。
缺點:多個處理器共享磁碟儲存,當處理器增加可能導致磁碟爭用導致效能問題。每個處理器可訪問全部磁碟儲存。磁碟儲存中資料被複制到處理器高速緩衝區進行處理,會出現多個處理器同時對同一磁碟位置進行訪問和修改,最終導致資料的一致性無法保證。解決辦法是增加一個分散式快取管理器對各個處理器的併發訪問進行全域性控制與管理。不過這會帶來額外的通訊開銷。
無資源共享(Shared-Nothing,簡稱SN)
這種結構由多個處理結點構成,每個處理結點有自己獨立的處理器,獨立的記憶體,獨立的磁碟。多個處理結點在處理器級上由高速通訊網路連線,系統中各個處理器用自己的記憶體處理資料。
這種結構,每個處理結點就是一個小型資料庫系統,多個結點一起構成分散式的並行資料庫系統。每個處理器使用自己的資源處理資料,不存在資源爭用,提高整體效能。
這種結構具有優良的可擴充套件性——只需增加額外的處理節點,就可以以接近線性的比例增加系統的處理能力。
分散式資料庫系統 (distributed database system)
定義:
分散式資料庫系統中,每個應用程式可以對資料進行透明操作,資料庫中的資料分別在不同的區域性資料庫中儲存、由不同DBMS進行管理,在不同的機器上執行,由不同的作業系統支援,被不同通訊網路連線在一起。
分散式資料庫在邏輯上是個統一的整體,但物理上則分別儲存在不同物理結點上。分佈性表現在資料庫中的資料不是儲存在同一計算機的儲存裝置上。
分散式系統希望增加資料冗餘,在不同場地儲存同一資料的多個副本,其原因是:
(1)提高系統可靠性、可用性:當系統某一場地出現故障,系統可對另一場地的相同副本進行操作。不會因一處故障導致系統癱瘓。
(2)提高系統性能:可以根據距離選擇離使用者最近的副本,減少網路通訊代價,改善效能。
主要特點:
獨立透明性:使用者不必關心資料的邏輯分割槽,不必關係資料物理分割槽細節。使用者應用程式書寫和資料沒有進行分佈儲存一樣。資料分佈的資訊由系統儲存在資料字典中,使用者對非本地資料的訪問請求由系統根據資料字典進行解釋、轉換、傳送。
集中結點結合:資料庫是使用者共享的資源,在分散式資料庫中,資料的共享有兩個層次:一是區域性共享,區域性資料庫儲存區域性場地各使用者的共享資料(本地使用者常用)。二是全域性共享,即分散式資料庫的各個場地儲存可供其他場地使用者共享的資料,支援系統全域性應用。因此有倆相應控制結構:集中和自制。各區域性DBMS獨立管理區域性資料庫;同時系統設定集中控制機制,協調區域性DMS工作。
複製透明性:使用者不關心網路中各結點的複製情況,由系統自動完成。
易於擴充套件性:可增加多個伺服器進一步分佈資料和分擔處理任務
優點:
(1)靈活的體系結構
(2)系統可靠性高,可用性好
(3)區域性應用響應速度快
(4)可擴充套件性好
缺點:
(1)系統開銷大,主要是通訊
(2)複雜存取結構
(3)資料的安全性和保密性難處理
分散式資料庫與並行資料庫的區別:
結點地位不同:
DDB的結構與PDB的SN結構看似相似,卻又很大不同:
邏輯上PDB系統中N個結點並不平等。其中只有一個節點與使用者介面,負責接受使用者請求,輸出處理結果,確定執行方案,而其餘節點只具有執行操作和彼此通訊能力。PDB在邏輯上是一個 具有一個前臺處理機和多個後天處理機結點模型的系統。結點在資料處理中只發揮協同作用。
DDB中各結點從邏輯上完全平等,沒有主次之分。DDB中各結點除了能通過網路協同完成全域性事務外,還具有場地自治性。
應用目標不同:
PDB目標是發揮平行計算機的優勢,利用各處理器結點並行完成資料庫任務。
DDB目標在於實現場地自治和資料的全域性透明共享,不要求利用網路中各結點提供處理效能
實現方式不同:
PDB為了充分利用各結點處理能力,採用高速網路連線。傳輸代價相對較低。某些結點空閒,可將負載大的結點的任務通過高速網傳給空閒結點處理。
DDB為了滿足分佈特點,各結點採用區域網或廣域網相連,網路頻寬較低,結點間通訊開銷大,因此查詢處理時儘量較少結點間的資料傳輸量。
NoSQL資料庫
NoSQL,泛指非關係型的資料庫。隨著網際網路web2.0網站的興起,傳統的關係資料庫在處理web2.0網站,特別是超大規模和高併發的SNS型別的web2.0純動態網站已經顯得力不從心,出現了很多難以克服的問題,而非關係型的資料庫則由於其本身的特點得到了非常迅速的發展。NoSQL資料庫的產生就是為了解決大規模資料集合多重資料種類帶來的挑戰,尤其是大資料應用難題。
不同分類特點對比
分類 | Examples舉例 | 典型應用場景 | 資料模型 | 優點 | 缺點 |
---|---|---|---|---|---|
鍵值(key-value) | Tokyo Cabinet/Tyrant, Redis, Voldemort, Oracle BDB | 內容快取,主要用於處理大量資料的高訪問負載,也用於一些日誌系統等等。 | Key 指向 Value 的鍵值對,通常用hash table來實現 | 查詢速度快 | 資料無結構化,通常只被當作字串或者二進位制資料 |
列儲存資料庫 | Cassandra, HBase, Riak | 分散式的檔案系統 | 以列簇式儲存,將同一列資料存在一起 | 查詢速度快,可擴充套件性強,更容易進行分散式擴充套件 | 功能相對侷限 |
文件型資料庫 | CouchDB, MongoDb | Web應用(與Key-Value類似,Value是結構化的,不同的是資料庫能夠了解Value的內容) | Key-Value對應的鍵值對,Value為結構化資料 | 資料結構要求不嚴格,表結構可變,不需要像關係型資料庫一樣需要預先定義表結構 | 查詢效能不高,而且缺乏統一的查詢語法。 |
圖形(Graph)資料庫 | Neo4J, InfoGrid, Infinite Graph | 社交網路,推薦系統等。專注於構建關係圖譜 | 圖結構 | 利用圖結構相關演算法。比如最短路徑定址,N度關係查詢等 |
很多時候需要對整個圖做計算才能得出需要的資訊,而且這種結構不太好做分散式的叢集方案。
|
NewSQL資料庫
NewSQL 是對各種新的可擴充套件/高效能資料庫的簡稱,這類資料庫不僅具有NoSQL對海量資料的儲存管理能力,還保持了傳統資料庫支援ACID和SQL等特性。 NewSQL是指這樣一類新式的關係型資料庫管理系統,針對OLTP(讀-寫)工作負載,追求提供和NoSQL系統相同的擴充套件效能,且仍然保持ACID和SQL等特性(scalable and ACID and (relational and/or sql -access))。
分類
NewSQL系統雖然在的內部結構變化很大,但是它們有兩個顯著的共同特點:(1)它們都支援關係資料模型,(2) 它們都使用SQL作為其主要的介面。已知的第一個NewSQL系統叫做H-Store,它是一個分散式並行記憶體資料庫系統。目前NewSQL系統大致分三類: 新架構 第一型別的NewSQL系統是全新的資料庫平臺,它們均採取了不同的設計方法。它們大概分兩類:
(1) 這類資料庫工作在一個分散式叢集的節點上,其中每個節點擁有一個數據子集。 SQL查詢被分成查詢片段傳送給自己所在的資料的節點上執行。這些資料庫可以通過新增額外的節點來線性擴充套件。現有的這類資料庫有: Google Spanner, VoltDB, Clustrix, NuoDB.
(2) 這些資料庫系統通常有一個單一的主節點的資料來源。它們有一組節點用來做事務處理,這些節點接到特定的SQL查詢後,會把它所需的所有資料從主節點上取回來後執行SQL查詢,再返回結果。 SQL引擎 第二類是高度優化的SQL儲存引擎。這些系統提供了MySQL相同的程式設計介面,但擴充套件性比內建的引擎InnoDB更好。這類資料庫系統有:TokuDB, MemSQL。 透明分片 這類系統提供了分片的中介軟體層,資料庫自動分割在多個節點執行。這類資料庫包擴:ScaleBase,dbShards, Scalearc。
資料科學交流群,群號:189158789 ,歡迎各位對資料科學感興趣的小夥伴的加入!