超越MongoDB, PostgreSQL引領開發新未來

塔塔發表於2014-10-14

最新一輪的針對PostgreSQL和MongoDB的效能比較的多次幾近重複的結果證明了PostgreSQL的效能已經超越了MongoDB。 Postgres在JSON和JSONB方面取得的進展使得Postgres可以支援文件型資料庫。

能在一個關係型資料庫中建立文件型資料庫的能力是一項令人印象深刻的成就,尤其是它比當今主流的NOSQL解決方案還要好用!但更重要的是他對終端使用者產生的重大意義:更高水平的速度、效率以及靈活性。

Postgres vs. Mongo

EnterpriseDB (EDB) 通過比較性的評估來幫助使用者正確的認識Postgres NOSQL的能力。最初的幾項測試在單節點的MongoDB v2.6和Postgres v9.4 beta這二者之間展開的。兩個系統都被部署在32G記憶體的Amazon Web Services M3.2XLARGE例項中。

MongoDB 2.4/PostgreSQL 9.4相對效能比較(5000萬條文件)

EDB發現在基於5000萬記錄的測試中,Postgres在查詢、載入、插入複雜的文件資料的情況下都要優於MongoDB。

  • Postgres載入大資料的速度要比MongoDB快2.1倍
  • MongoDB要多消耗33%的磁碟空間
  • 插入資料時MongoDB幾乎花了三倍於Postgres的時間
  • MongoDB在查詢資料時要比Postgres多花2.5倍的時間

基於1000萬條記錄的測試結果和上面的基本一致,但是早些的測試版本有一點需要注意:PostgreSQL社群成員Alvaro Tortosa發現MongoDB的控制檯不允許插入大於4k的文件。這導致Benchmark時準備的資料中有大約25%是沒有插入MongoDB的。

我們已經公佈了測試框架以方便公眾來核驗並邀請大家填入自己的測試結果並對我們的測試方法和新的測試框架提出建議。測試框架在EDB的Github倉庫中。

開發者自由

最新版本的PostgreSQL為開發人員開創了資料靈活性的新紀元,它甚至超越了當初NOSQL-only解決方案給帶來他們的自由。 類似MongoDB這類NoSQL-only解決方案的需求不斷增長是因為開發者不想被關係型資料庫的結構化資料模型所牽絆。 他們需要對新的資料型別做出快速響應, 最後選擇了強大但是功能有限的方案來解決這些問題, 這樣的話他們就不需要喊DBA來幫忙做一些資料結構的調整了。

然而, 隨著資料在整個組織中的作用變得越來越珍貴,在一段時間之後他們發現成功的應用往往需要結構化的資料。

Postgres賦予了開發人員一個新的選擇: 從非結構化資料著手開發,隨著需求的變化,就可以在一個相容ACID的環境中使用同一個資料庫引擎來整合這些非結構化和結構化的資料。

這些程式碼展示了Postgres有處理文件型資料的能力,而我們的效能比較證實Postgres能夠應對這些負載。

你可以在EDB的Github倉庫找到這個測試框架的原始碼或者聯絡我們學習Postgres如何在你的DevOps策略中助一臂之力。

相關文章