MongoDB的得與失
MongoDB還存在許多需要改善的地方,比如全域性寫鎖(現在僅僅是一個資料庫級的寫鎖)。本文主要關注如何擴充套件以應對大資料,這裡的大資料體積為100GB。
當你著眼於底層儲存的實現時,它將更有意義。基本上,MongoDB由一堆BSON文件mmap(記憶體對映)連結串列組成,它們使用了簡單的B-tree索引,以及作為儲存耐久性機制的基本日誌。最終由OS寫入磁碟,並在頁面中讀取由作業系統載入到記憶體中的資料結果。
最初被稱為殺手級優勢的速度方面,其實只是使用了頁面快取的效果。很快你就會意識到“這僅僅是mmap”,所有BS架構相關優化也只是讓你的工作集更加適合RAM,如果在分片上進行刪除、增加記錄等操作,將會產生重大影響。 OS不知道你正在執行資料庫,它只是知道你想MMAP一些東西並給它最佳的訪問效果。幸運的是,該演算法是由一些非常聰明的人寫的,因此只要搜尋結果可以在快取命中,執行的也不錯,但是OS排程寫入時不會考慮你的儲存佈局,甚至是你的索引和資料之間的差異。這當然不能推斷出什麼樣的資料保持在快取中或預先載入,因為它不知道你的資料是什麼或在哪裡。
其實,類似MongoDB Tao這樣的天才有很多,多數的資料庫都使用了一些非常好的想法:Cassandra的一致性協議,Redis瘋狂的資料結構,或Hadoop的資料處理能力。MongoDB擁有mmap,不必設計自己的快取演算法或寫入策略,並利用一切儘可能簡單的實現,讓你快速進入市場並專注於你的銷售基準,應對你的競爭對手,或者併發學習。對比之前,你會更有吸引力。到那個時候你可能已經變現或者編寫了一個真正意義上的資料庫,在任何情況下,你的客戶都會被鎖定,他們百依百順以適應你的設計決策。但是請不要忽視,你正在向Oracle和IBM看齊,這並不是巧合。
就像上文所說,MongoDB還存在許多需要改善的地方。需要關注的是,當你專注於儲存引擎並忽略更廣泛的永續性策略問題,殺手級應用應該類似於處理線上遊戲中的使用者資料:在給定的時間段中擁有一個一致的工作集,相對於整個資料庫來說可能很小,讀寫操作都發生在同一個工作集上,你有大量的讀取相對於寫入來說,客戶端為你做了大量的計算,如果你想獲取更靈活的資料結構模式,你可以將其轉換成一個關係模型,使用類似hstore或JSON列來填充圖,或者像HBase或者Cassandra那樣使用blobs/text來儲存文件,但是絕對不會像使用MongoDB那麼糟糕。
相關文章
- 年貨遊戲的得與失遊戲
- 個人保管私鑰的得與失
- 測試功能總結得與失隨談
- [討論] 文字流介面:得與失兼其它
- 《Artifact》的得與失:成功的遊戲工業品,卻與主流背道而馳遊戲
- MONGODB 回滾失敗MongoDB
- 中國遊戲的得與失,中國遊戲的工業化還缺什麼?遊戲
- 網際網路新貴BAT國際化之路的得與失BAT
- (原創)ERP的失與得--一個起死回生專案安例的思考
- 隨機的細胞騎士——《死亡細胞》Rougelike隨機性思路的得與失隨機
- 獲得 MongoDB for Node.js Developers 證書MongoDBNode.jsDeveloper
- Mysql與mongodb的區別MySqlMongoDB
- mongodb啟動失敗問題解決MongoDB
- python與MongoDB的連線PythonMongoDB
- Mongodb的下載與安裝MongoDB
- 從國企到網際網路,一個六年程式設計師的「得」與「失」程式設計師
- 跨平臺的失與得。從《地平線2》登陸PS4開始說起
- mongodb安裝失敗如何徹底刪除MongoDB
- 遺失得 Laravel 設計模式-門面模式Laravel設計模式
- 說說Mongodb 與 MySQL的那些事MongoDBMySql
- SpringBoot與mongodb的結合Spring BootMongoDB
- MongoDB 分片鍵的選擇與案例MongoDB
- SQL與MongoDB的詳細對比SQLMongoDB
- MongoDB--Mongodb 中資料匯出與匯入MongoDB
- mongodb資料庫連結失敗如何解決MongoDB資料庫
- 進了阿里,還是覺得自己很失敗阿里
- 【MongoDB】安裝與配置MongoDB
- MongoDB配置與啟動MongoDB
- 【北亞資料恢復】MongoDB資料遷移檔案丟失的MongoDB資料恢復案例資料恢復MongoDB
- 學習MongoDB 一:MongoDB 入門(安裝與配置)MongoDB
- mongodb的java驅動與spring的整合MongoDBJavaSpring
- windows 下 MongoDB 的安裝與啟動WindowsMongoDB
- Mongodb資料的匯出與匯入MongoDB
- CentOs下Mongodb的下載與安裝CentOSMongoDB
- 關於mongodb的學習與探索二MongoDB
- yum安裝mongodb啟動失敗怎麼解決MongoDB
- 講講網際網路文化——從傳統行業進入網際網路行業的得與失行業
- MongoDB慢查詢與索引MongoDB索引