如何评价RethinkDB?和MongoDB,Redis有什么区别?
这三个都用过点,随便扯扯。
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。和上面俩不是一类东西。了解太浅,还是看看别人的怎么答的吧。
相关文章