作為文檔型數據庫典範,MongoDB有何過人之處

談到NoSQL,想必該數據庫在整個數據庫領域早已名聲大噪了。在互聯網飛速發展的時代,NoSQL憑藉易擴展、成本低和高性能以及靈活的架構模型成功的在數據庫領域站穩了腳跟。常見的NoSQL數據庫有:Redis、CouchDB、MongoDB、HBase、Cassandra等,今天我們來詳細瞭解下其中一個數據庫:MongoDB 的箇中奧秘。

什麼是MongoDB

想要了解MongoDB的定義,我們不妨從下面三點展開介紹:

1. MongoDB是一款為WEB應用程序和互聯網基礎設施設計的數據庫管理系統,由C語言編寫;

2. MongoDB是一款功能豐富的非關係數據庫產品,而它強大的語言查詢功能又像極了關係數據庫產品。由於MongoDB支持的數據庫結構十分鬆散,因此可以存儲相對複雜的數據類型;

3. 當數據被分組存儲在數據集中我們稱之為一個集合,每個集合在數據庫內都有對應的標識名,並且能涵蓋多個文檔,我們可以把集合的概念理解成為關係型數據庫裡的表。Nytro MegaRAID技術的閃存高速緩存算法能夠快速識別數據庫內大數據集中的熱數據,提供一致的性能改進。MongoDB是用C++開發的面向文檔的數據庫,沒有結構化語言,模式相對自由,也就是說對於存儲在MongoDB數據庫中的文件,我們完全不需要了解它的結構定義。如果我們想要知道存儲在MongoDB中的文件,我們大可以把不同結構的文件存儲在同一個數據庫裡。

作為文檔型數據庫典範,MongoDB有何過人之處

MongoDB的優勢

綜上所述,我們可以瞭解到MongoDB是一款文檔型數據庫,在DB Engine Rank 的排名中,MongoDB 排在第4位,是非關係型數據庫領域的領頭羊。那麼,MongoDB有哪些優勢能讓技術開發者們如此青睞呢?

1. 快速插入、查詢:MongoDB具有二維空間索引功能,可以快速並精準的從指定位置獲取數據。MongoDB在啟動後能將數據庫內的數據通過文件映射的方式加載到內存中,此功能可以極大的提高數據庫的查詢速度。且MongoDB可以更高寫負載,擁有極高的插入速度。所以,MongoDB特別適用於網站數據相關行業;

2. 操作方便:由於MongoDB是一個面向文檔存儲的數據庫,其中的BSON數據格式非常適合文檔的存儲及查詢,操作起來十分簡單,可疑加快實現價值的時間,大大縮小總體成本,應用於對象及JSON數據的存儲是一個不錯的選擇;

3. 數據模型靈活:Mongo查詢指令使用JSON形式的標記,文檔模型映射到應用程序代碼中的對象,使數據方便使用,各項功能正常工作,無論是文檔、圖形還是事件都能因Mongo靈活的數據模型實行輕鬆存儲和合並結構數據,並允許動態修改架構,而不會造成停機或性能影響,我們完全可以花更少時間為數據庫做準備;

4. 分佈式數據平臺:MongoDB可以在分佈在不同位置的數據中心和雲區域內運行,從而提供具有更高級別的可用性和伸縮性。在沒有停機的情況下,MongoDB能夠進行彈性擴展,隨著性能和目標發展,我們還可以跨越數據中心進行適應性的調整,因此眾多高伸縮性場景選用MongoDB;

5. 多語言支持:MongoDB支持多種編程語言,比如RUBY,PYTHON,JAVA,PHP,C#,C++等。

作為文檔型數據庫典範,MongoDB有何過人之處


MongoDB在TitanFramework中的應用

在TitanFramework中,已經集成了MongoDB的各個功能,現在我們帶著上述對MongoDB的瞭解來認識TitanFramework:

1. MongoDBConverter

在Titan框架中,比較重要的一個接口就是MongoDBConverter,它是作為框架對MongoDB數據Bson的一個轉換器,其實現類是一個名字被加密的類(Titan框架中加密了部分內部類和實現類代碼,反編譯是看不到真實名字的,這樣無法通過反編譯獲取其他實現類的源碼),實現該接口的功能。

這裡我們來了解TitanFramework應用MongoDB的三個方法,其中重載了一個toEntity(), T toEntity(Document var1)該方法直接返回null,為一個默認方法,而 T toEntity(Document var1, Class var2)是將一個Document(MongoDB中的一條數據)轉換為對應的Entity,最後一個方法 Document toDocument(T var1)則是將傳入的Entity轉換為Document。

內部運行時異常類ConvertException,用於轉換異常時拋出提示。

2. GeneraMongodb

GeneraMongodb是一個非常重要的框架內的頂層接口,它規定了許多操作方法,如增刪改查,獲取、設置自定義實現的轉換器,統計條目等。

框架內部規定了一個Curd和一個Finder內部接口,並已經使用抽象類進行初始化好,用以對實現的類初始化增刪改查功能。

框架內部還擁有一個已經實現了該接口的抽象類,抽象類實現了一個完整的GeneraMongodb接口,包括實現了一個初始化默認的轉換器Convertor,抽象類內部提供了(非使用或實現Curd和Finder對象)增刪改查功能。

3. MongoDataProcessor

這個接口是我們在使用Titan Framework Mongo服務中,respository需要實現的StorageDataProcessor.Mongo內Mongo公共接口所繼承的頂級接口,該接口提供了我們平時使用的方法。

很明顯,這個頂級接口的作用就是給我們提供平時操作使用Curd()和readonly()方法,並提供一個獲取默認轉換器的extConverter()方法,而默認轉換器則是由框架內某實現了MongoDBConverter的實現類提供。

MongoDB將非關係數據庫的關鍵功能與NoSQL技術高效結合,歷經數十年的發展中MongoDB的關鍵數據庫功能與互聯網開拓者為現代應用程序提供眾多服務,並在開發者構建的新一代應用程序中提供重要功能。而TitanFramework通過完美應用MongoDB,具有“本地化,易上手,效率高,低成本”的優勢,幫助中國萬千家企業攻克了技術難題。如果您的企業正在面臨技術級難題,TitanFramework必然會是一個理想的選擇。


分享到:


相關文章: