1. 程式人生 > >大資料挑戰與NoSQL資料庫技術pdf

大資料挑戰與NoSQL資料庫技術pdf

第1章概論1
  1.1引子2
  1.2大資料挑戰3
  1.3大資料的儲存和管理5
  1.3.1並行資料庫5
  1.3.2NoSQL資料管理系統6
  1.3.3NewSQL資料管理系統8
  1.3.4雲資料管理11
  1.4大資料的處理和分析11
  1.5小結13
  參考文獻13
  理論篇
  第2章資料一致性理論16
  2.1CAP理論17
  2.2資料一致性模型21
  2.3ACID與BASE22
  2.4資料一致性實現技術23
  2.4.1Quorum系統NRW策略23
  2.4.2兩階段提交協議24
  2.4.3時間戳策略27
  2.4.4Paxos30
  2.4.5向量時鐘38
  2.5小結43
  參考文獻43
  第3章資料儲存模型45
  3.1總論46
  3.2鍵值儲存48
  3.2.1Redis49
  3.2.2Dynamo49
  3.3列式儲存50
  3.3.1Bigtable51
  3.3.2Cassandra與HBase51
  3.4文件儲存52
  3.4.1MongoDB53
  3.4.2CouchDB53
  3.5圖形儲存54
  3.5.1Neo4j55
  3.5.2GraphDB55
  3.6本章小結56
  參考文獻56
  第4章資料分割槽與放置策略58
  4.1分割槽的意義59
  4.1.1為什麼要分割槽59
  4.1.2分割槽的優點60
  4.2範圍分割槽61
  4.3列表分割槽62
  4.4雜湊分割槽63
  4.5三種分割槽的比較64
  4.6放置策略64
  4.6.1一致性雜湊演算法65
  4.6.2容錯性與可擴充套件性分析66
  4.6.3虛擬節點68
  4.7小結69
  參考文獻69
  第5章海量資料處理方法70
  5.1MapReduce簡介71
  5.2MapReduce資料流72
  5.3MapReduce資料處理75
  5.3.1提交作業76
  5.3.2初始化作業78
  5.3.3分配任務78
  5.3.4執行任務79
  5.3.5更新任務執行進度和狀態80
  5.3.6完成作業81
  5.4Dryad簡介81
  5.4.1DFSCosmos介紹82
  5.4.2Dryad執行引擎84
  5.4.3DryadLINQ解釋引擎86
  5.4.4DryadLINQ程式設計88
  5.5Dryad資料處理步驟90
  5.6MapReducevsDryad92
  5.7小結94
  參考文獻95
  第6章資料複製與容錯技術96
  6.1海量資料複製的作用和代價97
  6.2海量資料複製的策略97
  6.2.1Dynamo的資料庫複製策略97
  6.2.2CouchDB的複製策略99
  6.2.3PNUTS的複製策略99
  6.3海量資料的故障發現與處理101
  6.3.1Dynamo的資料庫的故障發現與處理101
  6.3.2CouchDB的故障發現與處理103
  6.3.3PNUTS的故障發現與處理103
  6.4小結104
  參考文獻104
  第7章資料壓縮技術105
  7.1資料壓縮原理106
  7.1.1資料壓縮的定義106
  7.1.2資料為什麼可以壓縮107
  7.1.3資料壓縮分類107
  7.2傳統壓縮技術[1]108
  7.2.1霍夫曼編碼108
  7.2.2LZ77演算法109
  7.3海量資料帶來的3V挑戰112
  7.4Oracle混合列壓縮113
  7.4.1倉庫壓縮114
  7.4.2存檔壓縮114
  7.5Google資料壓縮技術115
  7.5.1尋找長的重複串115
  7.5.2壓縮演算法116
  7.6Hadoop壓縮技術118
  7.6.1LZO簡介118
  7.6.2LZO原理[5]119
  7.7小結121
  參考文獻121
  第8章快取技術122
  8.1分散式快取簡介123
  8.1.1分散式快取的產生123
  8.1.2分散式快取的應用123
  8.1.3分散式快取的效能124
  8.1.4衡量可用性的標準125
  8.2分散式快取的內部機制125
  8.2.1生命期機制126
  8.2.2一致性機制126
  8.2.3直讀與直寫機制129
  8.2.4查詢機制130
  8.2.5事件觸發機制130
  8.3分散式快取的拓撲結構130
  8.3.1複製式拓撲131
  8.3.2分割式拓撲131
  8.3.3客戶端快取拓撲131
  8.4小結132
  參考文獻132
  系統篇
  第9章key—value資料庫134
  9.1key—value模型綜述134
  9.2Redis135
  9.2.1Redis概述135
  9.2.2Redis下載與安裝135
  9.2.3Redis入門操作136
  9.2.4Redis在業內的應用143
  9.3Voldemort143
  9.3.1Voldemort概述143
  9.3.2Voldemort下載與安裝144
  9.3.3Voldemort配置145
  9.3.4Voldemort開發介紹[3]147
  9.4小結149
  參考文獻149
  第10章Column—Oriented資料庫150
  10.1Column—Oriented資料庫簡介151
  10.2Bigtable資料庫151
  10.2.1Bigtable資料庫簡介151
  10.2.2Bigtable資料模型152
  10.2.3Bigtable基礎架構154
  10.3Hypertable資料庫157
  10.3.1Hypertable簡介157
  10.3.2Hypertable安裝157
  10.3.3Hypertable架構163
  10.3.4基本概念和原理164
  10.3.5Hypertable的查詢168
  10.4Cassandra資料庫175
  10.4.1Cassandra簡介175
  10.4.2Cassandra配置175
  10.4.3Cassandra資料庫的連線177
  10.4.4Cassandra叢集機制180
  10.4.5Cassandra的讀/寫機制182
  10.5小結183
  參考文獻183
  第11章文件資料庫185
  11.1文件資料庫簡介186
  11.2CouchDB資料庫186
  11.2.1CouchDB簡介186
  11.2.2CouchDB安裝188
  11.2.3CouchDB入門189
  11.2.4CouchDB查詢200
  11.2.5CouchDB的儲存結構207
  11.2.6SQL和CouchDB209
  11.2.7分散式環境中的CouchDB210
  11.3MongoDB資料庫211
  11.3.1MongoDB簡介211
  11.3.2MongoDB的安裝212
  11.3.3MongoDB入門215
  11.3.4MongoDB索引224
  11.3.5SQL與MongoDB226
  11.3.6MapReduce與MongoDB229
  11.3.7MongoDB與CouchDB對比234
  11.4小結236
  參考文獻237
  第12章圖存資料庫238
  12.1圖存資料庫的由來及基本概念239
  12.1.1圖存資料庫的由來239
  12.1.2圖存資料庫的基本概念239
  12.2Neo4j圖存資料庫240
  12.2.1Neo4j簡介240
  12.2.2Neo4j使用教程241
  12.2.3分散式Neo4j——Neo4jHA251
  12.2.4Neo4j工作機制及優缺點淺析256
  12.3GraphDB258
  12.3.1GraphDB簡介258
  12.3.2GraphDB的整體架構260
  12.3.3GraphDB的資料模型264
  12.3.4GraphDB的安裝266
  12.3.5GraphDB的使用268
  12.4OrientDB276
  12.4.1背景276
  12.4.2OrientDB是什麼276
  12.4.3OrientDB的原理及相關技術277
  12.4.4Windows下OrientDB的安裝與使用282
  12.4.5相關Web應用286
  12.5三種圖存資料庫的比較288
  12.5.1特徵矩陣288
  12.5.2分散式模式及應用比較289
  12.6小結289
  參考文獻290
  第13章基於Hadoop的資料管理系統291
  13.1Hadoop簡介292
  13.2HBase293
  13.2.1HBase體系結構293
  13.2.2HBase資料模型297
  13.2.3HBase的安裝和使用298
  13.2.4HBase與RDBMS303
  13.3Pig304
  13.3.1Pigr的安裝和使用304
  13.3.2PigLatin語言306
  13.3.3Pig例項311
  13.4Hive315
  13.4.1Hive的資料儲存316
  13.4.2Hive的元資料儲存316
  13.4.3安裝Hive317
  13.4.4HiveQL簡介318
  13.4.5Hive的網路介面(WebUI)328
  13.4.6Hive的JDBC介面328
  13.5小結330
  參考文獻331
  第14章NewSQL資料庫332
  14.1NewSQL資料庫簡介333
  14.2MySQLCluster333
  14.2.1概述334
  14.2.2MySQLCluster的層次結構336
  14.2.3MySQLCluster的優勢和應用337
  14.2.4海量資料處理中的sharding技術339
  14.2.5單機環境下MySQLCluster的安裝343
  14.2.6MySQLCluster的分散式安裝與配置指導348
  14.3VoltDB350
  14.3.1傳統關係資料庫與VoltDB351
  14.3.2VoltDB的安裝與配置351
  14.3.3VoltDB元件354
  14.3.4HelloWorld355
  14.3.5使用Generate指令碼361
  14.3.6Eclipse整合開發362
  14.4小結365
  參考文獻365
  第15章分散式快取系統366
  15.1Memcached快取技術367
  15.1.1背景介紹367
  15.1.2Memcached快取技術的特點368
  15.1.3Memcached安裝[3]374
  15.1.4Memcached中的資料操作375
  15.1.5Memcached的使用376
  15.2Micros of Velocity分散式快取系統378
  15.2.1Micros of Velocity簡介378
  15.2.2資料分類379
  15.2.3Velocity核心概念380
  15.2.4Velocity安裝382
  15.2.5一個簡單的Velocity客戶端應用385
  15.2.6擴充套件型和可用性387
  15.3小結388
  參考文獻388
  應用篇
  第16章企業應用392
  16.1Instagram393
  16.1.1Instagram如何應對資料的急劇增長395
  16.1.2Instagram的資料分片策略398
  16.2Facebook對Hadoop以及HBase的應用400
  16.2.1工作負載型別401
  16.2.2為什麼採用ApacheHadoop和HBase403
  16.2.3實時HDFS405
  16.2.4HadoopHBase的實現409
  16.3淘寶大資料解決之道411
  16.3.1淘寶資料分析412
  16.3.2淘寶大資料挑戰413
  16.3.3淘寶OceanBase資料庫414
  16.3.4淘寶將來的工作422
  16.4小結423