1.1 認識數據庫應用系統
1.1.1 系統的臺前幕后
錦衣華服上“淘寶”,一飽口福找“點評”,星行夜歸叫“滴滴”,下榻留賓有“攜程”……數據庫應用系統扶持起一個個創新企業,如影隨形地伴我們衣食住行;手機銀行、電子政府、數字化醫院、智能工廠……數據庫應用系統更新了傳統業務模式,支撐起各領域的現代化。
1.系統的呈現形式
我們在工作和生活中會遇到形形色色的數據庫應用系統,它們的面貌和功能各不相同,開發技術也五花八門。但對用戶來說,主要有以下三種呈現形式。
① 客戶端程序。在客戶/服務器(Client/Server,C/S)結構的分布式軟件系統中,用戶需要使用專門的客戶端程序,并通過它訪問遠程服務器。它可能以軟件形式呈現,如專門的業務系統、微信客戶端、銀行ATM機上的存取款軟件等,還可能以其他交互形式呈現。例如,智能音箱采用語言交互,不停車收費系統自動識別車牌號作為輸入,生產線自動采集設備狀態信息并進行自動控制等。圖1.1是幾個客戶端程序示例。
② 網站。在瀏覽器/服務器(Browser/Server,B/S)結構的分布式軟件系統中,用戶無須安裝專門軟件,使用瀏覽器通過HTTP等網絡協議可以直接訪問Web服務器上運行著的網站,從而獲取信息服務。例如,搜索引擎、電子商務、電子政務、在線學習等網站(見圖1.2)。

圖1.1 客戶端程序(左為專門業務系統、中為ATM機、右為智能音箱)

圖1.2 網站(左為搜索引擎、中為電子商務網站、右為電子政務網站)
③ 移動應用。移動應用(APP,Application的縮寫)是指基于智能手機、平板電腦、筆記本電腦等移動終端的應用軟件。隨著移動設備的智能化程度提高,APP已不僅僅是Web應用的補充,而且正逐漸成為信息系統不可缺少的一種應用方式。圖1.3顯示了幾個移動端APP的頁面效果。

圖1.3 APP(左為微信、中為滴滴出行、右為慕課學習)
2.系統的概念和原理
我們面對的各種系統雖然呈現形式和功能可能不同,但它們的基本原理是一致的。下面我們了解一下它們幕后涉及的一些基本概念和原理。
(1)信息和數據
信息是對客觀世界中各種事物的運動狀態和變化的反映,是客觀事物之間相互聯系和相互作用的表征。信息是一個相對抽象的概念,它的載體是數據。
數據是反映客觀事物的性質、屬性及其相互關系的一種表示形式,它可以是文本、數字,甚至圖像、聲音等各種可以識別的符號。數據可以按使用目的組織成某種數據結構。數據本身并沒有價值,當它與某種應用場景結合或經過處理并為人所用時,便成為信息,從而蘊含了價值。
在一些描述中,數據和信息兩個概念常被賦予相同的含義:從存儲和處理的角度看,它是數據;從管理和利用的角度看,它是信息。例如,一個電影信息系統需要處理影院、電影和觀眾等信息,這些信息在計算機中以各種數據形式存儲,如電影名用文本字符串、票價用數值、首映日期用時間、海報用圖片等。
(2)數據庫和數據庫管理系統
數據庫(DataBase,DB)是一種提供集中管理和利用方式的數據集合。數據庫管理系統(DataBase Management System,DBMS)是一種管理數據庫的系統軟件,一般由商業軟件公司或開源社區開發。
相對于簡單的文件數據管理方式,數據庫具有很多優勢:數據冗余少;保證數據的完整性和安全性;支持多用戶共享使用;應用程序與數據獨立,便于程序的開發和維護。
隨著信息來源和應用的多樣化,針對結構化、半結構化或非結構化的數據集合,發展了相應的數據庫技術。各種業務處理信息可抽象為結構化數據,而關系數據庫是支持結構化數據管理的經典技術。關系數據庫有堅實的數學理論基礎,有許多專門的數據庫管理軟件(如MySQL、Oracle、SQL Server等)可提供完善的管理功能。由于互聯網應用產生了大規模的半結構或非結構化數據,因此非關系型數據庫應運而生。非關系型數據庫沒有統一的架構,但它們普遍具有高性能、彈性擴展、靈活性更強的特點,各種數據庫管理系統(如MongoDB、Redis、Neo4J、Cassandra等)適合不同的應用場景。
(3)數據庫應用系統
從控制論的觀點來看,系統是一些部件為了某種目標而有機結合的一個整體。數據庫應用系統是以數據庫為基礎,以信息管理和利用為目標的人機系統,一般包含信息采集、存儲、傳輸、處理、輸出、反饋和管理等功能。
從技術角度看,一個數據庫應用系統主要包括以下部分。
① 數據庫:集中存儲和管理系統中的信息。
② 應用軟件:面向用戶信息服務需求,采用程序設計語言和各種支持技術所開發的軟件,是用戶使用系統的交互環境,根據環境和功能需要有多種呈現方式。
③ 支持環境:包括硬件和軟件。硬件包括計算機、移動終端、網絡、存儲、輸入/輸出及其他各種硬件設備,它們構成了系統的基礎設施。軟件包括操作系統、數據庫管理系統、軟件開發工具與環境等,它們提供信息系統開發和運行的支持環境。
④ 文檔:在系統開發過程中形成的技術文檔、系統使用說明、系統運維的規章制度等,是系統使用和維護的依據。
數據庫應用系統大多是人機系統,因此人也是系統的重要組成部分。
① 用戶:使用系統完成業務工作的人員。系統為不同類別的用戶提供相應的功能,各類用戶在自己的權限范圍內操作。
② 系統管理員:保障系統正常運行和數據安全的專職或兼職管理人員,如系統管理員、數據庫管理員等。
③ 系統開發者:參與系統開發的人員,既包括專業開發人員,如產品經理、需求分析和設計人員、系統架構師、程序員等,也包括參與開發的項目領導、管理和業務人員代表。
如圖1.4所示為電影分享系統的系統架構。在信息中心設有數據庫服務器(存儲和管理數據)、Web服務器(發布Web應用程序);觀眾在能夠接入Internet的計算機或移動設備上訪問網站或使用APP,查詢電影信息和觀看電影;管理員維護電影信息和匯總觀影情況。

