大數據“復活”記
653
2025-03-31
隨著技術的快速發展,數據庫的應用已經深入到人們生活和工作的方方面面,數據庫也越來越受到重視。下面就來對數據庫進行介紹,主要包括數據庫技術概述、數據庫技術發展史、關系型數據庫架構演進以及關系型數據庫主流應用場景。
一、數據庫技術概述
1.1?數據庫技術
數據庫技術是數據庫管理的有效技術,研究如何對數據進行科學管理,從而為人們提供可共享的、安全的、可靠的數據。
圖1 數據庫技術
如上所示,數據庫技術包括:數據、數據庫、數據庫管理系統以及數據庫系統等概念。
1.2?數據
早期的計算機系統主要用于科學計算,處理的數據是數值型數據:
整數:1,2,3,4,5……
浮點數:14,100.34,-25.36……
現代計算機系統的數據概念是廣義的:表示數字、文字、圖形、圖像、音頻、視頻等。描述事物的符號記錄稱為數據。
現代計算機系統的數據是需要在具體語境下理解的,例如:數字 88 ,可能代表一個部門的人數,也可能代表一門課的考試成績。
數據除了表現形式之外,還有語義,數據的含義稱為數據的語義。記錄是在計算機中表示和存儲數據的一種格式或一種方法,下面來看一條記錄。
圖2 ?記錄的存儲
在上圖中,李明的信息被存入2020級學生信息庫,以李明存儲數據的格式,還可以存入張三、李四等同學的信息。
1.3?數據庫
數據庫是存放數據的倉庫,是大量數據的集合。存放在數據庫中的數據的有如下特點:
永久存儲
永久存儲:在掉電、關機后,再開機后,再訪問存儲的數據,還可以正常訪問,這是數據庫存儲最基本特點。
有組織
有組織:將雜亂無章的數據通過一種模式或模型,去掉一些冗余的數據,形成一個有組織的存放。
可共享
可共享:在現實生活中,通常要求對存儲的一定的數據能夠實現共享。比如在學生數據庫里面存儲的數據,學生可以去訪問,老師可以去訪問,家長可以去訪問,實現數據的共享,如下圖所示:
圖3 數據的共享
1.4?數據庫管理系統
數據庫管理系統是一個能夠科學地組織存儲數據,高效地獲取和維護數據的系統軟件,是位于用于與操作系統之間的數據管理軟件,其主要功能包括:
數據定義功能
數據組織、存儲和管理功能
數據操縱功能
數據庫的事物管理和運行管理功能
數據庫的建立和維護功能
與其他軟件系統的通信功能等
1.5?數據庫系統(Database System,DBS)
數據庫系統是由數據庫、數據庫管理系統(及其應用開發工具)、應用程序和數據庫管理員組成的存儲、管理、處理和維護數據的系統,如下圖所示:
圖4 數據庫系統的組成
在計算機系統層次中的結構如下所示:
圖5 計算機系統層次結構圖
二、數據庫技術發展史
2.1 數據庫技術產生與發展
數據庫技術應數據管理任務的需要而產生。數據管理的發展,包括:應用需求推動,軟硬件的飛速發展為基礎,三個階段:人工管理、文件系統、數據庫系統。
數據庫技術的發展經歷了人工管理階段、文件系統階段以及數據庫系統階段,其中數據庫系統階段包括:層次數據庫、網狀數據庫、關系型數據庫、面向對象數據庫、NoSQL以及NewSQL等。如下所示:
圖6 數據庫技術階段
2.2 數據庫管理三個階段比較
下面通過表格來直觀的對比一下數據庫管理三個階段,如下表所示。
表1 數據庫管理三個階段
角度
層面/階段
人工管理階段
文件系統階段
數據庫系統階段
背景
應用背景
科學計算
科學計算、數據管理
大規模數據管理
硬件背景
無直接存取存儲設備
磁盤,磁鼓
大容量磁盤,磁盤陣列
軟件背景
無操作系統
聯機實時處理,批處理
有數據庫管理系統
處理方式
批處理
文件系統
聯機實時處理,分布處理,批處理
特點
數據管理者
用戶(程序員)
數據面向的對象
某一應用程序
應用程序
現實世界(個人,部門,企業等)
數據的共享程度
無共享,冗余度極大
共享性差,冗余度大
共享性高,冗余度小
數據的獨立性
不獨立,完全依賴于程序
獨立性差
具有高度的物理獨立性和一定的邏輯獨立性
數據的結構化
無結構
記錄內有結構,整體無結構
整體結構化,用數據模型描述
數據控制能力
應用程序控制
應用程序控制
有數據庫管理系統提供數據安全性、完整性、并發控制和恢復能力
如上表所示,開始經歷了人工管理階段和文件系統階段,但是,發展到文件系統階段具有共享性差,冗余度大,獨立性差等,最后,發展到數據庫系統階段。
2.3 數據庫系統優勢
數據庫系統的優勢主要體現在一下幾個方面:
(1)數據庫整體數據的結構化
數據面向整個系統而不是單個應用,被多個應用共享。
(2)數據的共享性高,冗余度低且易擴充
(3)數據獨立性高
物理物理性:應用程序與數據庫中數據的物理存儲是相互獨立的;邏輯獨立性:應用程序與數據庫的邏輯結構是相互獨立的。
(4)統一管理和控制
數據的安全性保護、數據的完整性檢查、并發控制、數據庫恢復。
圖7?數據庫系統
2.4 數據庫系統發展特點
數據庫系統已經成為計算機信息系統和智能應用系統的核心技術之一和重要基礎。
數據庫系統的發展的特點主要包括以下幾點:
數據庫的發展集中表現在數據模型的發展上;
與其它計算機技術交叉結合;
面向應用領域發展數據庫新技術;
在應用領域方面經歷了聯機事物處理、聯機分析處理、實時處理、數據挖掘、地理信息系統等。在數據模型維度,經歷了層次、網狀模型、關系模型、面向對象模型、XML、RDF模型、NoSQL、NewSQL等模型。在計算機技術維度,經歷了分布式處理、并行處理、人工智能、多媒體、移動技術、Cloud技術等。
2.5 層次、網狀、關系模型
首先說一下層次模型,層次模型有且只有一個節點沒有雙親,該節點被稱為根節點(root)。根節點意外的其他節點有且只有一個雙親節點。
圖8 層次模型
接下來是網狀模型,網狀模型允許一個以上的節點無雙親。一個節點可以有多于一個的雙親。
圖9 網狀模型
最后是關系模型,關系模型建立在嚴格的數據概念基礎上,關系必須是規范化的,關系的分量必須是一個不可分的數據項。
表2 關系模型
學號
姓名
年齡
性別
2019004
王四
19
男
2019005
李五
20
女
2019006
陳六
18
男
2019007
趙七
19
女
2019010
宋十
17
男
…………
…………
…………
…………
2.6 結構化查詢語言
SQL語言是一種高級的非過程化編程語言,允許用戶在高層數據結構上工作;
不要求用戶指定數據存放方法。它不需要用戶了解具體數據存放方式。底層結構完全不同的各種關系型數據庫系統可以使用相同的SQL語言作為數據操作和管理的接口。
圖10 SQL語言發展
2.7 其他數據模型
其他數據模型主要有以下幾種。
(1)面向對象數據模型(Object Oriented Data Model, OO模型)
將語義數據模型和面向對象程序設計方法結合起來,用一系列面向對象核心概念構成模型基礎。由于面向對象數據庫操作語言過于復雜,沒有得到開發人員認可。
(2)XML數據模型
可擴展標記語言(extensible markup language,簡稱XML),是W3C在1998年制定的一項標準,被作為互聯網信息交換的標準。XML模型是由若干帶有標簽的節點組成的有向樹,是一種分層自描述模型,具有良好的語義和可擴展性,可以靈活地表示和組織數據,并提供高效的查詢方法,例如:XPath、XQuery、關鍵字查詢、子樹匹配等。
(3)RDF數據模型
互聯網的信息沒有同意表達方式,W3C提出資源描述框架(Resource Description Framework,RDF)來描述和注解互聯網資源。RDF是描述互聯網資源的標記語言,結構為(主語,謂語,賓語)。主要用于語義網、知識庫的基礎數據模型,是當前知識圖譜技術的基石。
2.8 數據管理技術的新挑戰
數據管理技術的新挑戰包括高度可擴展性和可伸縮性、數據類型多樣和異構處理能力、數據處理時效性要求、大數據時代來臨,下面分別來講解下:
(1)高度可擴展性和可伸縮性
隨著數據獲取手段的自動化,多樣化和智能化,導致數據量急劇增大。
(2)數據類型多樣和異構處理能力
結構化數據到半結構化/非結構化數據,文本到圖形圖像,音頻視頻等多媒體數據,流數據、隊列數據。
(3)數據處理時效性要求
傳感、網絡和通信技術發展對于數據快速流入和處理,實時性方面提出了更高的要求。
(4)大數據時代來臨
傳統關系型數據庫面對海量異構、形式繁雜、高速增長、價值密度低的數據問題遇到全面挑戰。NoSQL和NewSQL技術順應大數據發展的需要,蓬勃發展。
圖11 5V特性
2.9 NoSQL技術特點和類型
NoSQL(Not Only SQL)是一種非關系型的、分布式的、不保證滿足ACID特性的一類數據管理系統。
NoSQL具有如下特點。
對數據進行分區(partitioning),利用大量節點并行處理獲得高性能,同時能夠采用橫向擴展方式(scale out);
降低ACID一致性約束,允許暫時不一致,結構最終一致性。遵循CAP理論和BASE原則;
各數據分區提供備份(一般是三份),應對節點故障,提高系統可用性。
常見NoSQL數據庫技術有鍵值數據庫、圖數據庫、列式數據庫、文檔式數據庫。
2.10 主要NoSQL數據庫簡介
下面通過一個表格來直觀的對比下,如下表所示。
表3 主要NoSQL數據庫簡介
分類
代表產品
典型應用場景
數據模型
優點
限制性
鍵值數據庫
Redis
MemCahed
緩存用戶信息,會話信息,配置文件,購物車等
Key指向Value,通常基于Hash table實現
查找速度快
數據無結構化,字符串或二進制數據
列式數據庫
HBase
Cassandra
日志
博客平臺
列族式存儲
查找速度快,很容易分布式擴展
不適合隨機更新,不適合做有刪除和更新的實時操作
文檔型數據庫
DouchDB
MongoDB
日志,可以存儲不同模式的日志信息。基于弱模式的數據分析
和K-V類似,Value的數據結構要求不嚴格,無需預先定義表結構
表結構可變,擴展性好,適合非結構化對象
有些產品不支持事務操作
圖數據庫
Neo4j
Infinite
Graph
推薦引擎
關系圖譜
圖結構
借助圖論算法處理特定領域問題
非圖領域的應用受限
NoSQL并不是為了取代RDBMS,優勢顯著,缺點也較為明顯,與RDBMS一起構建完整的數據庫生態系統。
2.11 NewSQL淺談
NewSQL指追求NoSQL的可擴展性同時能夠支持關系模型(包括ACID特性)的關系型數據庫系統,主要面向OLTP場景,能夠支持SQL作為主要的使用語言。
NewSQL具有如下分類。
采用了新架構重新構建產品。
Shared-Nothing,多節點并發控制,分布式處理,利用復制實現容錯,流失控制,Google Spanner,H-Store,VoltDB等。
采用Transparent Sharding中間件技術。
數據分片(sharding)的過程對于用戶來說是透明的(transparent),用戶的應用程序不需要作出變化。Oracle MySQL Proxy,MariaDB MaxSacle等。
DAAS(Database-as-a-Service,數據庫即服務)
云服務商提供的數據庫產品,云服務商提供具備NewSQL特性的數據庫產品。
Amazon Aurora,阿里云的Oceanbase,騰訊云的CynosDB。
2.12 傳統數據庫VS云數據庫
Gartner的最新報告(2019年)指出,云將主導數據庫市場的未來,到2022年,75%的數據庫將被部署或遷移至云平臺,只有5%的數據庫會考慮部署在本地。
傳統數據庫具有建設和運維成本高、擴展不靈活、性能冗余、資源隔離差、集成性能差的特點。
云數據庫具有易、穩、快、彈、密的特點。即:易使用易管理,業務敏捷上線;高可靠,業務零終端,跨地域容災備份;數據讀寫時延遲低,快速響應業務需求;擴展性好,快速自動彈性伸縮;數據安全性好,全同態加密;
下面通過一個表格來直觀的對比下,如下表所示。
表4 數據庫對比
性能項目
自購服務器搭建數據庫服務
云數據庫
服務可用性
需要購買額外設備,自建自從,自建RAID。
根據業務需求和策略,自動調整資源,高效匹配業務要求。
數據庫可靠性
需要購買額外設備,自建自從,自建RAID。
能夠保證任何一個副本故障時快速進行數據遷移恢復。
系統安全性
需要購買昂貴的硬件設備和軟件服務,需要自行檢測和修復安全漏洞等。
防DDoS攻擊,流量清洗;及時修復各種數據庫安全漏洞。
數據庫備份
需要購買設備,并自行搭建設置和后期維護。
支持自動備份,手動備份,自定義備份存儲周期。
軟硬件投入
數據庫服務器成本相對較高,對于SQL Server需支付許可證費用。
無需投入軟硬件成本,按需購買,彈性伸縮。
系統托管
需要自購服務器設備,如需實現主從,購買兩臺服務器,并進行自建。
無需托管。
維護成本
需要投入大量人力成本,招聘專業的DBA進行維護。
無需運維。
部署擴容
需采購和原設備匹配的硬件,需托管機房的配合,需部署設備,整體周期較長。
彈性擴容,快速升級,按需開通。
資源利用率
考慮峰值,資源利用率低。
按實際結算,100%利用率
三、關系型數據庫架構演進
3.1 數據庫架構發展
隨著業務規模增大,數據庫存儲的數據量和承載的業務壓力也不斷增加,數據庫的架構需要隨之變化,為上層應用提供穩定和高效的數據服務。
圖12 數據庫架構
數據庫架構主要分為主機架構和多級架構,單機架構又分為單主機和獨立主機,多級架構又分為分組和分片。
3.2 單機架構
為了避免應用服務和數據庫服務對資源的競爭,單機架構也從早期的單主機模式發展到數據庫獨立主機模式,把應用和數據服務分開。應用服務可以增加服務器數量,進行負載均衡,增大系統并發能力。
單機架構部署集中,運維方便。但是,在可擴展性方面,數據庫單機架構擴展性只有縱向擴展(Scale-up)。通過增加硬件配置來提升性能,但單臺主機的硬件可配置的資源會遇到上限。而且存在單點故障,擴容的時候往往需要停機擴容,服務停止。硬件故障導致整個服務不可用,甚至數據丟失,單機會遇到性能瓶頸。
圖13 單機架構
3.3 分組架構-主備
主備機架構數據庫部署在兩臺服務器,其中承擔數據讀寫服務的服務器稱為“主機”。另外一臺服務器利用數據同步機制把主機的數據服務過來,稱為“備機”。同一時刻,只有一臺服務器對外提供數據服務。
主備架構具有應用不需要針對數據庫故障來增加開發量,相對單機架構提升了數據容錯性的優點。
主備架構的缺點包括:資源浪費,備機和主機同等配置,但長期范圍內基本上資源限制,無法利用。性能壓力還是集中在單機上,無法解決性能瓶頸問題。當出現故障時候,主備機切換需要一定的人工干預或者監控。
圖14 主備架構
3.4 分組架構-主從
主從式架構部署模式和主備機模式相似,備機(Backup)上升為從機(Slave),對外提供一定的數據服務。它通過讀寫分離方式分散壓力:寫入、修改、刪除操作,在寫庫(主機)上完成。把查詢請求,分配到讀庫(從機)。
主從式架構具有提升資源利用率,適合讀多寫少的應用場景。在大并發讀的使用場景,可以使用負載均衡在多個從機間進行平衡,從機的擴展性比較靈活,擴容操作不會影響到業務進行的優點。
但是,主從式架構特點也很明顯,首先,延遲問題,數據同步到從機數據庫時會有延遲,所以應用必須能夠容忍短暫的不一致性。而且,對于一致性要求非常高的場景是不適合的。寫操作的性能壓力還是集中在主機上。當主機出現故障,需要實現主從切換,人工干預需要響應時間,自動切換復雜度較高。
圖15 主從架構
3.5 分組架構-多主
多主架構數據庫服務器互為主從,同時對外提供完整的數據服務。多主機架構資源利用率較高的同時降低了單點故障的風險。但是,雙主機都接受寫數據,要實現數據雙向同步。雙向復制同樣會帶來延遲問題,極端情況下有可能數據丟失。數據庫數量增加會導致數據同步問題變得極為復雜,實際應用中多見雙機模式。
圖16 多主架構
3.6 共享存儲多活架構
共享存儲的多活架構(Shared-Disk)是一種特殊的多主架構數據庫服務器共享數據存儲,而多個服務器實現均衡負載。具有多個計算服務器提供高可用服務,提供高級別的可用性。可伸縮性,避免了服務器集群的單點故障問題。比較方便的橫向擴展能夠增加整體系統并行處理能力等特點。
但是,共享存儲多活架構實現技術難度大。當存儲器接口貸款達到飽和的時候,增加節點并不能獲得更高的性能,存儲IO容易成為整個系統的性能瓶頸。
圖17 共享存儲多活架構
3.7 分片(Sharding)架構
分片架構主要表現形式就是水平數據分片架構,它把數據分散在多個節點上的分片方案,每一個分片包括數據庫的一部分,成為一個shard。多個節點都擁有相同的數據庫結構,但不同分片的數據之間沒有交集,所有分區數據的并集構成數據總體。
分片架構常見的分片算法有:根據列表值,范圍取值和Hash值進行數據分片。具有數據分散在集群內的各個節點上,所有節點可以獨立性工作的優點。
3.8 無共享(Shared-Nothing)架構
無共享架構是集群中每一個節點(處理單元)都完全擁有自己獨立的CPU/內存/存儲,不存在共享資源的架構。各節點(處理單元)處理自己本地的數據,處理結果可以向上層匯總或者通過通信協議在節點間流轉。節點是相互獨立的,擴展能力強。整個集群擁有強大的并行處理能力。
3.9 MPP架構(Massively Parallel Processing)
大規模并行處理(Massively Parallel Processing)是將任務并行的分散到多個服務器和節點上,在每個節點上計算完成后,將各自部分的結果匯總在一起得到最終的結果。具有任務并行執行,分布式計算的特點。
常見的MPP產品,無共享Master: Vertica, Teradata以及共享Master: Greenplum, Netezza。
3.10 數據庫架構特點對比
下面通過一個表格來直觀的對比下,如下表所示。
表5 數據庫架構特點對比
特點
單機
主備
主從
多主
分片
高可用性
差
一般
較好
好
好
讀寫性能
依賴于單主機的硬件性能瓶頸
依賴于單主機的硬件性能瓶頸
利用讀寫分離,寫性能受主機限制,讀性能可以通過增加從機數量來提升并發能力。
多個主機能夠同時提供讀寫服務,具備較好的讀寫能力。
Shared-Nothing架構提供了出色的分布式計算能力,具備強大的并行處理能力。
數據一致性
不存在數據一致性問題
利用數據同步機制在主備機之間進行同步,存在數據延遲問題和數據丟失風險。
同主備模式,而且隨著從機數量的增加,數據延遲問題和數據丟失風險更為突出。
多主機之間需要進行數據雙向同步,所以容易產生數據不一致問題。但對于Shared-Disk架構不存在數據一致性問題。
基于sharding技術,數據分散在各節點上,節點之間不需要數據同步,所以不存在數據一致性問題。
可擴展性
只能縱向擴展,會遇到單機硬件性能瓶頸
只能縱向擴展,同樣遇到單機硬件性能瓶頸。
從機可以通過橫行擴展來提升并發讀能力。
擴展性好,但是主機數量增加,會導致數據同步的復雜性急劇升高。
理論上可以實現線性擴展,擴展性最好。
四、關系型數據庫主流應用場景
4.1 聯機事物處理(OnLine Transaction Processing)
OLTP是傳統關系數據庫的主要應用,面向基本的,日常的事物處理,例如:銀行儲蓄業務的存取交易,轉賬交易等。它的特點包括:
大吞吐量:大量的短在線事物(插入、更新、刪除),非常快速的查詢處理。
高并發:(準)實時響應。
下面來看一下典型的OLTP場景,包括:零售系統、金融交易系統、火車票銷售系統、秒殺活動。
4.2 聯機分析處理(OnLine Analytical Processing)
聯機分析處理的概念最早是E.F.Codd于1993年相對于OLTP系統而提出的。它是指對數據的查詢和分析操作,通常對大量的歷史數據查詢和分析。涉及到的歷史周期比較長,數據量大,在不同層級上的匯總,聚合操作使得事務處理操作比較復雜。
聯機分析處理有如下特點:
主要面向側重于復雜查詢,回答一些“戰略性”的問題。
數據處理方面聚焦于數據的聚合,匯總,分組計算,窗口計算等“分析型”數據加工和操作。
從多維度去使用和分析數據。
聯機分析處理的典型的OLAP場景包括:報表系統,CRM系統、金融風險預測預警系統、反洗錢系統、數據集市,數據倉庫。
4.3 OLTP和OLAP對比分析
下面通過一個表格來直觀的看一下OLTP和OLAP的對比分析,如下表所示。
表6 OLTP和OLAP對比分析
分類
OLTP
OLAP
分析粒度
細節的
細節的,綜合的或提煉的
時效性
在存取瞬間是準確的
代表過去的數據
數據更新需求
可更新
一般情況,無需更新
操作可預知性
操作需求事先可知道
操作需求事先可能不知道
實時性
對性能要求高,響應毫秒級、秒級
對性能要求相對寬松,響應分鐘級、小時級
數據量
一個時刻操作一條或幾條記錄,數據量小
一個時刻操作一集合,數據量大
驅動方式
事務驅動
分析驅動
應用類型
面向應用
面向分析
應用場景
支持日常運營
支持管理需求
典型應用
銀行核心系統、信用卡系統
ACRM、風險管理
4.4 數據庫性能衡量指標
TPC(Transaction Processing Performance Council,事務處理性能委員會)的職責是制定商務應用基準測試標準(Benchmark)的規范、性能和價格度量,并管理測試結果的發布。制定的是標準規范而不是代碼,任何廠家依據規范最優地構造自己系統進行評測。還推出了很多基準測試標準,其中針對OLTP和OLAP分別有兩個規范。
(1)TPC-C規范
TPC-C規范面向OLTP系統,主要包括兩個指標,流量指標:tpmC(tpm-transactionsper minuete,即每分鐘測試系統處理的事務數量)。性價比指標:Price(測試系統價格)/tpmC。
(2)TPC-H規范
TPC-H規范面向OLAP類系統。流量指標:qphH-Query per hour,即每小時處理的復雜查詢數量。需要考慮測試數據集合大小,分為不同的測試數據集,指定了22個查詢語句,可以根據產品微調。測試場景:數據加載,Power能力測試和Throuanut測試。
五、總結
本篇文章主要介紹了數據庫、數據庫系統和數據管理系統的基本概念,對數據庫幾十年的發展歷史進行了回顧,詳細介紹了數據庫從早期的網狀模型,層次模型發展到關系型模型的歷程,并對近年來新興的NoSQL和NewSQL概念進行了介紹。對關系型數據庫的主要架構進行了對比分析和介紹,對于不同場景下各種架構的優缺點進行了簡單說明。最后對關系型數據的主流應用場景OLTP和OLAP進行了介紹和對比說明。
本文整理自華為云社區【內容共創系列】活動。
查看活動詳情:https://bbs.huaweicloud.com/blogs/314887
相關任務詳情:數據庫介紹
數據庫 數據管理服務 DAS
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。