出版時間:2012-11 出版社:人民郵電出版社 作者:Shashank Tiwari 頁數(shù):294 字數(shù):455000 譯者:巨成
Tag標簽:無
前言
隨著用戶內(nèi)容的增長,所生成、處理、分析和歸檔的數(shù)據(jù)的規(guī)??焖僭龃?,類型也快速增多。此外,一些新數(shù)據(jù)源也在生成大量數(shù)據(jù),比如傳感器、全球定位系統(tǒng)(GPS)、自動追蹤器和監(jiān)控系統(tǒng)。這些大數(shù)據(jù)集通常被稱為大數(shù)據(jù),它們給存儲、分析和歸檔帶來了新的機遇與挑戰(zhàn)?! ?shù)據(jù)不僅僅快速增長,而且半結構化和稀疏的趨勢也很明顯。這樣一來,預定義好schema和利用關系型引用的傳統(tǒng)數(shù)據(jù)管理技術就受到了挑戰(zhàn)?! ≡谔剿骱A繑?shù)據(jù)和半結構化數(shù)據(jù)相關問題的過程中,誕生了一系列新型數(shù)據(jù)庫產(chǎn)品,其中包括列族數(shù)據(jù)庫(column-oriented data store)、鍵/值數(shù)據(jù)庫和文檔數(shù)據(jù)庫,這些數(shù)據(jù)庫統(tǒng)稱NoSQL?! oSQL產(chǎn)品千變?nèi)f化,特性和價值主張各有不同,因此常常難以選擇。本書能幫助你理解整個NoSQL領域。書中展示了構建許多NoSQL產(chǎn)品的基本概念,覆蓋了相對較多的NoSQL產(chǎn)品,而非單單深入介紹某一種產(chǎn)品。本書主要關注廣度和基本概念,而不是全面覆蓋每一種產(chǎn)品的API。因為要介紹不少NoSQL產(chǎn)品,所以會涉及大量的比較分析。 如果不確定如何開始用NoSQL以及如何學習管理和分析大數(shù)據(jù),那么你會發(fā)現(xiàn)本書是一本很好的入門指南和參考用書?! ∽x者對象 本書的主要目標讀者是開發(fā)者、架構師、數(shù)據(jù)庫管理員以及技術項目經(jīng)理,但任何理解數(shù)據(jù)庫技術的人可能都會覺得本書很有幫助?! ∮嬎銠C專業(yè)的許多學生和研究員也會對大數(shù)據(jù)和NoSQL這一主題感興趣,他們會因閱讀本書而獲益良多。 任何開始進行大數(shù)據(jù)分析和使用NoSQL的人也都能從本書中受益。 本書內(nèi)容 本書首先介紹NoSQL的基礎知識,然后逐步過渡到圍繞性能調(diào)優(yōu)和架構性指引的高階概念上。我們主要關注與NoSQL相關的基本概念,并以許多不同的NoSQL產(chǎn)品為例來解釋它們。書中包括了有關MongoDB、CouchDB、HBase、Hypertable、Cassandra、Redis和BerkeleyDB的演示和樣例,此外還包括其他一些NoSQL產(chǎn)品?! oSQL很重要的一部分就是大數(shù)據(jù)處理。本書將介紹基于MapReduce的可伸縮處理,演示Hadoop用例,還有Hive和Pig這樣的高層抽象。 第10章關注云NoSQL,介紹Amazon Web Service和Google App Engine提供的平臺?! ”緯S多用例演示,同時也會討論Google、Amazon、Facebook、Twitter和LinkedIn的可伸縮數(shù)據(jù)架構。 在最后一部分中,本書會比較NoSQL產(chǎn)品,討論不同產(chǎn)品在應用程序棧中共存的話題?! ”緯Y構 本書分為四大部分: NoSQL入門 NoSQL基礎 熟悉NoSQL 掌握NoSQL 每部分的內(nèi)容都是以前一部分為基礎的。 第一部分為NoSQL入門,定義了NoSQL產(chǎn)品的類型,并初次介紹了用NoSQL存儲和訪問數(shù)據(jù)的幾個例子。 第1章定義NoSQL?! 〉?章以超經(jīng)典的Hello World程序開頭,介紹了幾個使用NoSQL的例子?! 〉?章介紹NoSQL產(chǎn)品交互與接口?! 〉诙糠纸榻B了各種NoSQL產(chǎn)品的一些基本概念?! 〉?章解釋存儲架構。 第5章和第6章介紹基本的數(shù)據(jù)管理,演示CRUD操作和查詢機制。數(shù)據(jù)集隨時間和使用情況而演變?! 〉?章探討數(shù)據(jù)演變相關的問題。傳統(tǒng)的關系型數(shù)據(jù)庫關注利用索引來優(yōu)化查詢?! 〉?章介紹NoSQL下的索引。對NoSQL產(chǎn)品缺少事務支持的批評往往過頭?! 〉?章陳清事務相關概念,以及分布式系統(tǒng)所面臨的事務完整性挑戰(zhàn)?! 〉谌⑺牟糠纸榻B高階話題?! 〉?0章介紹Google App Engine數(shù)據(jù)存儲和Amazon SimpleDB。很多大數(shù)據(jù)處理有賴于MapReduce風格的處理方式?! 〉?1章介紹MapReduce的基本知識?! 〉?2章擴展了MapReduce的覆蓋范圍,以演示Hive為Hadoop MapReduce任務提供的類SQL抽象。第13章回顧了數(shù)據(jù)庫架構及內(nèi)部結構?! 〉谖宀糠质潜緯淖詈笠徊糠?。第14章比較NoSQL產(chǎn)品;第15章提出了共存的想法,以及按需選擇數(shù)據(jù)庫的觀點;第16章談論可伸縮應用程序的優(yōu)化。本部分的話題看似駁雜,卻為實際應用NoSQL打下了基礎。第17章展示一些工具和實用程序,部署NoSQL時用得上。 閱讀必備 請參照各處代碼示例安裝相應的軟件,安裝步驟和設置說明參見附錄A?! ”緯s定 為了描述得更加清楚明了,在本書中我們有如下約定?! ”靖袷奖硎踞槍δ壳坝懻搩?nèi)容的注釋、小技巧、提示等。 段落樣式如下。 楷體表示新詞及重點詞?! ∥募RL和書中的代碼使用如下這種字體:persistence.properties。 代碼有兩種展示方法:大部分代碼樣例使用monofont字體,無高亮;當前上下文中重要的代碼以及與之前代碼段不同的代碼加粗顯示。 源代碼 對于本書所有例子中的代碼,你可以手工輸入,也可以使用本書附帶的源碼文件。所有源碼可下載。在網(wǎng)站上通過本書書名(使用檢索框或書名列表)進入本書的詳情頁,點擊下載代碼的鏈接即可獲取源碼。網(wǎng)站上包含的代碼都附有下面的圖標: 代碼示例的標題里包含源碼文件名。如果只是代碼片段,則文件名如是: Code snippet flename 因為很多書名很相似,所以按ISBN號可能查起來更容易。本書ISBN號是978-0-470-94224-6?! ∠螺d好的代碼可以用解壓縮工具打開。除此之外,在下載頁面也能看到本書及Wrox其他圖書的代碼?! 】闭` 雖然我們盡全力消除文本和代碼中的所有錯誤,但錯誤總是難以避免的。如果你發(fā)現(xiàn)了本書的錯誤,比如拼寫錯誤或問題代碼,請反饋給我們,非常感謝!如果你能指出一個問題,也許就能避免另一位讀者的困惑,同時也能幫助我們提高本書的質(zhì)量?! ∫巴緯目闭`,通過書名進入本書的詳情頁,然后點擊勘誤(Book Errata)鏈接。在該頁面中,你可以看到由讀者提交并由Wrox編者發(fā)布的本書的所有勘誤。要想獲得完整的圖書列表及每本書的勘誤鏈接,也可以訪問?! ∪绻诳闭`頁上沒找到你發(fā)現(xiàn)的錯誤,填寫表單提交你發(fā)現(xiàn)的錯誤。我們會盡快確認信息,如果勘誤正確,會在勘誤頁上發(fā)布,并在本書的后續(xù)版本中修正問題?! ∪粝肱c包括本書作者在內(nèi)的同行們討論,請加入P2P論壇。這個Web論壇主要用于發(fā)布Wrox圖書信息及相關技術消息,以及與其他讀者及技術用戶互動。論壇提供主題訂閱功能,選定了自己感興趣的主題后,每當有相應主題的新帖發(fā)布時,論壇會以電子郵件的形式通知你。Wrox作者、編者、其他行業(yè)專家和讀者都會在這里活動?! ∧銜l(fā)現(xiàn)一系列不同的論壇,它們不僅對你閱讀本書有所幫助,同樣也能在你開發(fā)應用時提供幫助。加入論壇請參照下面的步驟。 (1) 點擊注冊鏈接?! ?2) 閱讀使用守則并點擊“同意”。 (3) 輸入必填信息及其他你樂于提供的可選信息,并點擊“提交”?! ?4) 你會收到一封郵件,其中描述了如何確認你的賬戶和完成加入論壇的流程?! ¢喿x消息無需在P2P上注冊,但如果要發(fā)布消息,就必須加入論壇。 加入論壇后,可以發(fā)布新消息和回復他人發(fā)布的消息。任何時候你都可以通過Web瀏覽論壇。如果希望通過電子郵件接收特定論壇的新消息,請在論壇列表中點擊論壇名稱旁邊的“訂閱本論壇”圖標?! ∫私飧嘤嘘PWrox P2P的信息,請閱讀P2P FAQ(點擊P2P頁面上的FAQ鏈接)了解論壇使用方法,以及P2P和Wrox圖書常見問題。
內(nèi)容概要
《深入NoSQL》是一本全面的NoSQL實踐指南。書中主要關注NoSQL的基本概念,以及使用NoSQL數(shù)據(jù)庫的切實可行的解決方案。書中介紹了基于MapReduce的可伸縮處理,演示Hadoop用例,還有Hive和Pig這樣的高層抽象?!渡钊隢oSQL》包含許多用例演示,同時也會討論Google、Amazon、Facebook、Twitter和LinkedIn的可伸縮數(shù)據(jù)架構。
《深入NoSQL》適合NoSQL數(shù)據(jù)庫管理人員和開發(fā)人員閱讀。
作者簡介
Shashank Tiwari,創(chuàng)業(yè)者、開發(fā)者、技術作家、演講者和導師,技術性創(chuàng)業(yè)公司Treasury of
ldeas的創(chuàng)始人。他是一位經(jīng)驗豐富的軟件開發(fā)者和企業(yè)家,長期關注高性能應用、分析、Web應用以及移動平臺,對數(shù)據(jù)可視化和統(tǒng)計機器學習有著濃厚的興趣,喜歡喝咖啡、吃甜點、騎自行車。他撰寫了許多技術文章和著作,并且應邀在全球各地的技術會議上進行演講。
書籍目錄
第一部分 NoSQL入門
第1章 NoSQL的概念及適用范圍
1.1 定義和介紹
1.1.1 背景與歷史
1.1.2 大數(shù)據(jù)
1.1.3 可擴展性
1.1.4 MapReduce
1.2 面向列的有序存儲
1.3 鍵/值存儲
1.4 文檔數(shù)據(jù)庫
1.5 圖形數(shù)據(jù)庫
1.6 小結
第2章 NoSQL上手初體驗
2.1 第一印象——兩個簡單的例子
2.1.1 簡單的位置偏好數(shù)據(jù)集
2.1.2 存儲汽車品牌和型號數(shù)據(jù)
2.2 使用多種語言
2.2.1 MongoDB驅動
2.2.2 初識Thrift
2.3 小結
第3章 NoSQL接口與交互
3.1 沒了SQL還剩什么
3.1.1 存儲和訪問數(shù)據(jù)
3.1.2 MongoDB數(shù)據(jù)存儲與訪問
3.1.3 MongoDB數(shù)據(jù)查詢
3.1.4 Redis數(shù)據(jù)存儲與訪問
3.1.5 Redis數(shù)據(jù)查詢
3.1.6 HBase數(shù)據(jù)存儲與訪問
3.1.7 HBase數(shù)據(jù)查詢
3.1.8 Apache Cassandra數(shù)據(jù)存儲與訪問
3.1.9 Apache Cassandra數(shù)據(jù)查詢
3.2 NoSQL數(shù)據(jù)存儲的語言綁定
3.2.1 Thrift
3.2.2 Java
3.2.3 Python
3.2.4 Ruby
3.2.5 PHP
3.3 小結
第二部分 NoSQL基礎
第4章 理解存儲架構
4.1 使用面向列的數(shù)據(jù)庫
4.1.1 使用關系型數(shù)據(jù)庫中的表格和列
4.1.2 列數(shù)據(jù)庫對比RDBMS
4.1.3 列數(shù)據(jù)庫當做鍵/值對的嵌套映射表
4.1.4 Webtable布局
4.2 HBase分布式存儲架構
4.3 文檔存儲內(nèi)部機制
4.3.1 用內(nèi)存映射文件存儲數(shù)據(jù)
4.3.2 MongoDB集合和索引使用指南
4.3.3 MongoDB的可靠性和耐久性
4.3.4 水平擴展
4.4 鍵/值存儲Memcached和Redis
4.4.1 Memcached的內(nèi)部結構
4.4.2 Redis的內(nèi)部結構
4.5 最終一致性非關系型數(shù)據(jù)庫
4.5.1 一致性哈?!?br />4.5.2 對象版本
4.5.3 閑話協(xié)議和提示移交
4.6 小結
第5章 執(zhí)行CRUD操作
5.1 創(chuàng)建記錄
5.1.1 在以文檔為中心的數(shù)據(jù)庫中創(chuàng)建記錄
5.1.2 面向列數(shù)據(jù)庫的創(chuàng)建操作
5.1.3 鍵/值映射表的創(chuàng)建操作
5.2 訪問數(shù)據(jù)
5.2.1 用MongoDB訪問文檔
5.2.2 用HBase訪問數(shù)據(jù)
5.2.3 查詢Redis
5.3 更新和刪除數(shù)據(jù)
5.3.1 使用MongoDB、HBase和Redis更新及修改數(shù)據(jù)
5.3.2 有限原子性和事務完整性
5.4 小結
第6章 查詢NoSQL存儲
6.1 SQL與MongoDB查詢功能的相似點
6.1.1 加載MovieLens數(shù)據(jù)
6.1.2 MongoDB中的MapReduce
6.2 訪問HBase等面向列數(shù)據(jù)庫中的數(shù)據(jù)
6.3 查詢Redis數(shù)據(jù)存儲
6.4 小結
第7章 修改數(shù)據(jù)存儲及管理演進
7.1 修改文檔數(shù)據(jù)庫
7.1.1 弱schema的靈活性
7.1.2 MongoDB的數(shù)據(jù)導入與導出
7.2 面向列數(shù)據(jù)庫中數(shù)據(jù)schema的演進
7.3 HBase數(shù)據(jù)導入與導出
7.4 鍵/值存儲中的數(shù)據(jù)演變
7.5 小結
第8章 數(shù)據(jù)索引與排序
8.1 數(shù)據(jù)庫索引的基本概念
8.2 MongoDB的索引與排序
8.3 MongoDB里創(chuàng)建和使用索引
8.3.1 組合與嵌套鍵
8.3.2 創(chuàng)建唯一索引和稀疏索引
8.3.3 基于關鍵字的搜索和多重鍵
8.4 CouchDB的索引與排序
8.5 Apache Cassandra的索引與排序
8.6 小結
第9章 事務和數(shù)據(jù)完整性的管理
9.1 RDBMS和ACID
9.2 分布式ACID系統(tǒng)
9.2.1 一致性
9.2.2 可用性
9.2.3 分區(qū)容忍性
9.3 維持CAP
9.3.1 妥協(xié)可用性
9.3.2 妥協(xié)分區(qū)容忍性
9.3.3 妥協(xié)一致性
9.4 NoSQL產(chǎn)品的一致性實現(xiàn)
9.4.1 MongoDB的分布一致性
9.4.2 CouchDB的最終一致性
9.4.3 Apache Cassandra的最終一致性
9.4.4 Membase的一致性
9.5 小結
第三部分 熟悉NoSQL
第10章 使用云中的NoSQL
10.1 Google App Engine
10.1.1 GAE Python SDK:安裝、設置和起步
10.1.2 使用Python進行基本的GAE數(shù)據(jù)建模
10.1.3 查詢與索引
10.1.4 過濾和結果排序
10.1.5 Java App Engine SDK
10.2 Amazon SimpleDB
10.2.1 SimpleDB入門
10.2.2 使用REST API
10.2.3 使用Java訪問SimpleDB
10.2.4 通過Ruby和Python使用SimpleDB
10.3 小結
第11章 MapReduce可擴展并行處理
11.1 理解MapReduce
11.1.1 找出每股最高價
11.1.2 加載歷史NYSE市場數(shù)據(jù)到CouchDB
11.2 MapReduce和HBase
11.3 MapReduce和Apache Mahout
11.4 小結
第12章 使用Hive分析大數(shù)據(jù)
12.1 Hive基礎
12.2 回到電影評分
12.3 親切的SQL
12.4 HiveQL連接
12.4.1 計劃解釋
12.4.2 分區(qū)表
12.5 小結
第13章 綜覽數(shù)據(jù)庫內(nèi)部
13.1 MongoDB內(nèi)部
13.1.1 MongoDB傳輸協(xié)議
13.1.2 插入文檔
13.1.3 查詢集合
13.1.4 MongoDB數(shù)據(jù)庫文件
13.2 Membase架構
13.3 Hypertable底層
13.3.1 正則表達式支持
13.3.2 布隆過濾器
13.4 Apache Cassandra
13.4.1 點對點模型
13.4.2 基于Gossip和Antientropy
13.4.3 快速寫
13.4.4 提示移交
13.5 Berkeley DB
13.6 小結
第四部分 掌握NoSQL
第14章 選擇NoSQL
14.1 比較NoSQL產(chǎn)品
14.1.1 可擴展性
14.1.2 事務完整性和一致性
14.1.3 數(shù)據(jù)模型
14.1.4 查詢支持
14.1.5 接口可用性
14.2 性能測試
14.2.1 50/50的讀和更新
14.2.2 95/5的讀和更新
14.2.3 掃描
14.2.4 可擴展性測試
14.2.5 Hypertable測試
14.3 背景比較
14.4 小結
第15章 共存
15.1 MySQL用作NoSQL
15.2 靜態(tài)數(shù)據(jù)存儲
15.2.1 存儲多元化在Facebook中的應用
15.2.2 數(shù)據(jù)倉庫和商業(yè)智能
15.3 Web框架和NoSQL
15.3.1 Rails和NoSQL
15.3.2 Django和NoSQL
15.3.3 使用Spring Data
15.4 從RDBMS遷移到NoSQL
15.5 小結
第16章 性能調(diào)校
16.1 并行算法的目標
16.1.1 減少延遲的含義
16.1.2 如何增加吞吐
16.1.3 線性擴展
16.2 公式與模型
16.2.1 Amdahl法則
16.2.2 Little法則
16.2.3 消息成本模型
16.3 分區(qū)
16.4 規(guī)劃異構環(huán)境
16.5 其他MapReduce調(diào)?!?br />16.5.1 通信成本
16.5.2 壓縮
16.5.3 文件塊大小
16.5.4 并行復制
16.6 HBase Coprocessor
16.7 布隆過濾器
16.8 小結
第17章 工具和實用程序
17.1 RRDTool
17.2 Nagios
17.3 Scribe
17.4 Flume
17.5 Chukwa
17.6 Pig
17.6.1 使用Pig
17.6.2 Pig Latin基礎
17.7 Nodetool
17.8 OpenTSDB
17.9 SOLANDRA
17.10 Hummingbird和C5T
17.11 GeoCouch
17.12 Alchemy Database
17.13 Webdis
17.14 小結
附錄A 安裝與配置
章節(jié)摘錄
版權頁: 插圖: 現(xiàn)在,隨著隔離級別設置為可重復讀取,步驟1和步驟4返回給事務1的數(shù)據(jù)集并不一樣。在步驟4中,除原來的三條記錄外,還能看到id為4的記錄。為了避免幻象讀,需要為讀施加范圍鎖并使用最高級別的隔離:可序列化。可序列化意味著順序處理,或者說串行的事務處理,但事實并非總是如此。在一些數(shù)據(jù)庫里,可序列化隔離是通過快照來實現(xiàn)的。這些數(shù)據(jù)庫在每個事務開始時為事務提供一個快照,然后只允許那些自創(chuàng)建快照以來沒有發(fā)生任何改變的事務進行提交。 使用更高的隔離級別會增大餓死(starvation)和死鎖的可能性。一個事務鎖住了其他事務要使用的資源時會發(fā)生餓死,而兩個并發(fā)事務相互等待對方釋放資源時會發(fā)生死鎖。 回顧完ACID事務和隔離級別的概念,現(xiàn)在可以開始探討如何在高度分布式系統(tǒng)里運用這些想法了。 9.2 分布式ACID系統(tǒng) 要理解ACID是否適用于分布式系統(tǒng),首先要了解分布式系統(tǒng)的各種屬性,看看ACID對它們有哪些影響。 分布式系統(tǒng)有各種不同的形狀、大小和形式,但是它們都具備幾個典型特征,并且也面臨相似的復雜性問題。隨著分布式系統(tǒng)逐漸增大并伸展出去,復雜性的挑戰(zhàn)更為突出。不止如此,如果系統(tǒng)需要提供高可用性,那么挑戰(zhàn)會成倍增加。
編輯推薦
云計算時代關鍵數(shù)據(jù)庫技術全面展示NoSQL基礎概念和實踐方案 理解大數(shù)據(jù)的各種技術架構和思想 全面的NoSQL實踐指南
圖書封面
圖書標簽Tags
無
評論、評分、閱讀與下載