目錄
三、不同數據庫技術(SQL、NoSQL、NewSQL)的對比
一、數據服務
數據服務(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 ,歡迎各位對數據科學感興趣的小伙伴的加入!