如何評價RethinkDB?和MongoDB,Redis有什麼區別?


卸腰。 剛面試完 RethinkDB, 估計要跪(但是能和 Salva 大神聊天我已經很滿足了)。

這三個都用過點,隨便扯扯。

RethinkDB 簡直是 NoSQL 中的黑科技,被網友譽為"MongoDB done things right",賣點是 實時性。

比如:

+ 自帶 Admin UI,就是資料庫在跑的時候,後台有個非常棒的管理界面,可以直接用上面的 consle 查詢

+ UI 上 一鍵 sharding 和 replica,方便的令人髮指。

+ 支持 table 間 join,甚至是 distributed join(斜眼看了下 MongoDB)。

+ Unix pipe 形式的 query language。有點像 pyspark 的那種操作,簡單易懂,好調試。

+ 最新的2.1版本加入牛 X 的 Raft 演算法(可以理解為 consensus algorithm中的 Paxo)。

+ 支持的 driver 齊全。這比較邪門,用戶量不算怎麼大,什麼 Dart, Elixir, Lua, Nim, Haskell 甚至 Common Lisp 的 driver 都有。

適合場景:

+ 實時。所以遊戲挺適合的。

+ SSD 硬碟。

缺點:

+ 還是比較早期,一般 query 比 MongoDB 要慢3倍甚至更多。考慮到他們團隊才17個人,和 MongoDB 的規模不能比,給幾年時間,說不定能幹翻 MongoDB。

MongoDB

和 RethinkDB 用 json 存儲不同,MongoDB 把它二進位成 bson。中規中矩,NoSQL 中比較主流。

+ Transaction:單個 document更新是原子性的,這點和 RethinkDB 一樣。多個 document更新要保持原子性需要用 Two Phase Commit(好像是2.8加上的,如果錯了請糾正),這個 RethinkDB 沒有。

+ Authorization。網上裸奔著無數沒有驗證的 27017 埠。RethinkDB 一開始就沒打算設計這個,見 Salva 的 Consider a design for access control · Issue #266 · rethinkdb/rethinkdb · GitHub。

+ 文檔教程等資料比較多。還是有錢。工程師里好多北歐的,好多禿頭的,一看就功力不凡。

Redis:

in memory 的 key-value cache。和上面倆不是一類東西。了解太淺,還是看看別人的怎麼答的吧。


今天rethinkdb公司已經倒閉了 未來項目將以社區驅動方式開發


有能力開發資料庫,幹嘛還要做資料庫,做個區塊鏈不是更好?


推薦閱讀:

新浪微博「點贊功能」資料庫如何設計的?
如何用redis/memcache做Mysql緩存層?
各種內存NoSQL,什麼情況下才有必要使用,SQL性能真的很糟糕?
怎樣理解分析王垠文章《SQL,NoSQL 以及資料庫的實質》的觀點?
Redis集群方案應該怎麼做?

TAG:Redis | NoSQL | MongoDB | RethinkDB |