NoSQL實踐指南(基本原則設計準則及實用技巧)/華章程序員書庫 NoSQL实践指南:基本原则、设计准则及实用技巧

丹·蘇利文 (Dan Sullivan)

  • 出版商: 機械工業
  • 出版日期: 2016-03-01
  • 定價: $474
  • 售價: 8.5$403
  • 語言: 簡體中文
  • 頁數: 307
  • 裝訂: 平裝
  • ISBN: 7111531175
  • ISBN-13: 9787111531173
  • 相關分類: NoSQLSQL

無法訂購

買這商品的人也買了...

相關主題

商品描述

<內容簡介>


  本書作者DanSullivan使用過位於行業前沿的各種數據庫產品,在本書中,他利用20多年的工作經驗,講解了鍵值數據庫、文檔數據庫、列族數據庫及圖數據庫這四類NoSQL數據庫的優點、用例及術語。對於每一種數據庫,他都給出了務實的開發技巧,以幫助大家構建高價值的應用程序。通過分步講解的範例,讀者能夠學到如何為每項任務選擇合適的數據庫,以及怎樣用正確的方式來使用該數據庫。

<目錄>

譯者序
前言
致謝
引言
第一部分入門
第1章用不同的數據庫應對不同的需求2
1.1關係型數據庫的設計3
1.2早期的數據管理系統4
1.2.1平面文件數據管理系統4
1.2.2分層數據模型系統7
1.2.3網絡數據管理系統9
1.2.4早期數據管理系統小結11
1.3引髮變革的關係型數據庫11
1.4催生NoSQL數據庫(非單純的SQL數據庫/非SQL數據庫)的動因18
1.4.1可伸縮性18
1.4.2成本開銷19
1.4.3靈活性19
1.4.4可用性20
1.5小結20
1.6案例研究21
1.7複習題21
1.8引用資料22
1.9參考書目22
第2章NoSQL數據庫的種類23
2.1分佈式數據庫的數據管理24
2.1.1持久地存儲數據25
2.1.2維護數據的一致性25
2.1.3確保數據的可用性26
2.1.4在響應時間、一致性與持久性之間尋求平衡29
2.1.5 CAP定理:一致性、可用性及分區保護性31
2.2 ACID與BASE 32
2.2.1 ACID:原子性、一致性、隔離性、持久性33
2.2.2 BASE:基本可用、軟狀態、最終一致33
2.2. 3最終一致性的類型34
2.3四種NoSQL數據庫類型35
2.3.1鍵值對數據庫36
2.3.2文檔數據庫40
2.3.3列族數據庫42
2.3.4圖數據庫43
2.4小結45
2.5複習題46
2.6引用資料47
2.7參考書目47
第二部分鍵值數據庫
第3章鍵值數據庫簡介50
3.1從數組到鍵值數據庫的演變51
3.1.1數組(帶著輔助輪的鍵值數據存儲機制) 51
3.1.2關聯數組(拿掉輔助輪的鍵值數據存儲機制) 52
3.1.3緩存(加裝了齒輪的自行車) 53
3.1.4內存和磁盤中的鍵值數據庫(從自行車到機動車) 55
3.2鍵值數據庫的重要特性56
3.2.1簡潔:開發者不需要設計複雜的數據模型56
3.2.2速度:越快越好57
3.2.3易於縮放:隨時應對訪問量的變化59
3.3鍵:不只是無意義的標識符63
3.3.1如何構造鍵名63
3.3.2通過鍵來定位相關的值65
3.4值:存放任意數據68
3.4.1值不一定要有明確的類型68
3.4.2對值進行搜索時的一些限制69
3.5小結70
3.6複習題71
3.7引用資料71
3.8參考書目72
第4章鍵值數據庫的術語73
4.1與鍵值數據庫的數據建模有關的術語74
4.1.1鍵75
4.1.2值77
4.1.3命名空間77
4.1.4分區78
4.1.5分區鍵80
4.1.6無綱要的模型80
4.2與鍵值數據庫的架構有關的術語81
4.2.1集群81
4.2.2環82
4.2.3複製84
4.3與鍵值數據庫的實現有關的術語84
4.3.1哈希函數84
4.3.2碰撞86
4.3.3壓縮86
4.4小結87
4.5複習題87
4.6引用資料88
第5章鍵值數據庫的設計89
5.1鍵的設計與分區90
5.1.1鍵名應該遵循命名約定90
5.1.2設計良好的鍵名,以簡化程序的代碼91
5.1.3處理位於某個範圍內的值92
5.1.4設計鍵名時必須考慮實現層面的限制93
5.1.5如何根據鍵名來分區94
5.2設計結構化的值95
5.2.1結構化的數據類型有助於降低延遲95
5.2.2過於龐大的值可能會降低讀取操作和寫入操作的性能97
5.3鍵值數據庫的局限99
5.3.1只能通過鍵來查詢數據100
5.3.2鍵值數據庫不支持查詢位於某個範圍內的值100
5.3.3不支持像關係型數據庫所使用的那種SQL式標準查詢語言101
5.4適用於鍵值數據庫的設計模式101
5.4.1 TTL鍵102
5.4.2模擬關係型數據庫的表格103
5.4.3聚合104
5.4.4原子聚合105
5.4.5可枚舉的鍵106
5.4.6索引107
5.5小結108
5.6案例研究:用鍵值數據庫管理移動應用程序的配置108
5.7複習題110
5.8引用資料111
第三部分文檔數據庫
第6章文檔數據庫簡介114
6.1何謂文檔115
6.1.1文檔沒有那麼簡單115
6.1.2文檔與鍵值對118
6.1.3以集合的形式來管理多份文檔118
6.2文檔數據庫無需定義顯式綱要125
6.3文檔數據庫的基本操作127
6.3.1向集合中插入文檔128
6.3.2從集合中刪除文檔129
6.3.3更新集合中的文檔130
6.3.4從集合中獲取文檔131
6.4小結132
6.5複習題132
6.6引用資料133
第7章文檔數據庫的術語134
7.1與文檔和集合有關的術語135
7.1.1文檔135
7.1.2集合137
7.1.3嵌入式文檔137
7.1.4無綱要的數據庫138
7.1.5多形的綱要141
7.2與分區類型有關的術語141
7.2.1垂直分區142
7.2.2水平分區或分片143
7.3與數據建模及查詢處理有關的術語146
7.3.1規範化146
7.3.2去規範化148
7.3.3查詢處理器148
7.4小結149
7.5複習題149
7.6引用資料150
第8章文檔數據庫的設計151
8.1在規範化與去規範化之間求得平衡152
8.1.1一對多關係153
8.1.2多對多關係153
8.1.3有時需要對多張表格執行join操作154
8.1.4在關係型數據庫中執行join操作的開銷可能會比較大155
8.1.5文檔數據庫的建模者應該怎樣做157
8.2應對可變的文檔161
8.3編制數量適中的索引164
8.3.1讀取操作相對較多的應用程序164
8.3.2寫入操作相對較多的應用程序164
8.4為常見的關係建模166
8.4.1文檔數據庫的一對多關係166
8.4.2文檔數據庫的多對多關係166
8.4.3為文檔數據庫中的層級關係建模168
8.5小結169
8.6案例研究:客戶的貨物清單170
8.6.1是否使用嵌入式文檔171
8.6. 2選定所要編制的索引172
8.6.3是否需要把各類清單分別放在不同的集合中172
8.7複習題172
8.8引用資料173
第四部分列族數據庫
第9章列族數據庫簡介176
9.1較早出現的列族數據庫:Google BigTable 177
9.1.1動態地控制列族中的列178
9.1.2根據行ID、列名及時間戳來確定數據值179
9.1.3控制數據的存儲位置179
9.1.4同一行內的讀取和寫入行為都是原子操作180
9.1.5數據行之間按順序排列180
9.2列族數據庫與鍵值數據庫及文檔數據庫的異同181
9.2.1列族數據庫與鍵值數據庫的異同182
9.2.2列族數據庫與文檔數據庫的異同182
9.2.3列族數據庫與關係型數據庫的對比183
9.3列族數據庫所使用的架構186
9.3.1 HBase數據庫採用由多種節點所組成的架構186
9.3.2 Cassandra數據庫採用由對等節點所組成的架構187
9.3.3依照Gossip協議來傳播各服務器的狀態188
9.3.4用熱力學術語來談分佈式數據庫為什麼需要反熵189
9.3.5通過提示移交機制,替發生故障的節點保留與寫入請求有關的信息190
9.4列族數據庫的適用場合192
9.5小結192
9.6複習題193
9.7引用資料193
第10章列族數據庫的術語194
10.1列族數據庫的基本組件195
10.1.1鍵空間195
10.1.2行鍵195
10.1.3列196
10.1.4列族196
10.2實現列族數據庫所用的結構及相關流程197
10.2.1列族數據庫的內部結構及配置參數198
10.2.2分佈式數據庫常用的術語:集群與分區198
10.2.3列族數據庫的其他底層組件199
10.3處理流程及協議203
10.3.1複製203
10.3.2反熵203
10.3.3 Gossip協議204
10.3 .4提示移交205
10.4小結205
10.5複習題206
10.6引用資料206
第11章列族數據庫的設計207
11.1與設計數據表格有關的建議209
11.1.1用去規範化來代替連接209
11.1.2善用無值的列210
11.1.3同時在列名和列值之中存儲數據211
11.1.4用一個數據行來為一個實體建模211
11.1.5設計行鍵時不要將大量操作分配給少數服務器212
11.1. 6維護適當數量的列值版本213
11.1.7不要在列值中使用複雜的數據結構213
11.2與編制索引有關的建議214
11.2.1何時應該使用由列族數據庫系統自動管理的輔助索引215
11.2 .2何時應該用表格來創建並管理輔助索引217
11.3應對大數據的工具220
11.3.1萃取、轉置並加載數據220
11.3.2分析大數據221
11.3.3監控大數據所用的工具224
11.4小結224
11.5案例研究:客戶數據分析225
11.6複習題226
11.7引用資料227
第五部分圖數據庫
第12章圖數據庫簡介230
12.1什麼是圖230
12.2用圖對網絡關係進行建模231
12.2.1對地理位置進行建模231
12.2.2對傳染病進行建模232
12.2.3對抽象和具體的實體進行建模233
12.2.4對社交媒體進行建模234
12.3圖數據庫的優勢235
12.3.1圖數據庫不需要執行連接操作,因而可以更快地進行查詢235
12.3.2建模過程較為簡單237
12.3.3可以為實體之間的多種關係進行建模237
12.4小結238
12.5複習題238
12.6引用資料238
第13章圖數據庫的術語239
13.1圖的元素240
13.1.1頂點240
13.1.2邊240
13.1.3路徑242
13.1.4自環242
13.2圖的操作242
13.2.1圖的並集243
13.2.2圖的交集243
13.2.3圖的遍歷243
13.3圖和節點的屬性244
13.3.1同構性244
13.3.2階 ​​與尺寸245
13.3.3度數245
13.3.4接近中心性245
13.3.5中介性246
13.4圖的類型246
13.4.1無向圖和有向圖247
13.4.2流動網絡247
13.4.3二分圖248
13.4.4多重圖248
13.4.5加權圖248
13.5小結249
13.6複習題249
13.7引用資料249
第14章圖數據庫的設計250
14.1開始設計圖模型250
14.1.1設計一個描述社交網絡的圖數據庫251
14.1.2再次用查詢請求來引領模型設計254
14.2對圖進行查詢255
14.2.1 Cypher:聲明式的查詢256
14.2.2 Gremlin:通過遍歷圖模型來進行查詢257
14.3圖數據庫的設計技巧及註意事項260
14.3.1用索引來縮短獲取數據的時間260
14.3.2使用類型適當的邊260
14.3. 3遍歷圖模型時要註意循環路徑261
14.3.4考慮圖數據庫的擴展問題262
14.4小結263
14.5案例研究:優化運輸路線263
14.5.1掌握用戶的需求263
14.5.2設計一套圖模型分析方案263
14.6複習題264
14.7引用資料265
第六部分選擇適合應用程序的數據庫
第15章如何選擇數據庫268
15.1選擇NoSQL數據庫269
15.1.1何時應該使用鍵值數據庫270
15.1.2文檔數據庫的用例及適用場合270
15.1.3列族數據庫的用例及適用場合271
15.1.4圖數據庫的用例及適用場合272
15.2將NoSQL數據庫與關係型數據庫結合起來使用273
15.3小結274
15.4複習題274
15.5引用資料274
第七部分附錄
附錄A各章複習題的參考答案278
附錄B NoSQL數據庫列表298
術語表303