大數據2. 書名:挑戰大數據
• 作者: 陸嘉恒
• 陸嘉恆,中國人民大學教授
• 研究方向:
– XML數據管理,數據挖掘,大數據處理技術,雲計算技術等
• 2001年獲上海交通大學計算機專業碩士學位
• 2002至2006年在新加坡國立大學攻讀博士學位
• 已在SIGMOD,VLDB,ICDE等國際一流的數據庫會
議和期刊上發表了三十餘篇論文
3. 書大綱
• 概論
• 資料一致性理論
• 資料儲存模型
• 資料分區與放置
• 巨量資料處理方法
• 資料複製與容錯技術
• 資料壓縮技術
• 快取技術
• 各資料庫介紹
• 分散式快取系統
• 企業應用
14. CAP 理論
1.C: Consistency 一致性
2.A: Availability 可用性
3.P: Partition Tolerance分區容錯性
• 一個分布式系統不可能同時很好的滿足一
致性,可用性和分區容錯性這三個需求,
最多只能同時較好的滿足兩個
• 目前眾多的分布式數據系統通過降低一致
性來換取可用性。
21. NoSQL資料庫儲存模型
1.鍵值儲存
– 優點
• 模型簡單易於實現
• 單筆資料進行查詢修改
• 高平行讀寫效能
– 缺點
• 批次資料操作效能差
• 資料無結構化
應用場景:
1.內容快取,處理大量資料的高負載
2.紀錄檔系統
KEY VALUE
Name:101 Bill
Name:102 Steve
Message:201 “Microsoft is great!”
Message:202 “U mean the
beautiful”
Name-Message:1 101:201
Redis、Dynamo
27. CouchDB Redis MongoDB Riak Membase
開發
語言
Erlang C/C++ C++ Erlang,C,Javascript Erlang,C
優點 數據一致性,
易用
運行非常快 保留了SQL一些的
特性(查詢,索引)
具備容錯能力 兼容Memcache,
兼具持久化和支
持集群
適用
場景
積累性的、
較少改變的
數據
數據變化快
數據庫大小
可遇見(內
存容量)的
應用程序
動態查詢; 索引比
map/reduce方式更
合適時; 跟
CouchDB一樣,但數
據變動更多.
多站點複製
單個站點的擴展性
可用性及出錯處理有要
求的情況
適用於需要低延
遲數據訪問,高
並發支持以及高
可用性
舉例 CRM、CMS 股票價格、
數據分析、
實時數據蒐
集、
實時通訊
Mysql/PostgreSQL
場合,但是無法使
用預先定義好所有
列的時候
銷售數據蒐集、
工廠控制系統
低延遲數據訪問
比如以廣告為目
標的應用、
web 應用比如網
絡遊戲
NoSQL資料庫
33. MapReduce
• 定義:
– Hadoop Map/Reduce是一個易於使用的軟體平台,以MapReduce為基礎的應用程
序,能夠運作在由上千台PC所組成的大型叢集上,並以一種可靠容錯的方式平行
處理上P級別
• Hadoop適用於大規模資料集、可拆解的運算、批次處理、預先運算
• Map映射、Reduce化簡
• 流程圖解:
35. Hadoop Distributed File System
(HDFS)
• Hadoop系統中大量的資料和運算時產生的暫存檔案,都是存放在這
個分散式的檔案系統上
• 分散式的儲存環境,提供單一的目錄系統 (Single Namespace),一
個典型的超大型分散式檔案系統
• 具容錯能力、高效率且超大容量的儲存環境
• Write Once Read Many存取模式
• HDFS概念:
– 是認為移動運算到資料端通常
比移動資料到運算端來的成本低
39. 範圍分區
• 最早最經典的分區演算法
• 根據值的範圍進行資料的劃分
優點:
– 在時間週期資料儲存時顯得特別出色
• 資料以星期分區為例:
CREATE TABLE sales
(
acct_no NUMBER(5),
person VARCHAR(50),
sales_amount NUMBER(8),
week_no NUMBER(2)
);
PARTITION BY RANGE (week_no)
(
PARTITION p1 VALUES LESS THAN (4) TABLESPACE data0,
PARTITION p2 VALUES LESS THAN (8) TABLESPACE data1,
PARTITION p3 VALUES LESS THAN (53) TABLESPACE data2,
);
…
40. 列表分區
• 當資料為離散數值時,且要求資料重複率高
• 分區之間沒有連結關係,不均勻
• 適合於對資料的離散值進行控制
• 指支援單一欄位
• 優點:
– 可透過分區來很方便尋找對應的資料
CREATE TABLE sales_list
(
Salesman_id NUMBER(5),
Salesman_name VARCHAR(30),
Salesman_state VARCHAR(20),,
Sales_date Date
);
PARTITION BY LIST (Salesman_state)
(
PARTITION sales_west VALUES (‘Chengdu’),
PARTITION sales_west VALUES (‘Shanghai’,’Dalian’,’Qingdao’),
);