圖1.4 電影分享系統的系統架構
1.1.2 系統的應用類型
數據庫應用系統已經成為組織機構開展各類業務活動的基礎,直接為其戰略目標服務。從層次化管理的角度看,一個組織一般包含三個管理層次:業務層、管理層和決策層。各層次人員根據自身職責不同需要不同的信息服務,所使用的系統類型也不同(見表1.1)。下面結合各類人員的信息服務需求從系統開發的角度介紹數據庫應用系統的類型。
表1.1 不同管理層次的信息系統需求

1.在線事務處理(OnLine Transaction Processing,OLTP)系統
業務層人員主要承擔日常的業務處理工作,工作流程明確,單調重復。在線事務處理系統可支持業務處理,替代煩瑣的手工重復勞動,提高業務處理效率和準確性。例如,在線學習系統提供學生選課、教師登記成績、教務員管理課程等業務處理功能。我們日常接觸的網站購物、超市收銀、火車訂票等也都是在線事務處理系統。
(1)在線事務處理系統的結構
在線事務處理系統結構簡單,一般由數據庫和業務處理程序構成(見圖1.5)。

圖1.5 在線事務處理系統基本結構
① 數據庫:集中存儲和管理面向某類業務的數據。例如,電影分享系統需要的各種信息,如電影類型、電影、導演等都集中存放在一個數據庫中。
② 業務處理程序:是用程序設計語言編寫的應用軟件,實現對數據庫的讀寫訪問和數據處理功能,支持用戶的業務活動。例如,電影分享系統支持用戶查詢和觀影、管理員維護電影信息等。
(2)在線事務處理系統的特點
在線事務處理系統的信息結構化強,處理流程明確,一般分為5步:數據輸入、數據查詢、數據處理、數據更新、結果輸出或報表生成。
在線事務處理系統一般用于專門性業務,幫助用戶實現日常業務活動的自動化。由于業務運行對系統的依賴度很高,因此要求系統具有較高的可靠性、一定的實時性,并保證數據完整性。在線事務處理系統一旦出現故障,就有可能導致業務停滯。
2.在線分析處理(OnLine Analytical Processing,OLAP)系統
管理層人員負責計劃、管理和調控組織的業務活動,從而實現組織的短期目標。在線分析處理系統通過對歷史數據進行分析來輔助管理和決策,為管理層決策提供信息依據。例如,在線學習系統中教務員匯總分析學生學習進展和成績,用戶進行飛機票比價,超市對客戶的消費模式進行分析,銀行對客戶使用信用卡風險進行分析與預測等,都屬于在線分析處理系統的范疇。
(1)在線分析處理系統的結構
在線分析處理系統一般由數據源、數據倉庫、OLAP服務器和前端工具構成(見圖1.6)。

