當前位置:
首頁 > 最新 > MongoDB數據建模-前言

MongoDB數據建模-前言

NoSQL資料庫

MongoDB數據建模

Focuson data usage and better design schemas with the help of MongoDB.

(在MongoDB的幫助下,關注數據運用和更好的設計模式。)

註:本書為IT從業者崔傳新之獨立個人翻譯,或有不足,請不吝斧正,3Q~

書籍封面

前言

即便是今天,依然可以說計算機科學依然是年輕而新興的領域。然而,當我們觀察其他領域時,這幾句話變得有些矛盾了。與其他領域不同,計算機科學是一門不斷超越正常速度發展的學科。我敢說,計算機科學現在已經為醫藥和工程等其他領域設定了進化的道路。在這種情況下,作為計算機科學學科領域的資料庫系統不僅有助於其他領域的發展,而且還利用自身的計算機網路和計算機存儲等技術領域的發展和進步。

從形式上看,自20世紀60年代以來,資料庫系統一直是一個活躍的研究課題。從那以後,我們經歷了幾代人,IT行業的大佬已經出現並開始主宰市場的趨勢。

在2000年代,在全球互聯網接入增長的驅動,隨著社交網路繁榮創造了新的網路流量輪廓,NoSQL這個詞變得很普遍。許多人認為這是一個矛盾的和有爭議的話題,有人認為它是被開發出來的一種新的時代技術,以應對我們在過去十年中所經歷的所有變化。

