※本書特色:
1. 以資料庫的實作為主軸,詳述大數據的應用和未來方向。
2. 詳盡說明資料分析、倉儲與探勘等課題。
3. 舉列實際案例且循序引導,進而培養對資料庫的概念。
4. 常用套件、知名套件之介紹、撰寫、解讀說明與範例。
5. 對有志成為資料科學家的初學者而言,本書絕對是一本絕佳的入門書籍。
※本書內容:
本書作者精心彙整大數據分析工作所需的理論知識、系統開發,程式撰寫與建立模型之實務經驗,以資料庫實作為主軸,導引出大數據之應用和未來方向;由資料分析、資料倉儲到資料探勘,皆有周詳的說明與釋例,讓讀者一目了然,在觀念結構的建立上能更有效率的掌握,並舉列案例讓讀者透過案例分析,而能對資料庫的概念有更深一層的體會。
書中並完整介紹一些常用和知名套件如何撰寫、使用以及對跑出的結果如何進行解讀,例如:如何利用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
推薦序
※大數據時代導讀
不論資訊科技如何演進,從大型主機 (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進行羅吉斯迴歸分析。更重要的是對於這些模型如何使用、和對跑出的結果如何進行解讀,都有非常完整的介紹,相信對於有志成為資料科學家的初學者而言,本書絕對是一本很好的入門書籍。
※大數據時代導讀
不論資訊科技如何演進,從大型主機 (Mainframe)、主從式 (Client-Server)、三階層 (Three-tier) 架構,乃至於現今大眾耳熟能詳的雲端運算、行動APP、社群媒體、物聯網等應用模式,亙古不變的是「資料」依舊成為企業營運的核心命脈,畢竟沒資料就沒價值 (No data, no value)。隨著雲端運算盛行,Hadoop框架中的HDFS (Hadoop Distributed File System) 讓大量資料得以分散式儲存、MapReduce則是讓大量資料得以分散式計算,藉由大量儲存和快速運算等兩大特性,讓大數據分析得以實現。平心而論,大數據並不是一個新議題,經...
目錄
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 OPTION
1.8.2 使用繫結至結構描述:WITH SCHEMABINDING
1.8.3 將檢視表加密:WITH ENCRYPTION
1.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_KEY
2.10.2 是否設定填滿因數:FILLFACTOR
2.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 TRANSACTION
3.5.2 COMMIT TRANSACTION
3.5.3 COMMIT WORK
3.5.4 ROLLBACK TRANSACTION
3.5.5 ROLLBACK WORK
3.5.6 SAVE TRANSACTION
3.5.7 交易的架構
3.5.8 巢狀交易
3.5.9 分散式交易
3.5.9.1 如何啟動分散式交易協調器 (MSDTC) 服務
3.5.9.2 如何新增一個連結伺服器
3.5.9.3 BEGIN DISTRIBUTED TRANSACTION
3.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 Provider
4.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 和 OLAP
6.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-DM
6.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 Services
7.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 Studio
7.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 Client
7.4.1 安裝 Microsoft R Client
7.4.2 在 R Tools for Visual Studio 檢視 R Engine 目錄
7.4.3 stats 套件 glm 羅吉斯迴歸分析
7.4.4 RevoScaleR 套件 rxLogit 羅吉斯迴歸分析
7.5 習題
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 CHEC...