為什麼淺談這五種資料庫?因為他們在數據結構上有著不同的代表意義。

MySQL 與 PostgreSQL 相差不遠,都是基於 B-Tree 的變化。MSSQL / DB2 較偏 MySQL,Oracle 則兩者兼備。但不管如何,它們面臨的優點與缺點相差不大。

RethinkDB 同樣基於 B-Tree,但是改變更大,使得它足以獨樹一格。

MongoDB 在 2.8 / 3.0 版之後,隨著引入 WiredTiger 引擎而加入新戰局。可惜,MongoDB 本質上仍算單執行緒(single-thread),而無法完全發揮 WiredTiger 的特性。相較於 RethinkDB 的多執行緒(multi-thread),這點顯得弱了一些。好消息是 MongoDB 團隊正打算解決這問題。

TokuDB 因專利保護,也得以讓自己獨佔山頭。在高併發寫入的情境下,不管是性能與穩定性,幾乎是上述的唯一勝選。

最後回頭討論 MySQL 與 PostgreSQL 的一項差異:引擎抽換。MySQL 提供引擎抽換的 API,可以在不修改客戶端程式的情況下,更換讀寫引擎,例如將預設的 InnoDB 抽換為 TokuDB。

如此,在資料庫應用場景轉換時,可以不用把整套資料庫置換,而讓 MySQL 在不更換成其它 NoSQL 解決方案下,獲得接近 NoSQL 高併發寫入的性能。這樣的引擎抽換設計,也被後來的 MongoDB 借鏡引入,得以讓使用者從預設引擎抽換至 WiredTiger。

反之,PostgreSQL 唯獨支援一種引擎。好處是使用者選用 PostgreSQL 時不用煩惱該選何種,壞處是使用者無法依業務場景抽換適當的引擎。