數據模型(數據 Model)是現實世界數據特征的抽象,用于描述一組數據的概念和定義。數據模型從抽象層次上描述了數據的靜態特征、動態行為和約束條件。數據模型將不同的聯系通過篩選、歸納、總結、命名等抽象過程產生出概念模型,用以表示對現實世界的描述,然后轉換成真實、容易被人們理解和便于計算機處理的數據表現形式。
20世紀60年代中后期,出現了結構化模型,這是數據模型中最基礎的模型之一,主要包括層次模型、網狀模型、關系模型和面向對象模型等。20世紀90代末期,隨著互聯網應用和科學計算等復雜應用的快速發展,開始出現半結構化模型,用以支持結構化模型不能支持的半結構化數據(文本文件、超鏈接等),該模型包括XML模型、JSON 模型、RDF模型、圖模型和超模型等。進入 21世紀,隨著電子商務、 商業智能等應用的不斷發展,終端用戶對數據庫查詢分析的需求得不到滿足,于是數據分析模型成為研究熱點。2010年以來,隨著大數據工業應用的快速發展,為解決海量數據造成的存儲瓶頸以及管理復雜性等問題,以NoSQL和NewSQL數據庫系統為代表的大數據模型成為新的研究熱點。
數據模型作為數據架構管理的核心模塊,主要功能包括數據模型管理、實體關系管理、邏輯轉物理模型、數據模型變更管控、模型可視化等。數據模型可以應用在醫療、政務、交通、金融和商業等領域,
發展歷程
20世紀60年代中后期,隨著信息管理系統(IMS)的出現,結構化模型被提出,它是最早被提出來的數據模型,也是數據模型中最基礎的模型之一。結構化模型主要包括層次模型、網狀模型、關系模型和面向對象模型等。IBM公司的IMS系統為代表的層次模型、DBTG提出的網狀模型和提出的關系模型,層次模型的典型代表是1968年美國IBM公司研發的信息管理系統(information 管理學 system,IMS)。1970年,關系數據庫之父E. F. Codd(Edgar Frank Codd)在其發表的論文《A Relational Model of Data for Large Shared Data Banks》中提出了關系模型。
網狀數據模型的典型代表是DBTG系統,也稱CODASYL系統,它是20世紀70年代數據庫系統語言研究會(CODASYL)下屬的數據庫任務組(DBTG)提出的一個系統方案,該系統提出的基本概念、方法和技術具有普遍意義,對于網狀數據庫管理系統的研制和發展起了重大的影響。傳統數據模型以記錄為基礎,不能很好地面向用戶和應用,20世紀70年代后期出現了第一種非傳統的數據模型——E-R模型,即實體聯系模型。該模型不同于傳統數據模型面向數據庫的實現,而是面向現實世界。
20世紀80年代以來,面向對象的方法和技術在計算機的很多領域都產生了深遠的影響,也促進了數據庫領域中面向對象數據模型的研究和發展。20世紀90年代初期,面向對象模型達到一個頂峰。
20世紀90代末期,隨著互聯網應用和科學計算等復雜應用的快速發展,結構化模型不能很好的支持半結構化數據(如文本文件、超鏈接和HTML文檔等),于是開始出現半結構化模型,包括XML模型、JSON 模型、RDF 模型、圖模型和超模型等。
隨著電子商務、商業智能等應用的不斷發展,終端用戶對數據庫查詢分析的需求無法得到滿足,科德于1993年提出了聯機分析處理(OLAP)的概念,同時多維數據庫和多維分析的概念被提出,數據分析模型成為研究熱點,主要包括ROLAP模型、MOLAP模型和Storm模型等。ROLAP模型主要研究事實表和維表的組織表示及其變種,包括星型模型、雪花模型等;MOLAP模型主要研究數據立方及其優化計算算法。
2010年以來,隨著大數據工業應用的快速發展,傳統的數據模型已經無法應對數據量的爆炸式增長。為了解決因這些海量數據造成的存儲瓶頸以及管理復雜性等問題,以NoSQL和NewSQL數據庫系統為代表的大數據模型成為新的研究熱點,主要包括key-value模型、key-column模型和key-document模型等。
組成部分
數據模型是嚴格定義的一組概念的集合,這些概念精確地描述了系統的靜態特性、動態特性和完整性約束條件,因此,數據模型通常由數據結構,數據操作和完整性約束三部分組成,也稱為數據模型的三要素。
數據結構
數據結構是對系統靜態特征的描述,它的描述對象包括數據的類型、內容、性質和數據之間的相互關系。
數據操作
數據操作時指對數據庫中各種對象(型)的實例(值)允許執行的操作以及操作規則的集合,是對系統動態特性的描述。數據庫主要有查詢和更新(插入、刪除和修改)兩類操作。數據模型必須定義這些操作的確切定義、操作符號、操作規則(如優先級)以及實現操作的語言。
數據的完整性約束
數據的完整性約束條件是一組完整性規則,是給定的數據模型中數據及其聯系所具有的制約和依存關系,用以限定符合數據模型的數據庫狀態以及狀態的變化,防止不合語義的、不正確的數據進入數據庫,以保證數據的正確、有效和相容。
數據模型類型
計算機不能直接處理現實世界中的具體事物,需通過將信息規范化整理和歸類,然后才能將規范信息數據化并傳入計算機的數據庫中保存起來。即首先需要把這些事務抽象為一種既不依賴于某一具體的計算機,又不受某一具體DBMS所左右的信息世界的概念模型,然后再把該概念模型轉換為某一具體DBMS所支持的計算機世界的數據模型。
根據不同模型的應用層次,可以將數據模型分為概念數據模型、邏輯數據模型和物理數據模型。
概念數據模型
概念數據模型是一種面向用戶、面向客觀世界的模型,是開發數據模型的第一步,主要用來描述現實世界的概念化結構,目標是識別系統內的各種實體、屬性及其關系,與具體的數據庫管理系統(DBMS)無關。概念模型中最常用的有E-R模型和面向對象模型等。
邏輯數據模型
邏輯數據模型以概念模型的框架為基礎,既要面向用戶又要面向系統,其內容包含每個實體中的特定數據屬性以及這些屬性之間的特定關系,能夠直觀顯示數據實體、屬性、鍵和關系。邏輯數據建模不僅會影響數據庫設計的方向,還間接影響最終數據庫的性能和管理。邏輯數據模型最常用的有層次模型、網狀模型和關系模型等。
物理數據模型
物理數據模型是一種以面向計算機物理表示的模型,描述了數據在儲存介質上的組織結構,是在邏輯數據模型的基礎上,考慮各種具體的技術實現因素,進行數據庫體系結構設計,真正實現數據在數據庫中的存放。物理數據模型能夠直觀顯示數據庫和數據文件的物理結構,與具體的DBMS、操作系統和硬件均有關。物理數據模型包括XML模型和超模型等。
模型具體分類
從數據組織形式,可以將數據模型分為結構化模型、半結構化模型、分析模型和大數據模型。其中,結構模型包括層次模型、網狀模型、關系模型、網狀模型和面向對象模型;半結構化模型包括XML模型、JSON模型、圖模型和超模型。分析模型包括OLAP模型和Storm模型;大數據模型包括NoSQL模型和NewSQL模型。
結構化模型
層次模型
用樹形結構表示實體及其之間聯系的模型稱為層次模型,它是由若干個基本層次聯系組成的一棵樹,樹的每一個節點代表一個記錄類型,上一層記錄類型和下一層記錄類型之間是1:n的聯系。層次模型有兩點限制:有且僅有一個結點無父結點,此結點即為樹的根;其他結點有且僅有一個父結點。
網狀模型
用有向圖結構表示實體類型以及實體間聯系的數據模型稱為網狀模型。網狀模型取消了層次模型的兩點限制,允許結點有多個父結點,可以有一個以上的結點沒有父結點。
關系模型
關系模型的主要特征是用二維表格來表示實體集,是由若干個關系模式組合的集合。關系模型中,關系的約束有實體完整性約束、參照完整性約束和用戶定義的完整性約束。
E-R模型
E-R模型(entity-relationship model)即實體聯系模型,這個模型直接從現實世界中抽象出實體類型及實體間的聯系,然后用實體聯系圖(ER圖)表示數據模型。ER圖有三個基本成分:矩形框,用于表示實體列席;菱形框,用于表示聯系類型;橢圓形框,用于表示實體類型和聯系類型的屬性。兩個實體集之間的聯系關系可以分為一對一(1:1),一對多(1:n),多對多(m:n)三種。
面向對象模型
面向對象模型是對客觀世界活動的自然刻劃,其中的對象是對客觀世界中有形或無形實體的直接模擬。面向對象模型最基本的概念是對象和類,面向對象模型能完整地描述現實世界的數據結構。
例如:在一個面向對象模型中有五個類,分別是P_P,P_S,PROJECT,PART,SUPPLIER。其中類P_P的屬性PR取值為類PROJECT中的對象;屬性PA取值為PART的對象;類P_S的屬性PA取值為類PART的對象,屬性PS取值為類SUPPLIER的對象。如圖所示:
半結構化模型
XML模型
XML模型分為樹模型和圖模型,是由若干帶有標簽的結點組成的有向樹,XML模型包括元素節點、屬性結點、值結點和有向邊。元素節點是XML樹中的標簽;屬性結點是XML樹中標簽相關的屬性;值結點是標簽的值;有向邊描述了各類型節點之間的關系。XML圖模型允許用戶引入ID/IDREF屬性對樹模型進行擴展,其中,ID屬性唯一地標示了某個元素;IDREF引用其他被ID屬性標示的元素,構成一個有向無環圖。
JSON模型
JSON(ECMAScript object notation)是一種易于讀寫的輕量級數據表示格式,可以被快速、高效地解析。JSON使用文本來標識JavaScript對象的信息,支持字符串、數字、對象和數組等各種類型,并且提供快速讀取數據的方式,被廣泛應用在數據采集和數據挖掘中。
圖模型
雖然JSON模型可以有效地解決互聯網中的數據傳輸問題,但在表示復雜實體關系時的可讀性較差,針對這一問題,研究人員基于圖論提出了圖模型來存儲和表示實體間關系。根據邊是否有方向,圖模型分為無向圖和有向圖。圖模型是提供多種查詢方法,例如最短路徑查詢,子圖同構等。
超模型
超模型由一組超實體以及定義在它們上面的關系和約束組成,超模型必須由一個或多個模型來實現。其中,超實體被定義為實體或超實體類型的集合。超實體像實體一樣,除試圖捕獲更高級的信息以外,它還可以有屬性、協議以及參加各種關系等。超模型為復雜的實體模型建模提供了快捷的方法。
分析模型
OLAP模型
OLAP即在線分析處理(On-Line Analytical Processing),是一種基于多維數據的模型。OLAP的基本操作主要包括對多維數據進行切片、切塊、旋轉、鉆取等分析操作,可以使得用戶從多個角度、多個側面觀察數據庫中的數據。OLAP 模型可分為兩種類型:MOLAP(多維 OLAP)和 ROLAP(關系 OLAP)
采用關系數據庫來存放多維數據進行聯機分析處理,則稱之為關系聯機分析處理(ROLAP)。ROLAP將多維數據庫的多維結構劃分為兩類表:一類是事實表,用來存儲數據和維關鍵字;另一類是維表,即對每個維度使用一個或多個表來存放層次、成員類別等維度的描述信息。ROLAP模型主要包括星型模型、雪花模型。
采用多維數據庫進行聯機分析處理,叫做多維聯機分析處理(MOLAP)。MOLAP將OLAP分析所用到的多維數據以多維數組的形式存儲。形成“立方體”的結構。MOLAP事先將匯總數據計算好,存放在自己特定的多維數據庫中,用戶的OLAP操作可以直接映射到多維數據庫的訪問,不通過SQL訪問,加快了響應速度。
Storm模型
Storm一種面向對象的數據模型,該模型集成了不同類型數據的結構和時間兩個方面,這些數據包括傳統的原子數據,如整數、實數或字符串,以及出現CAD/CAM、地理和醫學數據庫中的程序、文本、視覺和音頻信息。Storm模型注重開放性和動態性。
大數據模型
NoSQL模型
NoSQL模型是指非關系型、不遵循ACID原則的存儲模型。NoSQL模型主要有3類,即Key-Value模型、Key-Column模型和Key-Document模型。
Key-VaIue模型由一個鍵-值映射的字典構成。Kay-Value支持字符串類型、字符串列表、無序(或有序)不重復的字符串集合以及鍵-值哈希表。Key-Document模型面向集合的,即數據被分組存儲在數據集(集合)中,每個集合都有一個唯一的標識,類似于關系型數據庫中的表結構,但該模型不需要定義模式。其核心思想是“數據用文檔(如JSON)來表示”。Key-Column模型是一個稀疏的、分布式的、持久化的多維排序圖,并通過字典順序來組織數據,支持動態擴展。
NewSQL模型
NewSQL試圖在可擴展的NoSQL數據庫和SQL數據庫之間找到一種中間立場,其目標是擴展和維護一致性,遵循ACID原則。NewSQL將基于OLTP 的事務與NoSQL的高性能解決方案集成。NewSQL使用了無共享的架構,可以方便地部署在海量節點中。
數據建模
數據建模可以使開發人員、數據架構師、業務分析師和其他利益相關方可以更輕松地查看和理解數據庫或數據倉庫中數據之間的關系。數據建模可分為六個步驟:
第一步是確定實體,確定要建模的數據集中表示的事務、事件或概念,且每個實體都應該是連貫的,并且在邏輯上與其他實體分開;第二步是確定每個實體的關鍵屬性,每個實體都具有一種或多種特有的性質,即屬性,用于將其與其他實體類型區分開來;第三步確定實體之間的關系,關系通常由統一建模語言(UML)進行記錄。
第四步是將屬性完全映射到實體;第五步是根據需要分配鍵,決定用于平衡減少冗余需求與性能要求的規范化程度,將名為“鍵”的數字標識符分配給數據組,用于表示它們之間的關系,而無需重復數據;最后一步是完成并驗證數據模型,數據建模是一個迭代過程,應該隨著業務需求的變化而不斷重復并優化。
應用與實例
數據模型作為數據架構管理的核心模塊,主要功能包括數據模型管理、實體關系管理、邏輯轉物理模型、數據模型變更管控、模型可視化等。數據模型可以被設計為表示組織的當前數據系統,提供對數據如何流經組織的理解,也可以被開發為顯示新的所需數據系統。
對數據進行建模,能夠減少軟件和數據庫開發中的錯誤、改進應用和數據庫性能、簡化整個組織內的數據映射、增進開發人員和商業團體間的溝通等。基于以上特點,數據模型可以應用在醫療、金融、政務、交通和商業營銷等領域。
參考資料 >
數據資產管理實踐白皮書.中國信通院.2024-01-19
What is a Data Model?.Princeton University.2024-01-22
關系數據模型.清華大學出版社.2024-01-19
數據治理工具圖譜研究報告(2021版).中國電子技術標準化研究院.2024-01-22
實戰丨??基于政務大數據的普惠金融數據模型研究.搜狐網.2024-01-22
智慧全南.江西省發改委.2024-01-22
基于雙路信息時空圖卷積網絡的交通預測模型.計算機科學.2024-01-22
Edgar Frank Codd. IEEE Computer Society History Committee.2024-01-19
什么是關系數據庫?.IBM.2024-01-22
數據庫基礎.清華大學出版社.2024-01-19
數據庫應用基礎教程.清華大學出版社.2024-01-25
Types of Data Models and Their Uses.Dataversity.2024-01-22
一種數據模型開發平臺.Google.2024-01-25
什么是數據建模?.Microsoft.2024-01-25
IBM Documentation.IBM.2024-01-25
數據庫設計與治理.清華大學出版社.2024-01-25
面向對象程序設計模型中的并發行為.中國國家數字圖書館.2024-01-19
基于圖模型的Hub網絡的結構學習.西北工業大學期刊.2024-01-22
Types of OLAP Models for Databases & Data Warehouses Simplified 101.hevodata.2024-01-22
Data Warehousing - OLAP.tutorialspoint.2024-01-22
FusionOLAP:FusingtheProsofMOLAPandROLAPTogetherforIn. IEEE.2024-01-22
STORM: a Structural and Temporal Object-oRiented model for Multimedia databases.ResearchGate.2024-01-22
IBM Documentation.IBM.2024-01-22
What is NewSQL .Medium.2024-01-22
什么是數據建模?.IBM.2024-01-22