大數據時代: 資料庫系統實作與案例分析
作者 | 李紹綸 |
---|---|
出版社 | 聯合發行股份有限公司 |
商品描述 | 大數據時代: 資料庫系統實作與案例分析:※本書特色:1.以資料庫的實作為主軸,詳述大數據的應用和未來方向。2.詳盡說明資料分析、倉儲與探勘等課題。3.舉列實際案例且循序 |
作者 | 李紹綸 |
---|---|
出版社 | 聯合發行股份有限公司 |
商品描述 | 大數據時代: 資料庫系統實作與案例分析:※本書特色:1.以資料庫的實作為主軸,詳述大數據的應用和未來方向。2.詳盡說明資料分析、倉儲與探勘等課題。3.舉列實際案例且循序 |
內容簡介 ◎以資料庫的實作為主軸,詳述大數據的應用和未來方向。◎詳盡說明資料分析、倉儲與探勘等課題。◎舉列實際案例且循序引導,進而培養對資料庫的概念。◎常用套件、知名套件之介紹、撰寫、解讀說明與範例。◎對有志成為資料科學家的初學者而言,本書絕對是一本絕佳的入門書籍。本書作者精心彙整大數據分析工作所需的理論知識、系統開發,程式撰寫與建立模型之實務經驗,以資料庫實作為主軸,導引出大數據之應用和未來方向;由資料分析、資料倉儲到資料探勘,皆有周詳的說明與釋例,讓讀者一目了然,在觀念結構的建立上能更有效率的掌握,並舉列案例讓讀者透過案例分析,而能對資料庫的概念有更深一層的體會。書中並完整介紹一些常用和知名套件如何撰寫、使用以及對跑出的結果如何進行解讀,例如:如何利用wordcloud套件繪製文字雲、Arules 套件 apriori 進行關聯規則分析、stats套件 kmeans 進行集群分析、C50 套件 C5.0 進行決策樹分析、stats 套件 glm 和RevoScaleR 套件 rxLogit進行羅吉斯迴歸分析等,相信對於有志成為資料科學家的初學者而言,本書絕對是一本絕佳的入門書籍。◎本書架構:1. 第一、二、三、五章:主要介紹關聯式資料庫中進階技巧,以檢視表為開端,接續單元介紹索引技術、交易管理和可程式性物件,讓讀者建立在處理大量結構化資料時能更有效率的觀念與基礎。2. 第四章:介紹 ADO.NET 資料庫程式設計,讓讀者從無到有建置一個小型資訊系統專案,建立對於資訊系統開發之認識,以及提升程式撰寫的能力。3. 第六章:介紹資料倉儲與資料探勘,對於監督式學習或非監督式學習相關知識有一定程度的了解。4. 第七章:介紹 SQL Server 2016 版才有的新功能,也是微軟致力於大數據分析的解決方案,主要提供資料科學家能夠透過原先所熟悉的 R 語言,不論是在交談式介面中透過SQL Server R Services直接撰寫 R 腳本指令進行資料分析,或是在 Visual Studio.NET 中透過R Tools for Visual Studio或 Microsoft R Client 的安裝,在原有 Visual Studio開發環境撰寫 R 指令從事各種機器學習,進行關聯、分類、集群和預測的工作。CD╱書中╱本書範例檔案1.Microsoft SQL Server 2016 範例資料庫2.SQLServer2016
作者介紹 ■作者簡介李紹綸
產品目錄 Chapter 0 大數據時代導讀Chapter 1 視界1.1 視界的優點1.2 視界的缺點1.3 視界的種類1.4 使用「Management Studio」建立檢視表1.4.1 建立行列子集視界1.4.2 建立聯結視界1.4.3 建立統計摘要視界1.5 使用「Management Studio」修改檢視表1.5.1 使用檢視規則更新1.5.2 使用繫結至結構描述1.6 使用「Management Studio」刪除檢視表1.7 使用「T-SQL 指令」建立檢視表1.7.1 建立行列子集視界1.7.2 建立聯結視界1.7.3 建立統計摘要視界1.8 使用「T-SQL 指令」修改檢視表1.8.1 使用檢視規則更新:WITH CHECK OPTION1.8.2 使用繫結至結構描述:WITH SCHEMABINDING1.8.3 將檢視表加密:WITH ENCRYPTION1.9 使用「T-SQL 指令」編輯檢視表的資料1.9.1 在檢視表中新增一筆資料1.9.2 修改檢視表中的資料1.9.3 刪除檢視表中的資料1.10 使用「T-SQL 指令」刪除檢視表1.11 習題Chapter 2 索引2.1 主索引2.2 叢集索引2.3 次索引2.4 多層索引2.5 密集索引和稀疏索引2.6 使用「Management Studio」建立索引2.7 使用「Management Studio」修改索引2.7.1 是否忽略重複的索引鍵2.7.2 是否設定填滿因數2.8 使用「Management Studio」刪除索引2.9 使用「T-SQL 指令」建立索引2.10 使用「T-SQL 指令」修改索引2.10.1 是否忽略重複的索引鍵:IGNORE_DUP_KEY2.10.2 是否設定填滿因數:FILLFACTOR2.11 使用「T-SQL 指令」刪除索引2.12 習題Chapter 3 交易管理和並行控制3.1 交易管理3.1.1 交易的 ACID 四大特性3.1.2 交易狀態3.2 為何需要並行控制3.3 排程的循序性3.3.1 如何測試非序列排程的正確性3.3.2 優先次序圖3.4 並行控制的方法3.4.1 鎖定法3.4.1.1 二位元鎖定3.4.1.2 共享 互斥鎖定3.4.1.3 兩階段鎖定法3.4.1.3.1 發生死結的條件3.4.1.3.2 死結預防3.4.1.3.3 死結偵測3.4.1.3.4 飢餓問題3.4.2 時間戳記法3.5 使用「T-SQL 指令」執行交易3.5.1 BEGIN TRANSACTION3.5.2 COMMIT TRANSACTION3.5.3 COMMIT WORK3.5.4 ROLLBACK TRANSACTION3.5.5 ROLLBACK WORK3.5.6 SAVE TRANSACTION3.5.7 交易的架構3.5.8 巢狀交易3.5.9 分散式交易3.5.9.1 如何啟動分散式交易協調器 (MSDTC) 服務3.5.9.2 如何新增一個連結伺服器3.5.9.3 BEGIN DISTRIBUTED TRANSACTION3.5.10 交易的隔離等級3.5.11 資料鎖定3.5.11.1 樂觀和悲觀的並行控制3.5.11.2 資料鎖定的種類3.5.11.2.1 鎖定的對象3.5.11.2.2 鎖定的方法3.5.11.2.3 意圖式鎖定3.5.11.2.4 各種鎖定的共存性3.5.12 鎖定的死結問題3.6 習題Chapter 4 VB.NET 2015 資料庫系統實作4.1 ADO.NET簡介4.1.1 .NET Data Provider4.1.1.1 Connection 物件4.1.1.2 Command 物件4.1.1.3 DataReader 物件4.1.1.4 DataAdapter 物件4.1.2 DataSet 物件4.1.2.1 DataTable 物件4.1.2.2 DataColumn 物件4.1.2.3 Constraint 物件4.1.2.4 DataRelation 物件4.1.2.5 DataRow 物件4.1.2.6 DataView 物件4.2 建立資料庫系統專案4.2.1 「使用者登入」實作4.2.1.1 使用者介面設計4.2.1.2 編寫程式碼4.2.2 「EM01員工資料維護」實作4.2.2.1 使用者介面設計4.2.2.2 編寫程式碼4.2.3 樣板表單設計4.2.3.1 使用者介面設計4.2.3.2 編寫程式碼4.2.3.3 加入 .NET Framework 元件至工具箱4.2.4 「EM02 員工資料維護」實作4.2.4.1 套用繼承的表單4.2.4.2 建立資料庫連線4.2.4.3 建立資料配接器4.2.4.3.1 建立「da員工」資料配接器4.2.4.3.2 建立「da員工1」資料配接器4.2.4.3.3 建立「da部門」資料配接器4.2.4.3.4 建立「da員工電話」資料配接器4.2.4.3.5 建立「da員工眷屬」資料配接器4.2.4.4 建立「dsEM02」資料集4.2.4.5 使用者介面設計4.2.4.6 編寫程式碼4.2.5 「DE01 部門資料維護」實作4.2.5.1 套用繼承的表單4.2.5.2 建立資料庫連線4.2.5.3 建立資料配接器4.2.5.3.1 建立「da部門」資料配接器4.2.5.3.2 建立「da員工」資料配接器4.2.5.4 建立「dsDE01」資料集4.2.5.5 使用者介面設計4.2.5.6 編寫程式碼4.2.6 「PR01 計劃資料維護」實作4.2.6.1 套用繼承的表單4.2.6.2 建立資料庫連線4.2.6.3 建立資料配接器4.2.6.3.1 建立「da計劃」資料配接器4.2.6.3.2 建立「da部門」資料配接器4.2.6.4 建立「dsPR01」資料集4.2.6.5 使用者介面設計4.2.6.6 編寫程式碼4.2.7 「JO01 員工參加計劃」實作4.2.7.1 套用繼承的表單4.2.7.2 建立資料庫連線4.2.7.3 建立資料配接器4.2.7.3.1 建立「da參加」資料配接器4.2.7.3.2 建立「da員工」資料配接器4.2.7.4 建立「dsJO01」資料集4.2.7.5 使用者介面設計4.2.7.6 編寫程式碼4.2.8 「選擇計劃代號」實作4.2.8.1 新增空白的表單4.2.8.2 建立資料庫連線4.2.8.3 建立「da計劃」資料配接器4.2.8.4 建立「dsSelectPID」資料集4.2.8.5 使用者介面設計4.2.8.6 編寫程式碼4.2.9 「JO02 計劃參加員工」實作4.2.9.1 套用繼承的表單4.2.9.2 建立資料庫連線4.2.9.3 建立資料配接器4.2.9.3.1 建立「da參加」資料配接器4.2.9.3.2 建立「da計劃」資料配接器4.2.9.4 建立「dsJO02」資料集4.2.9.5 使用者介面設計4.2.9.6 編寫程式碼4.2.10 「選擇身分證號碼」實作4.2.10.1 新增空白的表單4.2.10.2 建立資料庫連線4.2.10.3 建立「da員工」資料配接器4.2.10.4 建立「dsSelectEID」資料集4.2.10.5 使用者介面設計4.2.10.6 編寫程式碼4.3 習題Chapter 5 SQL Server 可程式性物件5.1 規則物件5.1.1 使用「T-SQL 指令」建立「規則」物件5.1.2 使用「T-SQL 指令」繫結資料行5.1.3 使用「T-SQL 指令」繫結「使用者定義資料類型」5.1.4 使用「T-SQL 指令」解除資料行之間的繫結5.1.5 使用「T-SQL 指令」解除「使用者定義資料類型」之間的繫結5.1.6 使用「T-SQL 指令」刪除「規則」物件5.1.7 使用「Management Studio」繫結「使用者定義資料類型」5.1.8 使用「Management Studio」解除「使用者定義資料類型」之間的繫結5.1.9 使用「Management Studio」刪除「規則」物件5.2 預設值物件5.2.1 使用「T-SQL 指令」建立「預設值」物件5.2.2 使用「T-SQL 指令」繫結資料行5.2.3 使用「T-SQL 指令」解除資料行之間的繫結5.2.4 使用「T-SQL 指令」刪除「預設值」物件5.2.5 使用「Management Studio」繫結資料行5.2.6 使用「Management Studio」解除資料行之間的繫結5.2.7 使用「Management Studio」刪除「預設值」物件5.3 預存程序物件5.3.1 使用預存程序的優點5.3.2 預存程序的種類5.3.3 SQL Server 流程控制語言5.3.4 使用「Management Studio」建立「預存程序」物件5.3.5 使用「Management Studio」執行「預存程序」物件5.3.6 使用「Management Studio」刪除「預存程序」物件5.3.7 使用「T-SQL 指令」建立「預存程序」物件5.3.8 使用「T-SQL 指令」執行「預存程序」物件5.3.9 使用「T-SQL 指令」刪除「預存程序」物件5.3.10 何謂 SQL Injection 資料隱碼攻擊5.3.10.1 含有 SQL Injection 弱點之「使用者登入」表單5.3.10.2 如何防範 SQL Injection 攻擊5.4 觸發程序物件5.4.1 DML 觸發程序5.4.1.1 使用 DML 觸發程序的目的5.4.1.2 DML 觸發程序的類型5.4.1.3 使用「Management Studio」建立「DML 觸發程序」物件5.4.1.4 使用「Management Studio」刪除「DML 觸發程序」物件5.4.1.5 使用「T-SQL 指令」建立「DML 觸發程序」物件5.4.1.6 使用「T-SQL 指令」停用「DML 觸發程序」物件5.4.1.7 使用「T-SQL 指令」啟用「DML 觸發程序」物件5.4.1.8 使用「T-SQL 指令」刪除「DML 觸發程序」物件5.4.2 DDL 觸發程序5.4.2.1 使用 DDL 觸發程序的目的5.4.2.2 使用「T-SQL 指令」建立「DDL 觸發程序」物件5.4.2.3 使用「T-SQL 指令」刪除「DDL 觸發程序」物件5.5 習題Chapter 6 資料倉儲與資料探勘6.1 資料倉儲簡介6.1.1 資料庫與資料倉儲的差別6.1.1.1 OLTP 和 OLAP6.1.1.2 資料倉儲的特性6.1.1.3 資料庫與資料倉儲之比較6.1.2 資料倉儲架構6.1.2.1 資料預處理6.1.2.2 多維度資料模型6.1.2.2.1 資料方塊6.1.2.2.2 事實表與維度表6.1.2.2.3 星狀綱目與雪花綱目6.1.2.3 OLAP 線上分析處理6.1.2.3.1 OLAP 的資料儲存方式6.1.2.3.2 OLAP 的操作方式6.2 資料探勘簡介6.2.1 資料探勘的定義6.2.2 資料探勘和 OLAP 的差別6.2.3 資料探勘專案標準流程 CRISP-DM6.2.4 資料探勘的功能6.2.4.1 決策樹6.2.4.1.1 ID3 和 C4.5 決策樹6.2.4.1.2 CART 決策樹6.2.4.1.3 CHAID 決策樹6.2.4.2 貝氏分類器6.2.4.3 關聯規則6.2.4.4 序列規則6.2.4.5 集群分析6.2.4.5.1 階層式集群6.2.4.5.2 非階層式集群6.3 習題Chapter 7 大數據分析與應用7.1 大數據簡介7.1.1 大數據的定義7.1.2 大數據的資料特性7.1.3 大數據的應用7.1.3.1 古代大數據應用案例7.1.3.2 現代大數據應用案例7.1.4 大數據 V.S. 資料科學家7.1.5 微軟大數據分析解決方案7.2 SQL Server R Services7.2.1 如何啟用外部腳本指令7.2.2 如何在 SQL Server 中執行 R Script 指令7.2.3 如何利用 R Script 指令將資料寫入 SQL Server 資料表7.2.4 如何利用 R Script 指令讀取 SQL Server 資料表中資料7.2.5 如何查詢 R Service已安裝的 R 套件清單7.2.6 R Service 如何下載和安裝新的套件7.2.7 下載和安裝 SSMSBoost 外掛元件7.2.8 如何利用 SSMSBoost 顯示文字雲繪圖結果7.3 R Tools for Visual Studio7.3.1 建置R Tools for Visual Studio整合開發環境7.3.2 準備分析的資料7.3.3 建立 R 語言專案7.3.4 建立資料來源新增資料庫連線7.3.5 Arules 套件 apriori 關聯規則分析7.3.6 stats套件 kmeans 集群分析7.3.7 C50 套件 C5.0 決策樹分析7.4 Microsoft R Client7.4.1 安裝 Microsoft R Client7.4.2 在 R Tools for Visual Studio 檢視 R Engine 目錄7.4.3 stats 套件 glm 羅吉斯迴歸分析7.4.4 RevoScaleR 套件 rxLogit 羅吉斯迴歸分析7.5 習題
書名 / | 大數據時代: 資料庫系統實作與案例分析 |
---|---|
作者 / | 李紹綸 |
簡介 / | 大數據時代: 資料庫系統實作與案例分析:※本書特色:1.以資料庫的實作為主軸,詳述大數據的應用和未來方向。2.詳盡說明資料分析、倉儲與探勘等課題。3.舉列實際案例且循序 |
出版社 / | 聯合發行股份有限公司 |
ISBN13 / | 9789863758921 |
ISBN10 / | 9863758922 |
EAN / | 9789863758921 |
誠品26碼 / | 2681522627005 |
頁數 / | 536 |
注音版 / | 否 |
裝訂 / | P:平裝 |
語言 / | 1:中文 繁體 |
尺寸 / | 23X17CM |
級別 / | N:無 |
內文 : 序
※大數據時代導讀
不論資訊科技如何演進,從大型主機 (Mainframe)、主從式 (Client-Server)、三階層 (Three-tier) 架構,乃至於現今大眾耳熟能詳的雲端運算、行動APP、社群媒體、物聯網等應用模式,亙古不變的是「資料」依舊成為企業營運的核心命脈,畢竟沒資料就沒價值 (No data, no value)。隨著雲端運算盛行,Hadoop框架中的HDFS (Hadoop Distributed File System) 讓大量資料得以分散式儲存、MapReduce則是讓大量資料得以分散式計算,藉由大量儲存和快速運算等兩大特性,讓大數據分析得以實現。平心而論,大數據並不是一個新議題,經過這些年各大媒體爭相報導,企業也逐漸從模糊的概念、爭相理解,到最後認同大數據的實用價值,思慮如何導入應用,冀望能輔助公司決策更加精準。
這些年來大多數企業也都學會如何利用「資料」來創造「價值」,這些企業透過線上分析處理(On-Line Analytical Processing,OLAP) 或是資料探勘 (Data Mining) 等技術,將平常賴以為生的 ERP、SCM 或 CRM 等各式各樣資料庫系統所衍生的大量資料加以分析,取得有助於未來營運方向的決策數據。近年來,除了將企業內部關聯式資料庫中各個資料表等結構化資料的進行分析之外,許多企業更將資料分析的觸角延伸到企業外部諸如:電子報新聞報導、社群網站留言和回文、物聯網感測器紀錄,冀望藉由文字探勘 (Text Mining) 技術,將這些非結構化資料加以分析,嘗試創造出新的價值,以面對這瞬息萬變的廣大市場,大數據分析儼然成為企業成功致勝的秘密武器。
然而,企業往往礙於資源不足,或因工具不完善,抑或專業人才不足,導致相關應用推動不順。大數據之所以難為,因為一方面需動用眾多伺服器進行大量運算,對企業而言可謂一筆財務負擔。再者,企業想做好大數據分析,需要延攬資料科學家或資料分析人才,建構許多資料模型,或針對諸多工具進行設定,對結果進行解讀,無論從管理角度、技能門檻而言都非常高,成為企業難以跨越之鴻溝,亦是無法將大數據應用普及化的主要原因。
話雖如此,少數人對於大數據依然存在些許錯誤迷思,誤認為從事大數據分析,就需要建構所費不貲的Hadoop系統,殊不知台灣大多數企業的資料量只有幾TB到數10TB,這樣的資料量在Hadoop技術下根本無法發揮其價值,因為 Hadoop要管理多伺服器節點並將資料從記憶體移動至資料庫造成的啟動延遲,可能會比一般的資料處理方案更慢。誠如專業財經媒體Bloomberg負責人Matt Hunt 指出:「在 Bloomberg 我們並沒有大數據問題,反而是有中量數據 (medium data) 問題,這裡指的中量數據指的是量夠大、但適用於單一設備上,但並不需要龐大巨量的集群數據,相當於 TB,而不需要達 PB 等級」。的確,殺雞焉須用牛刀,特別是台灣的社群媒體沒那麼發達,資料大多不在自己手上,與其盲目追求技術和工具,不如先用小量資料去驗證一個模型,是否能將資料轉換成商機利潤,再來決定要不要建置大數據的作業環境。
近年來,筆者曾參與一些政府部門、私人企業大數據應用專案開發,發覺大部分專案也都不是在 Hadoop上執行,反而大部分工作都是透過本書所介紹的章節內容完成,例如:在經濟部資料應用分析專案中,是利用 R 語言結合 PHP 網頁程式設計,建置一套太陽能發電選址模型,將最近三年全省和離島共 24個太陽能電廠年每 10 分鐘智慧電表所量測到的日照量和發電量資料,進行建模和預測。過程中有些有關發電量遺缺值的資料預處理部分,便是透過 5.3.3 小節所介紹的SQL Server 流程控制語言,利用SQL指令迴圈和判斷式撰寫「內差法」填補有日照量卻無發電量的遺缺值,快速處理數百萬筆的日照量和發電量資料,並且透過 7.3.6 節所介紹的 R 語言 stats 套件中的 arima 模型,進行日照量和發電量的預測。
在行政院主計總處主計資料大數據分析研究案中,則是利用C# 結合 SQL Server 資料庫,建置一套跨機關去識別化資料整合模型,將每五年辦理一次的工業及服務業普查、農林漁牧業普查,或是每十年辦理一次的人口及住宅普查,各縣市政府主計單位將調查後的資料先進行去識別化後,再交付國勢普查處進行去識別化資料整合。去識別化資料整合工具的開發是以 4.1 小節所介紹的 ADO.NET觀念和 4.2 小節資料庫系統範例專案方式實作出來的,此工具可能會面臨處理 2300 萬筆人口普查這類等級的資料量,將其身分證號碼這個主鍵,透過加密方式一一去識別化,或去除其他欄位的間接識別,所以在開發過程中又得透過第 3 章交易管理的觀念,將多個 SQL指令視為同一筆交易執行,並且透過 2.9 小節建立索引,加入多執行緒方式來提升去識別化的執行效能。
有鑑於此,筆者將這些年從事大數據分析工作可能會用到的理論知識、系統開發,程式撰寫,建立模型的經驗整理成冊,希望對於想要踏入大數據分析這個領域的讀者有所助益。書中第一、二、三、五章主要介紹關聯式資料庫中進階技巧,以檢視表為開端,接續單元介紹索引技術、交易管理和可程式性物件,這些章節內容與觀念可以讓我們處理大量結構化資料時更有效率,第四章則是介紹 ADO.NET 資料庫程式設計,讓讀者從無到有建置一個小型資訊系統專案,相信對於資訊系統開發有一定認識、對於程式撰寫能力也會提升,第六章介紹資料倉儲與資料探勘,對於監督式學習或非監督式學習相關知識有一定程度的了解。最後第七章則是介紹 SQL Server 2016 版才有的新功能,也是微軟致力於大數據分析的解決方案,主要提供資料科學家能夠透過原先所熟悉的 R 語言,不論是在交談式介面中透過SQL Server R Services直接撰寫 R 腳本指令進行資料分析,或是在 Visual Studio.NET 中透過R Tools for Visual Studio或 Microsoft R Client 的安裝,在原有 Visual Studio開發環境撰寫 R 指令從事各種機器學習,進行關聯、分類、集群和預測的工作。書中除了介紹一些常用和知名套件如何撰寫,例如:如何利用wordcloud套件繪製文字雲、Arules 套件 apriori 進行關聯規則分析、stats套件 kmeans 進行集群分析、C50 套件 C5.0 進行決策樹分析、stats 套件 glm 和RevoScaleR 套件 rxLogit進行羅吉斯迴歸分析。更重要的是對於這些模型如何使用、和對跑出的結果如何進行解讀,都有非常完整的介紹,相信對於有志成為資料科學家的初學者而言,本書絕對是一本很好的入門書籍。