部署:
MongoDB服務端可執行在Linux、Windows或IOS平臺,支援32位和64位應用,預設埠為27017。推薦執行在64位平臺,因為MongoDB在32位模式執行時支援的最大檔案尺寸為2GB。64位系統就沒有最大檔案限制。
32位系統最大限制2g的原因為:32位系統下,所有地址必須能用32位系統訪問到(超過2g訪問不到了)。所以針對32位作業系統下的mongod最多隻能處理2g的資料。
一個資料庫的資料儲存方式:
比如資料庫test分別會有如下檔案:
testabc.0,testabc.1,testabc.2
每個檔案的大小都會成倍增加。第一個是16m,第二個是32m,第三個是64m。第四個是128m,.......直到最大到2g為止。
那麼,2g之後會幹嘛呢?
繼續2g的建立下去。
疑問:既然這樣子的話,為什麼不一開始就建立一個2g的檔案呢?
2g,2g,2g的建立下去。
php想操作這個資料庫,必須下載這個資料庫針對php的驅動。其實就是安裝一個擴充套件入php中。
類似於載入php操作mysql的模組一樣的。參看:http://us.php.net/manual/en/class.mongocollection.php。
聯絡:php操作memacache,也是需要載入一個php針對memache的擴充套件進去。然後有現成的函式可以拿來使用。
從現在可以理解出:mogodb的資料儲存在檔案系統上。並非記憶體上。但是速度很快,原因是什麼?
1、高效的二進位制資料儲存方式。bson方式。沒有表結構欄位的限制關係。表結構擴充套件容易。
2、無需關聯表進行查詢。省去關聯查詢,查詢資料快。
3.寫入資料速度非常快。
4、有專門的商業公司進行維護和升級。10gen公司。
避免點或者缺點:
1.每個文件必須保持在16M以下
為了解決單個檔案大小限制的需求,mogodb引入了gridfs檔案系統,
10gen提到:如果這項設定不停的困擾到你,那麼是否你的設計模式存在著問題;或者你可以使用檔案無大小限制的GridFS。
2.不支援事務。需要用到事務場景的不能使用。對資料一致性要求高的不適合。
3、對磁碟的容量佔用比較多。是因為其機制的特性促使的。
原因:刪除記錄不釋放空間。mongodb每次空間不足時都會申請生成一大塊的硬碟空間(就是生成一個新的檔案),而且申請的量從64M、128M、256M那樣的指數遞增,直到2G為單個檔案的最大體積。隨著資料量的增加,你可以在其資料目錄裡看到這些整塊生成容量不斷遞增的檔案。
它採用預先申請檔案空間的方式,按照級別進行遞增,64M、128M、256M,2g。
4、mogodb把所有空閒的記憶體當快取使用。無法預定義申請和設定記憶體大小。這樣
容易受到其他程式干擾出現不穩定。
適合的業務和需求型別:
1、適合作為資訊基礎設施的持久化快取層。理解為,資料是儲存在磁碟上。資料持久。
2、一般儲存資料量大的訪問日誌資訊,用這個比較好。入庫速度快,資料量無線增大,可以支援分散式儲存。
3、是為海量資料儲存與查詢而設計的。
我覺得,mongodb與mysql的比較不是一個層面的,無法比較。一個是nosql系列的。一個是關係型資料庫。只能以nosql與關聯式資料庫的特點去比較。
mongodb應該與其他資料庫redis去比較,都是同屬於nosql系列的。
比如redis就不像mogodb那樣支援sql式的查詢操作。他完全是key-value形式的。
不適合的業務型別:
1)要求高度事務性的系統。
2)傳統的商業智慧應用。
3)複雜的跨文件(表)級聯查詢。
一些概念與關聯式資料庫的比較
mongodb 關聯式資料庫
資料庫 資料庫
集合 表
文件 行
因為是無模式, 列
所以不需要列的概念
objectId文件編號 類似於行的唯一編號
文件:符號{}可以看成是一個文件。
與關係型資料庫相比,為什麼查詢效能提到了?
儲存的資料不需要分表。存在一個集合中去了。關係型資料庫每個表 的資料是分開檔案儲存的。因而查詢一個商品的全部資訊,一般需要查詢多個表,去多個檔案中運算元據。
而mongodb可以把商品的所有資料,比如sku,屬性等資訊都儲存在一個文件中。由於放在一個地方,查詢的速度快了。
MongoDB閱讀精要
相關文章
- MongoDB管理與開發精要MongoDB
- 《精要主義》讀書筆記(一)筆記
- 《JavaScript 物件導向精要》 讀書筆記JavaScript物件筆記
- 【原始碼閱讀】AndPermission原始碼閱讀原始碼
- 磨刀不誤閱讀工 |《如何閱讀一本書》之基礎閱讀和檢視閱讀
- Redis 精要Redis
- 閱讀程式碼就像閱讀猶太法典
- 閱讀-MTCNNCNN
- mongodb原始碼實現、調優、最佳實踐系列-數百萬行mongodb核心原始碼閱讀經驗分享MongoDB原始碼
- 如何閱讀一本書——分析閱讀Pre
- JDK原始碼閱讀:Object類閱讀筆記JDK原始碼Object筆記
- 打造web版epub閱讀器(閱讀設計)Web
- MONGODB 讀書摘要MongoDB
- Scrum敏捷精要Scrum敏捷
- JDK原始碼閱讀(5):HashTable類閱讀筆記JDK原始碼筆記
- JDK原始碼閱讀(4):HashMap類閱讀筆記JDK原始碼HashMap筆記
- JDK原始碼閱讀:String類閱讀筆記JDK原始碼筆記
- 個人閱讀 程式碼大全的閱讀與提問
- 閱讀YYModel
- 閱讀習慣
- 閱讀文獻
- 如何閱讀 Paper
- 閱讀筆記筆記
- 淺談閱讀
- 如何閱讀數百萬級大工程mongodb核心原始碼-2020年度中mongodb中文社群一等獎MongoDB原始碼
- 【原始碼閱讀】Glide原始碼閱讀之with方法(一)原始碼IDE
- 【原始碼閱讀】Glide原始碼閱讀之into方法(三)原始碼IDE
- JDK原始碼閱讀(7):ConcurrentHashMap類閱讀筆記JDK原始碼HashMap筆記
- 如何高效的閱讀paper--三遍閱讀法
- MONGODB 讀書筆記MongoDB筆記
- javascript 技術精要JavaScript
- 《快速閱讀術》讀書筆記筆記
- ReactorKit原始碼閱讀React原始碼
- 【閱讀筆記:字典】筆記
- AQS原始碼閱讀AQS原始碼
- CountDownLatch原始碼閱讀CountDownLatch原始碼
- HashMap 原始碼閱讀HashMap原始碼
- delta原始碼閱讀原始碼