MongoDB是這些技術之一。它出生於21世紀初,成為世界上最流行的NoSQL資料庫。不僅是世界上最流行的資料庫,自2015年2月以來,根據DB-Engines排名(http//db-engines.com/en/),MongoDB成為第四大熱門資料庫系統,超越了著名的PostgreSQL資料庫。

儘管如此,人氣不應該與採用相混淆。雖然DB-Engines排名告訴我們,MongoDB增進了谷歌等搜索引擎上的一些流量,有搜索作業活動,並有大量的社交媒體活動,但我們無法說明有多少應用程序正在使用MongoDB作為數據源。實際上,這不是MongoDB獨有的,但是每一個NoSQL技術都是如此。

好消息是採用MongoDB並不是一個非常艱難的決定。它是開源的,所以你可以從MongoDBInc.(https//www.mongodb.com)免費下載它,你可以在這裡找到大量的文檔。你也可以依靠一個龐大而不斷發展的社區,像你一樣,他們一直在尋找書籍、博客和論壇上的新內容;分享知識和發現;併合作增加MongoDB進化。

MongoDB數據建模的目的是成為您的另一個研究和參考資料。其中,我們將介紹用於使用MongoDB創建可伸縮數據模型的技術和模式。我們將通過基本的資料庫建模概念,並提供關於MongoDB建模的總體概述。最後,你會看到一個現實生活中的問題的分步建模實例。

除了主要具有一些MongoDB背景的資料庫管理員將利用MongoDB數據建模,還可包括從開發人員到所有下載MongoDB的好奇者的每個人都將充分利用它建模。

本書重點介紹MongoDB的3.0版本。MongoDB 3.0被社區期待已久,被MongoDB Inc.認為是迄今為止最重要的版本。這是因為在這個版本中,我們被引入了新的高度靈活的存儲架構WiredTiger。性能和可伸縮性的增強旨在強化MongoDB在資料庫系統技術中的重要性,並將其定位為現代應用程序的標準資料庫。

本書覆蓋內容

第1章,介紹數據建模,向您介紹基本的數據建模概念和NoSQL時局。

第2章,MongoDB數據建模,為您提供了MongoDB面向文檔的體系結構的概覽,並向您展示了文檔,其特性以及如何構建它。

第3章,查詢文檔,指導您通過MongoDBAPI查詢文檔,並向您展示查詢如何影響我們的數據建模過程。

第4章,索引,闡釋如何改進查詢的執行,並因此改變了我們通過使用索引來模型化數據的方式。

第5章,優化查詢,可幫助您使用MongoDB的本地化工具優化查詢。

第6章,數據管理,聚焦於數據的維護。這將教會你在開始數據建模之前查看數據操作和管理是多麼重要。

第7章,擴展性,展現MongoDB強大的自動共享特性,以及我們如何考慮數據模型的分布性。

第8章,MongoDB日誌記錄和實時分析,帶您完成現實生活問題的示例模式設計。

本書準備

要成功理解本書的每一章,您需要訪問MongoDB 3.0資料庫的實例。

您可以選擇在哪裡以及如何運行它。我們知道有很多方法可以做到。所以,選一個。

為了執行這些查詢和命令,我建議你在mongo shell上執行此操作。每次我在mongo shell之外執行此操作時,我都會提醒你。

在第8章,使用MongoDB進行日誌記錄和實時分析時,您需要在您的計算機上安裝Node.js,並且它應該可以訪問MongoDB實例。

本書適用於

本書假設您已經有過與MongoDB的一次接觸,並且有一些JavaScript經驗。本書面向資料庫管理員、開發人員或任何正在尋找一些數據建模概念以及它們如何適應MongoDB世界的人員。它不會教你JavaScript或如何在你的機器上安裝MongoDB。如果您是MongoDB初學者,可以找到很好的Packt Publishing書籍,這些書籍將幫助您獲得足夠的經驗,以更好地理解本書。

約定

在本書中,您將找到許多區分不同類型信息的文本樣式。以下是這些樣式的一些示例以及其含義的解釋。

文本中的代碼詞語、資料庫表名、文件夾名稱、文件名、文件擴展名、路徑名、虛擬URL、用戶輸入和Twitter句柄如下所示:"我們可以將關係存儲在Group文檔中。"

一段代碼塊設置如下:

collection.update(,

{$inc : }, ,

function(error, result){

assert.equal(error, null);

assert.equal(1, result.result.n);

console.log("Daily Hit logged");

callback(result);

});

當我們希望提醒您注意代碼塊的特定部分時,相關的行或項目會以粗體顯示:

var logMinuteHit = function(db, resource, callback) {

//Get the events collection獲取事件集

var collection = db.collection("events");

//Get current minute toupdate獲取當前時間做更新

var currentDate = new Date();

var minute = currentDate.getMinutes();

var hour = currentDate.getHours();

//We calculate the minute ofthe day計算一天的時間分鐘

var minuteOfDay = minute + (hour * 60);

var minuteField = util.format("minute.%s", minuteOfDay);

任何命令行輸入或輸出的寫法如下:

{"username": "johnclay"},

)

新術語重要單詞以粗體顯示。

[:警告或重要提示出現在這樣的框中。]

[:提示和技巧是這樣的。]

讀者反饋

我們歡迎讀者反饋。讓我們知道您對這本書的看法-您喜歡或不喜歡的內容。讀者反饋對我們非常重要,因為它可以幫助我們開發您真正能從中獲益最多的主題。

客戶支持

既然您是Packt圖書的自豪擁有者,我們有許多事情可以幫助您從購買中獲得最大收益。

示例下載

您可以從http//www.packtpub.com上的帳戶下載所購買的所有PacktPublishing書籍的示例代碼文件。如果您在其他地方購買了此書,可以訪問http//www.packtpub.com/support並註冊,將這些文件直接發送給您。

勘誤表

雖然我們已盡全力確保內容的準確性,但錯誤確實還會發生。如果您在我們的某本書中發現錯誤(可能是文本或代碼中的錯誤),我們將不勝感激,如果您可以向我們報告此問題。通過這樣做,您可以節省其他讀者的挫折感,並幫助我們改進本書的後續版本。如果您發現任何錯誤,請訪問http//www.packtpub.com/submit-errata,選擇您的書籍,單擊勘誤提交表單鏈接,並輸入您的勘誤詳細信息。一旦您的勘誤得到驗證,您的提交將被接受,勘誤將被上傳到我們的網站或添加到該標題勘誤部分下的現有勘誤表的任何列表。

要查看以前提交的勘誤表,請轉到https//www.packtpub.com/books/content/support並在搜索欄位中輸入該書的名稱。所需信息將顯示在勘誤部分下。

版權問題

互聯網上受版權保護的材料的盜版是所有媒體的持續問題。在Packt,我們非常重視保護我們的版權和許可證。如果您在互聯網上以任何形式發現任何非法複製的作品,請立即向我們提供地址或網站名稱,以便我們尋求補救措施。

感謝您對保護我們作者的幫助以及我們為您提供有價值內容的能力。

問題

目錄

MongoDB數據建模...1

前言...2

第一章:數據建模簡介...9

1.1 MongoDB和NoSQL關係...9

1.2 NoSQL簡述(Not only SQL)10

1.21 NoSQL資料庫類型...11

1.2.2動態模式、可擴展性和冗餘...12

1.3資料庫設計和數據建模...12

1.3.1 ANSI-SPARC體系結構...13

1.3.2數據建模...14

1.4本章總結...17

第二章MongoDB數據建模...18

2.1文檔和集合簡介...18

2.1.1 JSON..21

2.1.2 BSON..22

2.2文檔特徵...23

2.2.1文檔大小...23

2.2.2文檔中欄位的名稱和值...24

2.2.3文檔主鍵...24

2.2.4集合支持...24

2.2.5樂觀循環...25

2.3設計文檔...26

2.3.1使用嵌入式文檔...27

2.3.2使用引用...28

2.3.3原子性...32

2.4通用文檔模式...32

2.4.1一對一...32

2.4.2一對多...33

2.4.3多對多...35

本章總結...38

第三章:查詢文檔...38

3.1理解讀取操作...39

3.1.1查詢所有文檔...40

3.1.2使用標準查詢文檔...41

3.1.3比較運算符...44

3.1.4邏輯運算符...49

3.1.5元素運算符...52

3.1.6評估運算符...52

3.1.7數組運算符...53

投影...54

3.2介紹寫入操作...55

3.2.1插入操作(Insert)...55

3.2.2更新操作(update)...56

3.2.3寫入關注(Write Concerns)...58

3.2.4批量寫入文件...63

本章總結...63

第四章:索引...64

4.1索引文檔...64

4.1.1單欄位索引...66

4.1.2多欄位索引...67

4.1.3多關鍵字索引...69

4.1.4文本搜索索引...70

4.2創建特殊索引...72

4.2.1生存期索引...72

4.2.2唯一索引...73

4.2.3稀疏索引...73

本章總結...74

第五章:優化查詢...74

5.1理解查詢計劃...74

5.1.1評估查詢(Evaluating queries)...75

5.1.2覆蓋查詢(Covering a query)...80

5.1.3查詢優化器(The query optimizer)...85

5.1.4從多MongoDB實例中讀取數據...87

本章總結...89

第六章:管理數據...89

6.1操作隔離...89

6.1.1優先讀取操作...89

6.2封頂集合...98

6.3數據自我過期...100

本章總結...101

第七章:擴展伸縮...101

7. 1使用分片擴展MongoDB.102

7.1.1選擇分片鍵...104

7.1.2選擇分片鍵的基本問題...109

7.2擴展社交化收件箱模式設計...109

7.2.1讀取展開...110

7.2.2寫入展開...111

7.2.3分包寫入展開...112

本章總結...114

第八章:MongoDB日誌記錄和實時分析...114

8.1日誌數據分析...115

8.1.1錯誤日誌...115

8.1.2訪問日誌...115

8.2要查找的東西...116

8.2.1測量Web伺服器上的流量...117

8.3設計資料庫模式...117

8.3.1捕獲事件請求...118

3.3.2一份文式檔解決方案...123

3.3.3 TTL索引...129

3.3.4分片(Sharding)...129

33.5查詢報告(Quering for Report)130

本章總結...133

索引...134


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 3T趣課堂 的精彩文章:

Apache Shiro中許可權應用指南:深入理解許可權

TAG:3T趣課堂 |