圖1.6 在線分析處理系統基本結構
① 數據源。數據倉庫的數據來源,既可以是多個事務型數據庫,也可以是各類數據文件。
② 數據倉庫。數據倉庫是在線分析處理系統的核心。與支持頻繁讀寫的事務型數據庫不同,它存儲海量的、只讀的、用于分析的數據集合。這些數據是根據主題分析需要對大量的歷史數據進行抽取、清理并轉換后獲得的。按照數據范圍不同,數據倉庫可以分為企業級和部門級,后者也稱為數據集市。
與數據庫相比,數據倉庫中的數據具有以下主要特性。
? 面向主題。事務型數據庫的數據組織面向事務處理任務,各個業務系統之間可能各自分離;而數據倉庫中的數據是按照一定的主題域進行組織的。主題是指用戶使用數據倉庫進行決策時所關心的重點,一個主題通常與多個事務型信息系統相關。例如,保險公司分析的主題有保險項目、客戶、索賠等;零售超市分析的主題有商品、顧客、廠家、促銷活動等。
? 數據集成。事務型數據庫通常與某些特定的應用相關,數據庫之間相互獨立,并且往往是異構的;而數據倉庫中的數據是在對原有分散的數據庫數據進行抽取、清理的基礎上經過系統加工、匯總和整理后得到的,必須消除源數據中的不一致,以保證數據倉庫內的信息是關于整個組織的、一致的全局信息。
? 數據穩定。事務型數據庫中的數據通常隨著業務活動實時更新;而一旦某個數據進入數據倉庫以后,一般不再改變并將長期保留。針對數據倉庫的操作主要是數據查詢,只需要定期加載和更新。
? 反映歷史變化。事務型數據庫主要關心當前某個時間段內的數據;而數據倉庫中的數據通常是從過去某一時刻到目前的海量歷史數據,反映某個主題下的業務發展歷程。
③ OLAP服務器。OLAP服務器對某類分析需要的數據進行有效集成,按多維模型予以組織,以便進行多角度和多層次的分析,從而發現趨勢。
④ 前端工具。前端工具產生分析結果,主要包括各種報表、查詢、數據分析、數據挖掘工具,以及基于數據倉庫的應用開發工具。其中,數據分析工具主要針對OLAP服務器,報表和數據挖掘工具直接針對數據倉庫。
(2)在線分析處理系統的特點
在線分析處理系統通過多維的方式對海量歷史數據進行查詢和復雜的分析,并提供直觀易懂的分析結果。它主要應用在決策支持方面,對時間的要求不太嚴格,對系統可靠性、數據完整性等要求不高。
3.知識處理系統(Knowledge Processing System,KPS)
決策層人員負責為組織制定中長期發展規劃和戰略,或者根據專業知識對領域問題進行診斷和方案推薦。該層要求信息系統根據歷史業務數據或專家知識分析得到的隱藏知識來進行趨勢預測或推薦處理方案,從而輔助決策。
知識通常被定義為領域規律或專門技能,是以經驗為基礎累計的智力資本。以知識發現和知識應用為目標的系統統稱為知識處理系統,是大數據時代的利器。它關注探索性的數據分析,從大量數據中獲取隱含的、未知的,但又具有潛在應用價值的信息關系或模式。例如,在線學習系統根據大數據對生源和學習效果進行分析,對延遲畢業學生學習狀態進行分析,以便了解關鍵因素,確定改進教學的方法;電商平臺通過推薦系統分析用戶行為和銷售等大數據,以便自動進行商品推薦;農業專家系統根據專業知識和歷史數據對病蟲害進行診斷和防治方案推薦等。
(1)知識處理系統的結構
知識處理系統可能有多種不同結構,但一般包含以下三個階段的工作:數據準備、數據挖掘、結果表達和解釋(見圖1.7)。首先將從各種數據源獲得的數據進行清理、選擇和集成后存放到數據庫或數據倉庫中,將專家提供的知識和規則存放到知識庫中;數據挖掘引擎通過一定的分析算法并使用知識庫中的規則對數據進行分析,發現數據之間潛在的相關性、趨勢或模式;系統對分析結果進行評估后以一定的文字、圖、表等形式表達出來,用戶進一步對結果進行解釋,形成有用的知識。

圖1.7 知識處理系統的基本結構
數據挖掘的主要分析方法如下。
① 分類。首先從數據中選出已經分好類的訓練集,運用分類算法建立分類模型,然后用分類模型對未分類數據進行分類。例如,將信用卡申請者分類為低、中、高風險。
② 聚類。聚類是指對相似的數據進行分組。聚類和分類的區別是,它不依賴于預先定義好的類,不需要訓練集。例如,一些特定癥狀的聚集可能預示了一個特定的疾病;又如,對用戶手機上網的行為進行聚類分析,通過客戶分群,進行精準營銷。
③ 估計。估計一個連續分布的數量值。例如,根據購買模式估計一個家庭的孩子數和家庭年收入。
④ 預測。一般通過分類或估計得出模型,然后用于對未知變量進行預測。例如,航空公司通過分析客流、燃油等變化趨勢,對不同航線制定精細的銷售策略。
⑤ 關聯。發現一個事件導致另一個事件的相關性,確定哪些事情將一起發生。例如,大量客戶在超市購買商品A時也購買商品B,將它們擺放在一起可以增加銷量;電商平臺根據用戶的瀏覽軌跡、收藏行為、購買行為等信息,自動向用戶推薦相關產品。
(2)知識處理系統的特點
數據挖掘基于大數據、數理統計、人工智能、可視化、并行計算等技術的支持,提供預測性而不是回顧性的模型,獲得隱藏的和意外的知識,對決策產生價值。知識處理系統的使用效果與數據挖掘分析方法的使用、領域知識庫的構建密切相關。在云計算、大數據等技術的支持下,知識處理系統的應用日益廣泛。