第1章 資料庫概述
• 1.1資料管理技術
• 1.2 大資料分析與管理技術
• 1.3 資料庫系統概述
• 1.4資料模型
• 1.5 概念模型的描述
1.1 資料管理技術
1.1.1 資料管理的概念
1. 資訊與資料
Ø 資訊是現實世界中對客觀事物的反映。這種反映主要體現為事物屬性的表現形式,是對事物存在方式或運動狀態的刻畫。
Ø 資訊的主要特徵
• 可傳遞性:資訊是可以傳遞的,但其傳遞的前提是必須有載體,且傳遞過程消耗能量。
• 可感知性:資訊可以被人類“感覺”得到的,但感覺的方式可能由於資訊源的不同而呈現多樣性。
• 可管理性:資訊是可以被管理的,我們可以通過一定的方法對資訊進行加工、儲存、傳播、再生和增值等。
Ø 資料是描述事務的符號記錄,是資訊的符號化表示,是資訊的載體。
• 資料是資訊表示的一種符號形式。這種符號形式可以是語言、圖表、數字、聲音等。但不管用什麼樣的符號形式,其目的只有一個,那就是客觀地反映資訊的內容。資訊的內容不會隨著資料表現形式的不同而改變。
Ø 資訊和資料的區分和聯絡:
• 資料是資訊的載體,可以有多種表現形式,其目的都是為了揭示資訊的內容;
• 資訊是資料的內涵,它僅由客觀事物的屬性來確定,而與資料形式無關。
但在實際應用中,如果不需要特別強調資訊和資料的差異,這兩個概念往往是互換的。例如,“資訊處理”和“資料處理”通常意指有相同內涵的兩個概念。
2. 資料處理和資料管理
資料處理
Ø 資料處理也稱資訊處理,它泛指用計算機對各種型別資料進行的處理操作。
Ø 這些操作包括對資料進行採集、轉換、分類、儲存、排序、加工、維護、統計和傳輸等系列活動。
Ø 資料處理的目的是從原始資料中提取有價值的、可作決策依據的資訊。
資料管理
Ø 資料管理指在複雜的資料處理過程中的一些基本操作,如資料儲存、分類、統計和檢索等。
Ø 資料管理是資料處理的任務之一,是資料處理的核心內容,資料庫系統的基本功能就是資料管理。
1.1.2 資料管理技術的發展過程
1.人工管理階段(1946.2-1955左右)
這一階段主要指是從計算機誕生到20世紀50年代中期的這一個時期。世界上第一臺計算機ENIAC於1946年2月14日在美國賓夕法尼亞大學誕生,在隨後的近十年中計算機的主要應用是科學計算,處理的是數字資料,資料量不大。
計算機沒有作業系統(實際上當時根本沒有作業系統的概念),也沒有資料的管理軟體,是以批處理方式對資料進行計算。
計算機硬體本身也沒有磁碟,所使用的“儲存裝置”是磁帶、卡片等。
人工處理階段資料管理技術的特點體現在:
Ø 資料不儲存。一是當時計算機所處理的資料量很小,不需要儲存;二是計算機本身就沒有有效的儲存裝置。
Ø 資料缺乏獨立性和有效的組織方式。這體現在資料依賴於應用程式,缺乏共享性。其原因在於,資料的邏輯結構跟程式是緊密聯絡在一起的,程式A處理的資料,對程式B而言可能就無法識別,更談不上處理。解決的辦法是修改資料的邏輯結構,或者修改應用程式。顯然,這種資料管理方法僅適用於小量資料,對大量資料則是低效的。
Ø 資料為程式所擁有,冗餘度高。由於資料缺乏獨立性,一組資料只能為一個程式所擁有,而不能同時為多個程式所共享,這就造成了一份資料的多個拷貝,各程式之間存在大量重複的資料,從而產生大量的冗餘資料。
2. 檔案系統階段(1955-1965)
這一階段是從50年代後期到60年代中期的這一段時間。這個時期,計算機除了用於科學計算以外,還大量用於資料的管理。
計算機已經有了作業系統,並且在作業系統之上已經開發了一種專門用於資料管理的軟體——檔案管理系統。在檔案管理系統中,資料的批處理方法發展到了檔案的批處理方式,且還可以實現了一定程度的聯機實時處理。
計算機硬體本身已經出現了磁碟、磁鼓等外部儲存裝置計算機硬體經出現了磁碟、磁鼓等外部儲存裝置。
檔案系統階段特點
Ø 計算機的應用從單純的科學計算逐步轉移到資料處理,特別是在該階段的後期,資料處理已經成為計算機應用的主要目的。主要限於對檔案的插入、刪除、修改和查詢等基本操作。
Ø 資料按照一定的邏輯結構組成檔案,並通過檔案實現資料的外部儲存。即資料是以檔案的方式儲存在外部儲存裝置中,如磁碟、磁鼓等。
Ø 資料具有一定的獨立性。由於資料是以檔案的方式儲存,檔案的邏輯結構與儲存結構可以自由地進行轉換,所以多個程式可以通過檔案系統對同一資料進行訪問,實現了一定程度的資料共享。
Ø 檔案形式具有多樣化,除了資料檔案以外還產生了索引檔案、連結檔案、順序檔案、直接存取檔案和倒排檔案等。
Ø 基本上以記錄為單位實現資料的存取。
缺點:
Ø 資料和程式並不相互獨立,資料冗餘度仍然比較大。一個程式基本上是對應著一個或一組檔案,即資料還是面向應用的,不同的程式還需建立自己的資料檔案,能真正實現資料共享的情況並不多。原因在於,檔案中資料的邏輯結構與其對應的程式密切相關,而且沒有統一標準的邏輯結構。
Ø 難以保證資料一致性。由於檔案之間沒有關聯機制,所以當對一個資料進行更改時難以保證對該資料的其他副本進行同樣的更改。
Ø 檔案的資料表達能力十分有限。這主要體現在,檔案中的資料結構比較單一,也比較簡單,還難以表示複雜的資料結構。
3. 資料庫系統階段(1965-至今)
資料庫系統階段始於20世紀60中後期,一直到現在。這時計算機除了用於科學計算以外,更多時候是用於資料管理,而且資料的量已經很大,管理功能也越來越強大。
計算機硬體本身也發生了深刻的變化,出現了大容量磁碟和高主頻的CPU等。
在軟體上,資料的管理軟體已經由原來的檔案系統上升到了資料庫管理系統(DBMS)。
資料管理的主要特點是資料集中存放在一個地方,這個地方就是所謂的資料庫。應用程式要實現對資料庫中的資料進行訪問,則必須通過資料庫管理系統來完成。
資料庫技術是基於資料庫的資料管理技術。其特點:
• 資料組織的結構化。從總體上看,檔案系統中的資料是“渙散”的,而資料庫中的資料是結構化的,具有統一的邏輯結構。資料的結構化是資料庫的主要特徵之一,是資料庫和檔案系統的最大和根本的區別。
• 減少資料冗餘度,增強資料共享性。從整個系統上看,資料不再面向某一個特定的應用程式,而是面向由所有應用程式組成的系統。所以一個資料可以為多個應用程式所共享,一個應用程式也可以同時訪問多個資料。
• 保證資料的一致性。通過建立檔案間的關聯,使得在對某一個資料進行更新時,與之相關的資料也得到相應更改。
• 具有較高的資料獨立性。在資料庫系統中,資料獨立性包含兩個方面,一個是資料的物理獨立性,另一個是資料的邏輯獨立性。
資料的物理獨立性是指在資料的物理儲存結構發生改變時,資料的邏輯結構可以不變的特性;
資料的邏輯獨立性是指在總體邏輯結構改變時,應用程式可以不變的一種特性。
資料庫之所以具有較好的資料獨立性,主要是因為資料庫提供了兩個映象功能:資料的儲存結構和邏輯結構之間的映象或轉換功能以及資料的總體邏輯結構和區域性邏輯結構之間的映象功能。前者保證了資料的物理獨立性,後者則保證了資料的邏輯獨立性。
• 以資料項為單位進行資料存取。相對檔案系統而言,資料庫可以實現更小粒度的資料處理,滿足更多的應用需求。
• 具有統一的資料控制功能。這些功能包括資料的安全性控制、完整性控制、併發控制和一致性控制等功能。
資料管理技術發展的這三個階段是一個漸進的過程,它們的區別主要體現在應用程式和資料的關係上:
Ø 在人工管理階段,應用程式和資料是“混合”在一起;
Ø 在檔案系統階段,應用程式則通過檔案系統完成對資料的訪問,實現了資料和程式一定程度的分離;
Ø 在資料庫系統階段,應用程式是通過資料庫管理系統(DBMS)對資料進行訪問,實現了資料和程式的高度分離。
三個階段之間的關係表示:
1.2 大資料分析與管理技術
1.2.1 關於大資料
2008年,英國著名學術雜誌《Nature》上推出了大資料的專刊。
美國一些知名資料管理領域的專家從專業角度出發聯合釋出了一份名為《大資料的機遇與挑戰》(Challenges and opportunities with big data)的白皮書,從學術角度介紹了大資料的產生、處理流程和所面臨的若干挑戰。
在工業界,全球知名的諮詢公司麥肯錫公司(McKinsey)2011年也發表了一份名為《大資料:下一個創新、競爭和生產力的前沿》(Big Data: the next frontier for innovation, competition and productivity)的詳盡報告,對大資料帶來的巨大影響、關鍵技術和應用領域進行了詳盡闡述和分析。
美國奧巴馬政府更是在2012年釋出了“大資料研究和發展倡議”(Big data research and development initiative),斥資2億多美元計劃在科研、環境、生物醫學等領域利用大資料分析管理技術取得新的突破。我國政府也於2015年釋出了《中共中央關於制定國民經濟和社會發展第十三個五年規劃的建議》提出實施國家大資料戰略,超前佈局下一代網際網路。
目前“大資料”(Big data)已成為一個炙手可熱的名詞。從表面上看,其表示資料規模的龐大,但僅僅從資料規模上無法區分“大資料”這一概念和以往的“海量資料”(Massive data)和“超大規模資料”(Very large data)等概念的區別。然而,至今仍沒有一個對“大資料”公認的準確定義。
根據維基百科的解釋,大資料指的是資料規模巨大到無法通過目前主流的軟體工具在合理時間內完成處理的資料集。由此可見,隨著時間的推移,計算機的計算能力、儲存能力會不斷提升,因此大資料的含義也會不斷演化。
今天所說的大資料在未來可能就不算“大”了,但那時也一定仍會存在更大的資料是當時的技術處理不了的,因而仍會被稱為大資料。可見,如何駕馭大資料將會成為人們長期需要面對的資料常態。
大資料的“4V”特性:
(1)體量大(Volume)。大資料體現在資料量極為龐大,其計量單位可以是TB級、PB級甚至更大的計量單位。
(2)速度快(Velocity)。大資料呈現出高速增長的態勢,而且產生速度仍在不斷加快。
(3)多樣化(Variety)。大資料包含多種多樣的資料型別,既可以是儲存在二維表中的結構化資料,也可以是文字、視訊、影象、語音、圖(Graph)、檔案等非結構化資料。
(4)價值高(Value)。大資料中蘊藏著巨大價值,但價值密度低。通過對大資料進行合理的分析,能夠從中挖掘出很多有價值的資訊,這些資訊將有助於提高社會生產效率,提升人們生活質量,或者創造更大商業價值。
1.2.2 大資料儲存技術
隨著大資料時代的到來,傳統關係型資料庫的發展面對大資料時代的資料管理需求越來越力不從心,主要體現在:
• 無法保證對大資料的查詢效率:在大資料時代,短短的1分鐘時間內新浪微博可以產生2萬條微博,蘋果可以產生4.7萬次應用下載記錄,淘寶則可以賣出6萬件商品,百度可以產生90萬次搜尋記錄。可見對於上述公司而言很快就會積累超過10億的資料量。然而,由於關係模型嚴謹得過於死板,例如複雜的事務處理機制就成為了阻礙其效能提升的桎梏,使得傳統關係型資料庫在一張包含10億條記錄的資料表之上進行SQL查詢時效率極低。
• 無法應對繁多的資料型別:關係型資料庫儲存的是清潔規整的結構化資料,然而在大資料時代,資料種類繁多,包括文字、圖片、音訊和視訊在內的非結構化資料所佔比重更是超過了90%,這無疑是關係型資料庫所不能應對的。
• 橫向可擴充套件能力不足:傳統關係型資料庫由於自身設計機理的原因,通常很難實現價效比較高的“橫向擴充套件”,即基於普通廉價的伺服器擴充現有分散式計算系統,使系統的處理能力和儲存能力得到提升。而“橫向擴充套件”是大資料時代計算和儲存的重要需求。
• 很難滿足資料高併發訪問需求:大資料時代諸如購物記錄、搜尋記錄、朋友圈訊息等資訊都需要實時更新,這就會導致高併發的資料訪問,可能產生每秒高達上萬次的讀寫請求。在這種情況下,傳統關係型資料庫引以為傲的事務處理機制和包括語法分析和效能優化在內的查詢優化機制卻阻礙了其在併發效能方面的表現。
在以上大資料時代的資料管理需求的推動下,各種新型的NoSQL資料庫不斷湧現,一方面彌補了關係型資料庫存在的各種缺陷,另一方面也撼動了關係型資料庫的傳統壟斷地位。
NoSQL(Not only SQL)不是指某個具體的資料庫,是對非關係型資料庫的統稱。
NoSQL資料庫採用類似鍵/值、列族、文件和圖(Graph)等非關係資料模型,通常沒有固定的表結構,沒有複雜的查詢優化機制,也沒有嚴格的事務ACID特性的約束,因此和關係型資料庫相比,NoSQL資料庫具有更優秀的查詢效率,更靈活的橫向可擴充套件性和更高併發處理性,並能夠儲存和處理非結構化資料。
根據所採用的資料模型的不同,NoSQL資料庫具體又可以分為以下四類:
• 鍵值(Key-Value)儲存資料庫。這一類資料庫主要使用雜湊表作為資料索引,雜湊表中有一個特定的鍵和一個指標指向特定的資料。這種資料庫的優勢是簡單、易部署、查詢速度快;缺點是資料無結構,通常只被當作字串或者二進位制資料。Tokyo Cabinet/Tyrant、Redi、Voldemort、Oracle BDB等都屬於這一類資料庫。
• 列儲存資料庫。這類資料庫通常用來應對分散式儲存海量資料的儲存需求。在列儲存資料庫中,資料以列簇式儲存,將同一列資料存在一起。這種資料庫的優點是查詢速度快,可擴充套件性強,更容易進行分散式擴充套件;缺點是功能相對侷限。Cassandra、HBase、Riak等屬於這一類資料庫。
• 文件型資料庫。這類資料庫與鍵值儲存資料庫類似,資料按鍵值(Key-Value)存對的形式進行儲存,但與鍵值儲存資料庫不同的是,Value為結構化資料。這類資料庫適用於Web應用。文件型資料庫的優點是對資料結構要求不嚴格,表結構可變,不需要像關係型資料庫一樣需要預先定義表結構;缺點是查詢效能不高,缺乏統一的查詢語法。uCouchDB、MongoDB等屬於這一類資料庫。
• 圖(Graph)資料庫。這類資料庫專注於構建關係圖譜,儲存圖結構資料,適用於社交網路、推薦系統等。圖資料庫的優點是能夠直接利用圖結構相關演算法,如最短路徑定址、N度關係查詢等;缺點是很多時候需要對整個圖做計算才能得出需要的資訊。Neo4J、InfoGrid、Infinite Graph等屬於這一類資料庫。
NoSQL資料庫不受關係模型約束,具有較好的擴充套件性,很好地彌補了傳統關係型資料庫的缺陷。但NoSQL資料庫並沒有一個統一的架構,每一類NoSQL資料庫都有各自適用的場景。同時,NoSQL資料庫不能嚴格保證事務的ACID特性,導致資料的一致性和正確性沒法保證。而且NoSQL資料庫缺乏完備系統的查詢優化機制,在複雜查詢方面的效率不如關係型資料庫。為此,業界又提出了NewSQL資料庫。
NewSQL 資料庫是對各種新的可擴充套件、高效能資料庫的簡稱,這類資料庫不僅具有NoSQL對海量資料的儲存管理能力,還保持了傳統資料庫支援事務ACID和SQL等特性。
不同NewSQL資料庫的內部架構差異較大,但是有兩個共同的特點:都支援關係資料模型;都是用SQL作為其主要的訪問介面。
目前市面上已有的NewSQL資料庫有Spanner、PostgreSQL、SAP HANA、VoltDB、MemSQL等。
Ø Spanner是谷歌公司研發的、可擴充套件的、多版本、全球分散式、同步複製資料庫,是谷歌公司第一個可以全球擴充套件並支援資料外部一致性的資料庫。
Ø PostgreSQL是很受歡迎的開源資料庫,穩定性強,有大量的幾何、字典、陣列等資料型別,在地理資訊系統領域處於優勢地位。
Ø SAP HANA基於記憶體計算技術,是面向企業分析性應用的產品,主要包括記憶體計算引擎和HANA建模工具兩部分。
Ø VoltDB是基於記憶體的關係型資料庫,其採用NewSQL體系架構,既追求與NoSQL體系架構系統具有相匹配的系統可展性,又維護了傳統關係型資料庫系統的事務特性和SQL語言訪問特性,在執行高速併發事務時比傳統的關係型資料庫系統快45倍。
Ø MemSQL有符合ACID特性的事務處理功能、SQL相容性以及高度優化的SQL儲存引擎,提供了與MySQL相同的程式設計介面,但速度比MySQL快30倍。
Ø 還有一些在雲端提供存取服務的NewSQL資料庫(亦可稱為雲資料庫),例如Amazon RDS和Microsoft SQL Azure。
1.2.3 大資料處理模式
大資料具有資料體量大、產生速度快的特點,因而傳統的單機序列處理模式往往難以完成對大資料的高效處理,必須藉助並行分散式處理方法。根據大資料應用型別的不同,大資料處理模式分為批處理(Batch processing)和流處理(Stream processing)兩種。下面以Apache的Hadoop和Storm為例分別介紹批處理和流處理的典型處理模式。
1. 分散式批處理模式的代表——Hadoop
批處理則是對資料先儲存後統一處理。Hadoop是一個由Apache基金會用Java語言開發的開源分散式批處理架構,其中實現了MapReduce批處理程式設計模型。Google公司在2004年提出的MapReduce程式設計模式是最具代表性的分散式資料批處理模式。
MapReduce模型包含三種角色:Master程式、Map程式和Reduce程式,其中Master程式負責任務的劃分與排程,Map程式用於執行Map任務,Reduce程式用於執行Reduce任務。該模型的主要思想是Master程式把大規模的資料劃分成多個較小的部分,分別對映到多個Map程式進行並行處理得到中間結果,之後由Reduce程式對這些中間結果進行規約、整理,進而得到最終結果,如圖1.4所示。
一個MapReduce作業(MapReduce Job)的執行流程如下:
(1)首先從使用者提交的程式建立出Master程式,Master程式啟動後劃分任務並根據輸入檔案所在位置和叢集資訊選擇機器建立出Map程式或Reduce程式;
(2)Master程式將劃分好的任務分配給Map程式和Reduce程式執行,任務劃分和任務分配可以並行執行;
(3)Map程式執行Map任務,即讀取相應的輸入檔案,根據指定的輸入格式不斷地讀取<key, value>對,並對每一個<key, value>對執行使用者自定義的Map函式;
(4)Map程式不斷往本地記憶體緩衝區輸出中間<key, value>對結果,等到緩衝區超過一定大小時寫入到本地磁碟中,Map程式將中間結果組織成檔案,便於後續Reduce程式獲取;
(5)Map任務執行完成後向Master程式彙報,Master程式進一步將該訊息通知Reduce程式。Reduce程式向Map程式請求傳輸生成的中間結果資料,當Reduce程式獲取完所有的中間結果後,需要進行排序操作;
(6)Reduce程式執行Reduce任務,即對中間結果的每一個相同的key及value集合,執行使用者自定義的Reduce函式,Reduce函式的輸出結果被寫入到最終的輸出檔案。
除了使用MapReduce批處理程式設計框架,Hadoop的核心內容還包括HDFS(Hadoop Distributed File System,Hadoop分散式檔案系統)。
HDFS是一個高度容錯性的系統,適合部署在廉價的機器上。HDFS能提供高吞吐量的資料訪問,適合處理大規模資料集的應用程式。
Hadoop的優點包含以下幾個方面:
(1)方便部署。Hadoop可以方便部署在由一般商用機器構成的大型叢集或者雲端計算服務之上。
(2)容錯健壯。即使叢集中的計算機硬體頻繁出現失效,Hadoop也能夠處理大多數此類故障。
(3)容易擴充套件。Hadoop通過增加叢集節點,可以線性地擴充套件以處理更大的資料集。
(4)使用簡單。Hadoop允許使用者快速編寫出高效的並行程式碼。
(5)免費、開源。Hadoop是一款開源批處理框架,可以免費使用。
Hadoop的典型應用包括網路搜尋、日誌處理、推薦系統、資料分析、視訊影象分析和資料整合等。
2. 分散式流處理模式的代表——Storm
和先儲存再處理的批處理模式不同,流處理將源源不斷產生的資料視為資料流,每當新的資料到達系統時就立刻對資料進行處理並返回結果。可見,流處理適合包括網頁點選數統計、股票交易資料分析和感測器網路事件檢測等實時分析應用。Apache Storm是一個免費、開源的分散式實時流處理系統。Storm在流處理中的地位相當於Hadoop對於批處理的重要地位。
Storm基於拓撲(Topology)實現對資料流的分散式實時處理。拓撲是一個有向無環圖(Directed Acyclic Graph),一個典型的Storm的拓撲結構如圖1.5所示。
Topology中資料以元組(Tuple)的形式進行轉發和處理。和Hadoop中的MapReduce作業不同,Storm的拓撲一經啟動將永久執行,不斷處理實時到達的資料元組。
Storm拓撲由Spout和Bolt兩類元件構成。Spout作為資料產生者,從一個外部源(例如Kafka)讀取資料並並向Storm拓撲中噴射資料元組。Bolt作為資料消費者,對所接收的資料元組進行處理和轉發。
一個複雜的Storm拓撲可由多個Spout和多個Bolt組成,且可以為每個Spout或Bolt設定其任務(Task)並行度,由多個任務並行完成其處理邏輯。Storm提供多種元件間的資料分發策略,例如隨機分組(Shuffle grouping)、按欄位分組(Field grouping)、全域性分組(Global grouping)和廣播傳送(All grouping),用以完成Storm拓撲中上游元件的各個任務向下遊元件的各個任務的資料分發.
Storm的優點包含以下幾個方面:
(1)易整合:Storm可以方便與資料庫系統進行整合。
(2)易使用:Storm提供豐富的API,方便使用者的使用。
(3)易擴充套件:Storm可以方便部署和執行在大規模分散式叢集中。
(4)易糾錯:Storm可以自行重啟故障節點,並完成對故障節點任務的重新分配。
(5)可靠的訊息處理:Storm保證每個訊息都能被系統完整處理。
(6)免費、開源:Storm是一款開源流處理框架,可以免費使用。
1.2.4 大資料處理的基本流程
1. 資料整合
大資料的一個重要特性就是多樣化(Variety),這意味著產生大資料的來源廣泛、型別龐雜、並經常存在資料冗餘和錯漏現象,給資料處理帶來了巨大挑戰。要想處理大資料,首要任務就是對資料來源抽取的資料進行合理的整合。
資料整合是指通過訪問、解析、規範化、標準化、整合、清洗、抽取、匹配、分類、修飾和資料交付等功能把不同來源、格式、特點、性質的資料在邏輯上或物理上有機地集中,從而為後期資料處理提供保障。資料整合的目的是保證資料的質量和可信性。如果資料整合工作沒有做好,會導致整個大資料專案的延期甚至失敗。因此,在大資料給人們帶來價值之前,必須對其進行合理的整合。
2. 資料分析
資料分析是整個大資料處理流程中的核心環節,因為大資料所蘊含的價值需要通過資料分析得以實現。傳統的資料分析技術包括資料探勘、機器學習、統計分析等在用於處理大資料時可能需要進行必要的調整,因為這些技術在處理大資料時面臨一些新的挑戰,體現在以下幾個方面:
大資料價值大(Value)的特性雖然意味著大資料蘊含了巨大價值,但是大資料同時也存在價值密度低的特點,體現在大資料中存在大量的冗餘資料、噪音資料、遺漏資料和錯誤資料。因此,在進行資料分析之前,需要對大資料進行資料清洗、整合等整合工作。然而,對如此大規模的資料進行清洗和整合無疑會對硬體環境和演算法效能提出新的要求。
3. 資料解釋
雖然資料分析是大資料處理的核心,但是使用者更關注對分析結果的展示。即使分析過程高效、分析結果正確,如果沒有通過容易理解的方式給使用者展示大資料的分析結果將會大大降低分析結果的實際價值,極端情況下甚至會誤導使用者。
傳統的資料解釋方法是在電腦終端上列印顯示分析結果或以文字的形式向使用者呈現分析結果。然而,大資料的分析結果往往規模大而且結果之間的關係錯綜複雜,因而傳統的資料解釋方法不適用於解釋大資料的分析結果。
目前,業界推出了很多資料視覺化技術,用圖表等形象的方式向使用者展現大資料的分析結果。常見的資料視覺化技術包括標籤雲(Tag cloud)、歷史流(History flow)和空間資訊流(Spatial information flow)等。
1.3.1 資料庫系統
資料庫系統是以資料庫技術為核心的計算機應用系統,其主要目的是處理生產和實踐過程中產生的資料和資訊,實現生產過程管理的自動化和資訊化,提高資訊管理效率。
資料庫系統一般包含四個部分
1.資料庫
定義:是資料庫系統存放結構化資料的地方,是長期儲存的、有組織的、可共享的資料的集合。
Ø 資料最終是以檔案的形式儲存在磁碟上,只有資料庫管理系統才能對這些檔案進行存取操作。
Ø 每一個資料庫都至少有一個這樣檔案,稱為資料檔案。
Ø SQL Server資料庫的資料檔案以.mdf或.ndf為副檔名。
2.資料庫管理系統(DBMS)
定義: DBMS是資料庫的管理軟體,是應用程式和資料庫之間橋樑,即應用程式必須通過DBMS才能存取資料庫中的資料。
Ø DBMS對資料的存取操作最終體現為對資料檔案的更新和修改,但應用程式不能直接執行這種更新和修改操作。
Ø SQL Server 2014就是SQL Server資料庫系統的一種DBMS。
3. 應用程式
定義: 是指通過訪問資料庫來完成使用者操作的程式。
Ø 它介於系統使用者和DBMS之間,使用者通過操作應用程式來獲取他們的需求,而應用程式則通過DBMS訪問資料庫來實現使用者提出的需求。
Ø 應用程式可以用Java、JSP、.NET等技術開發。
4.系統使用者
定義:是大致分為兩類——系統使用者和系統管理員。
Ø 系統使用者是指應用程式的使用者,他們是整個資料庫系統的最終使用者;
Ø 系統管理員可以分為不同級別型別的管理人員,他們主要負責資料庫的管理和維護工作。
資料庫系統各部分之間的關係:
1.3.2 資料庫系統的模式結構
現在資料庫系統軟體產品非常多,它們可能基於不同的作業系統,支援不同的資料庫語言,採用不同的資料結構,等等。但是,它們的體系結構卻基本相同,那就是三級模式結構。
三級模式結構是由美國國家標準學會(ANSI, American National Standards Institute)所屬的標準計劃和要求委員會(SPARC, Standards Planning And Requirements Committee)於1975年提出的,稱為SPARC分級結構。
三級模式結構將資料庫系統抽象為三個層次,分別為內模式、概念模式和外模式。
1.內模式
定義:又稱儲存模式,它是資料在資料庫系統中最底層的表示,描述了資料的物理結構和儲存方式,即定義了儲存記錄的型別、存貯域的表示、儲存記錄的物理順序、索引等。
一個資料庫僅有一個內模式。
2.概念模式
定義:又稱邏輯模式,簡稱模式,它用於對整個資料庫中資料的邏輯結構和特徵、實體及其性質與聯絡進行描述。但這種描述並不涉及具體的物理儲存方式和硬體環境,也不涉及任何特定的應用程式及其開發工具。
一個資料庫也只有一個概念模式。
3.外模式
定義:外模式是概念模式的一個子集,這個子集是為某一個特定使用者所使用的。從這個角度看,外模式是面向使用者的,所以外模式又稱子模式或使用者模式。本質上,外模式是應用程式所使用的區域性資料的邏輯結構和特徵的描述,是使用該應用程式的使用者所看到的資料檢視。
總結
以上三個模式分別從三個不同層次的級別對資料庫進行抽象,即分別抽象為使用者級、概念級、物理級資料庫。
Ø 使用者級資料庫對應於外模式,是從使用者的角度對資料庫進行抽象,是使用者看到和使用的使用者檢視的集合。
Ø 概念級資料庫對應於概念模式,介於使用者級和物理級之間,是程式開發人員看到和使用的資料庫。。
Ø 物理級資料庫對應於內模式,是從資料的物理儲存結構的角度對資料庫進行抽象。
總之,外模式是概念模式的子集,概念模式是內模式的邏輯表示,而內模式則是概念模式的物理表示。
三級模式結構將資料庫系統抽象為三個層次,分別為內模式、概念模式和外模式。各模式的關係如圖1.7所示。
1.3.3 資料庫管理系統(DBMS)
DBMS的功能主要包括以下幾個方面:
1.資料庫定義功能
DBMS一般都提供資料定義語言(DDL, Data Definition Language),可以分別用於定義外模式、概念模式和內模式。用DDL編寫的外模式、概念模式和內模式分別稱為源外模式、源概念模式和源內模式。它們經過模式翻譯程式翻譯後將形成相應的內部表示,分別稱為目標外模式、目標概念模式和目標內模式。
這些目標模式被儲存在資料字典中(又稱系統目錄),它們是用於刻畫資料庫的框架結構,是對資料庫(而不是資料)的一種描述,也是DBMS存取和管理資料的基本依據。
2.資料操縱功能
DBMS還提供資料操作語言(DML, Data Manipulation Language)用於實現對資料庫的查詢、新增、修改和刪除等基本操作。
DML分為宿主型的和自主型的(或自含型的)的DML。
Ø 宿主型的DML用於嵌入到其他語言(稱為主語言)當中,例如把它嵌入到PASCAL、FORTRAN,C等高階語言中。這類DML語言本身不能獨立使用,這也就是它之所以稱為宿主型DML的原因。
Ø 自主型的(或自含型)DML則是互動式命令語言,其語法簡單,每條語句都可以獨立執行。
Ø 如今,DBMS一般既提供宿主型的DML也提供自主型的DML,或者提供集宿主型和自主型於一體的DML,其典型的代表就是著名的SQL(Structured Query Language)語言。SQL語句既可以嵌入到其他的高階語言,也可以單獨互動執行。
使用者或者應用程式對資料庫的操作實際上是通過DBMS控制並執行DML語句來實現的。
自主型的DML是互動式命令語言,DBMS通常以解釋執行的方式執行它們。
對於宿主型的DML,DBMS提供兩種執行方法:
Ø 預編譯方法。這種方法的原理是,由DBMS提供的預編譯程式對包含DML的主語言進行掃描,識別出DML,然後把這些DML轉換成合法的主語言程式碼,以便主語言的編譯程式能夠接受和執行它們。
Ø 修改、擴充主語言編譯程式的方法。這種方法又稱為增強編譯方法,增強後的編譯程式既可以編譯主語言程式碼,也可以編譯和執行嵌入的DML語句。
3.資料庫執行管理功能
資料庫執行管理是DBMS提供的重要功能之一,它是資料系統能夠正確、有效執行的基本保證。這種管理功能主要包括存取控制、安全性檢測、併發控制、完整性約束條件的檢查和執行、資料庫內部的維護和管理等。
4.資料庫的建立和維護功能
這包括資料庫初試資料的裝載和轉換、資料庫的轉儲和恢復、資料庫的重組織功能和效能監視、分析功能等。這些功能主要是由DBMS提供的實用程式來完成。
1.4 資料模型
資料模型三種型別
Ø 概念模型又稱資訊模型,是從使用者觀方面來對資料和資訊進行建模的結果,主要用於資料庫的設計。
Ø 邏輯模型是對客觀事物及其聯絡的資料描述,包括網狀模型、層次模型、關係模型和麵向物件模型等,它是從計算機系統觀方面來進行建模,主要用於DBMS的實現。
Ø 物理模型是對資料最底層的抽象,用於描述資料在計算機系統內部的表示方式和存取方法,其實現由DBMS完成。
資料模型的兩大主要功能是用於描述資料及其關聯。它包含三個基本要素,即資料結構、資料操作和資料的約束條件。
1.4.1資料模型的基本要素
1.資料結構
定義:用於描述資料的靜態特性,它是所研究物件型別的集合。
分類:
Ø 資料描述物件
• 定義:用於描述資料的性質、內容和型別等相關的物件
• 指出物件所包含的項,並對項進行命名,指出項的資料型別和取值範圍等。
Ø 資料關係描述物件
• 定義:是用於描述資料間關係資訊的物件
• 指明各種不同物件型別之間的關係及關係的性質,並對這些關係進行命名。
2.資料操作
定義:用於對資料動態特性的描述,它是對資料庫中各種物件型別的例項允許執行的所有操作及相關操作規則的集合。
分類:
Ø 查詢
Ø 更新
• 更新操作又包括插入、刪除和修改。
在資料模型中,要明確定義操作的各項屬性,如操作符、操作規則以及實現操作的語言等。
3.資料的約束條件
資料的約束條件是一組完整性規則的集合。完整性規則是指既定的資料模型中資料及其關係所具有的制約性規則和依存性規則。這些規則是通過限定符合資料模型的資料庫狀態及其變化的方法來保證資料的正確性、有效性和相容性。
4.三個要素的作用
資料結構是基礎,它確定著資料模型的性質。
資料操作是關鍵,它確定著資料模型的動態特性。
約束條件主要起輔助作用。
1.4.2 四種主要的邏輯模型
1.層次模型
它的資料結構是根樹
特點:
Ø有且僅有一個節點沒有父節點,這個節點就是根樹的根節點。
Ø除了根節點外,其他節點有且僅有一個父節點,但可能由0個或者多個子節點。
在層次模型中,具有相同父節點的子節點稱為兄弟節點,沒有子節點的節點稱為葉節點。
在根樹的層次結構中,每個節點代表一個實體型。但由於層次模型中的實體型是用記錄型來表示,所以根樹中的每個節點實際上是代表著一個記錄型。由於每個記錄型節點有且僅有一個父節點(根節點除外),所以只要每個節點指出它的父節點,就可以表示出層次模型的資料結構。如果要訪問某一個記錄型節點,則可以運用相關的根樹遍歷方法從根節點開始查詢該節點,然後對其訪問。
【例子】 一個學校包含多個學院,一個學院又包含多個系和研究所等。這樣,學校、學院、系和研究所等實體非常自然地構成了現實世界中的層次關係。層次模型正是為了滿足描述這種層次關係的需要而產生的。所以,它的表達方式自然、直觀,但是其缺點也是明顯。
層次模型缺點:
• 處理效率低
Ø 這是因為層次模型的資料結構是一種根樹結構,對任何節點的訪問都必須從根節點開始。這使得對底層節點的訪問效率變低,並且難以進行反向查詢。
• 不易進行更新操作
Ø 更新操作包括插入、修改和刪除等操作。對某一個樹節點進行這種更新操作時,都有可能導致整棵根樹大面積的變動。對大資料集來說,這可是一個沉重。
• 安全性不好
Ø 這主要體現在,當刪除一個節點時,則它的子節點和孫子節點都將被刪除。所以,必須慎用刪除操作。
• 資料獨立性較差
Ø 當用層次命令運算元據的時候,它要求使用者瞭解資料的物理結構,並需要顯式地說明存取途徑。
2.網狀模型
網狀模型的資料結構是網狀結構。網狀模型反映著現實世界中實體間更為複雜的聯絡。由以下特點可以看出,節點間沒有明確的從屬關係,一個節點可以與其它多個節點有聯絡。
特點
Ø 允許存在一個以上的節點沒有父節點。
Ø 節點可以有多餘一個的父節點。
缺點:
Ø 由於在使用網狀模型時,使用者必須熟悉資料的邏輯結構,所以結構的複雜性增加了使用者查詢和定位的難度。
Ø 不支援對於層次結構的表達等。
Ø 與層次模型類似,網狀結構中的每個節點代表一個實體型,而這種實體型是用記錄型來表示。與層次結構不同的是:在層次結構中有且僅有一個根節點,而在網狀結構中則允許同時存在多個“根節點”;在層次結構中每個節點有且僅有一個父節點(根節點除外),而在網狀結構中則允許一個節點同時有多個“父節點”。
Ø 這種結構上的差異,也導致了節點對應的記錄型結構的變化。網狀模型中節點間聯絡的實現必須由節點同時指出其父節點和子節點的方法來完成。而在層次模型中,每個節點只需指定其父節點即可(根節點除外)。也正是由於這種差異的存在,使得網狀模型在性質和功能上發生了重要的改變。這主要體現在:網狀模型比層次模型具有更大的靈活性和更強的資料建模能力。
【例子】 圖1.8表示了學生A、B和課程C、D、E之間的一種選修聯絡的網狀結構圖。
對於小資料量而言,層次模型和網狀模型的缺點可能不太明顯,但是當作用於大資料量時,其缺點就顯得非常突出。所以,這兩種模型不適合用於當今以處理海量資料為特徵的資料處理任務中。目前,它們基本上退出了市場,取而代之的是關係模型。
3.關係模型
關係模型是當今最為流行的一種資料模型。在關係模型中,實體間的聯絡是通過二維關係(簡稱關係)來定義,其資料結構就是二維關係。每個一種二維關係都可以用一張二維表來表示,表達直觀、明瞭。所以,很多時候是把二維表和關係直接等同起來,簡稱為(二維)關係表。關係模型就是若干張關係表的集合。
關係模型的術語
Ø 關係:一張二維表。
Ø 記錄(或元組):關係表中的一行。
Ø 欄位(或屬性):關係表中的一列。
Ø 域:即欄位的值域,也就是欄位的取值範圍。
Ø 資料項(或分量):某一個記錄中的一個欄位值。
Ø 主關鍵欄位(或主碼):簡稱主鍵,是關係表中一個或者多個欄位的集合,這些記錄的值能夠唯一標識每一個記錄。
Ø 關係模式:是對關係的一種抽象的描述,其描述格式為“關係名(欄位1,欄位2,…,欄位n)”,其中“欄位1”帶下劃線,表示該欄位是主關鍵欄位。
關係模型的特點:
• 具有嚴密的數學基礎。關係代數、關係演算等都可以用於對關係模型進行定性或者定量的分析,探討關係的分開和合並及其有關性質等。
• 概念單一化、表達直觀,但又具有較強的資料表達和建模能力。一般來說,一個關係只表達一個主題,如果有多個主題在一起,則需要將它們分開,用多個關係來表示,這就是概念的單一化。
• 關係都已經規範化。即關係要滿足一定的規範條件,這使得關係模型表現出特有的一些性質。
Ø 例如,在一個關係中資料項是最基本的資料單位,它不能再進行分解;同一個欄位的欄位值具有相同的資料型別;各欄位的順序是任意,記錄的順序也是任意的,等等。
• 在關係模型中,對資料的操作是集合操作,即操作的物件是記錄的集合,操作所產生的結果也是記錄的集合。這種操作不具有明顯的方向性,不管如何操作,其難度都一樣。而在層次模型和網狀模型中,對資料的操作帶有明顯的方向性,在正反兩個方向上操作的難度完全不一樣。
關係模型的缺點
Ø 對複雜問題的建模能力差。在對複雜問題建模時一般都會呈現出錯綜複雜的關係,而關係模型僅限於用二維關係來表示這些複雜關係,無法用遞迴和巢狀的方式來描述(因為它不允許巢狀記錄和巢狀關係的存在)。所以,在許多時候關係模型顯得力不從心。
Ø 物件語義的表達能力比較差。現實世界中,物件之間的關係往往不僅限於量的關係,而且還可能體現語義之間的聯絡,蘊涵著特定的內涵。但關係模型為了規範化這些關係,可能會強行拆開這種語義聯絡,造成不自然的分解,從而使得在查詢等操作時出現語義不合理的結果。
Ø 可擴充性差。關係模式只支援記錄的集合這一種資料結構,並且資料項不可再分,無法形成巢狀記錄和巢狀關係,所以它無法擴充成層次模型或網狀模型。且它不支援抽象資料型別,不能對多種型別資料物件進行管理。
4.物件導向模型
物件導向方法(Object-Oriented Paradigm,簡稱OO)基本出發點就是按照人類認識世界的方法和思維方式來分析和解決問題。
物件導向模型是由物件導向方法進行建模和表示而形成的資料模型。
物件導向模型的相關理論和方法還不夠成熟,主要是處於理論研究和實驗階段。
1.5.1 概念模型
從資料模型的建模方法來看,一般是先將現實世界中的問題建模為資訊世界中的概念模型,然後將資訊世界中的概念模型轉化為機器世界中的邏輯模型。
當確認概念模型已經能夠充分表達原問題(現實世界中)的時候,再將這種概念模型轉化為資料庫系統中某一個既定DBMS支援的資料模型,形成機器世界中的邏輯模型。
從現實世界到機器世界的轉換過程可以用圖1.9來表示。
1.5.2 實體及其聯絡
1.概念
實體是客觀存在的並可以相互區分的事物。
實體的屬性是指實體所具有的特性。
Ø eg:學生是一個實體,如姓名、性別、成績等是實體的屬性。
碼又稱關鍵字,它是一個或者多個屬性的集合。
Ø eg:學號是學生實體的碼。
屬性的域是指一個屬性的取值範圍。
Ø eg:成績是學生實體的域。
實體型是指用實體名和實體屬性名的集合來共同刻畫同一類實體。
Ø eg:學生(學號,姓名,性別,籍貫,成績)是一個實體型。
實體集就是實體的集合。
聯絡
Ø 定義
• 是指事物之間的關係(現實世界)在資訊世界中的反映。
Ø 兩種型別
• 實體內部的聯絡和實體之間的聯絡。
Ø 三種聯絡型別
假設A和B分別表示兩個實體集
• 一對一聯絡記為(1:1)。
• 一對多聯絡記為(1:n)。
• 多對多聯絡記為(m:n)。
當將現實世界中的實際問題轉化為資訊世界中的概念模型時,用什麼來描述這種概念模型呢?
當在資料庫理論中,通常用E-R圖來描述概念模型 ,它提供了表示實體型、屬性和聯絡的方法。
1.5.3 E-R圖
1.實體及其屬性的表示
【例子】 對於一個實體型——學生(學號,姓名,成績),其E-R圖如圖1.10所示。
2.實體型之間聯絡的表示
兩個實體型之間聯絡的表示
多個實體型(三個或三個以上)之間聯絡的表示
Ø 三個實體型A、B、C之間聯絡表示為(m:n:o),其中m,n,o > 0。
【例子】 對於供應商、倉庫和零件,由於一個供應商可以提供多種零件並存放在不同倉庫中,而一種零件也可以由多個供應商提供並存放在不同倉庫中,同時一個倉庫也可以存放不同供應商提供的多種零件。所以供應商、倉庫和零件之間的聯絡是多對多聯絡,其E-R圖可以用圖1.12表示。
3.實體型內部聯絡的表示
同一個實體型內部實體的三種聯絡對應的E-R圖,分別如圖1.13的(a)、(b)和(c)所示。
【例子】 職工實體型中的實體具有領導與被領導的聯絡,這種聯絡是一對多聯絡,可以用圖1.14表示。
4.聯絡屬性的表示
聯絡的屬性的表示方法與實體的類似
Ø 對於供應商和倉庫之間的聯絡(庫存),其屬性(庫存量),可以表示如圖1.15所示。
總結
利用實體、屬性和聯絡及其之間關係的表示方法可以將現實世界中的複雜問題抽象成為資訊世界中的概念模型。
概念模型通常是用E-R圖表示的,E-R圖的設計過程就是對問題進行抽象和建模的過程。