RethinkDB 是一款开源的分布式数据库,用于存储 JSON 文档,可以很容易地扩展到多台机器。它有一门令人愉快的查询语言,支持表连接和 group 等真正有用的查询,并且安装简单、易于学习。
近日,RethinkDB 1.12 发布,这是迄今为止最重大的发布之一。它带来了超过 200 项功能增强,其中包括:
- 极大地简化了 map/reduce 和聚合命令
- 缓存经过重大改进,消除了长期稳定性和性能方面的局限
- 支持 ARM 架构
- 新增四个用于对象和字符串操作的 ReQL 命令
- 许多 Bug 修复、稳定性增强和性能提升
新版本删除了 group_by 和 grouped_map_reduce 命令,代之以一个更强大的新命令 group。该命令将文档序列分组,其后链接的任何命令都是在每个分组上单独调用,而不是在序列的所有文档上。而且,链接的命令不局限于内置的聚合命令,可以是任何一个或一系列命令。此外,除了已有的聚合命令 count、sum 和 avg 外,1.12 版本还增加了 min 和 max。读者可以进一步阅读,了解更多关于 group 命令和新的 map/reduce 基础架构的信息。
1.12 版本对缓存的基础架构进行了许多改进。对于用户而言,最大的变化是他们不需要手动为表设置缓存大小了,RethinkDB 会根据不同表的使用情况和系统可用内存空间动态地调整缓存大小。另外,为了帮助解决用户报告的各种稳定性问题,RethinkDB 还做了许多用户看不到的修改。
四个月前, David Thomas 贡献了一个拉拽请求,其中包含了在ARM 上编译和运行RethinkDB 所需要的修改。经过几个月的测试和各种修复,该请求已经并入了RethinkDB 的主干。不过,ARM 支持是试验性的,还有一些问题需要解决。
另外,新版本还增加了几个用于字符串和对象操作的命令,如用于大小写转换的downcase 和upcase、用于分隔字符串的split 和以编程方式从键- 值对创建JSON 对象的object。读者可以从 API 文档中了解更多相关信息。
最后,RethinkDB 1.12 还在性能和稳定性方面做了许多改进,如在 RethinkDB 的 Web 服务器上增加了压缩支持,增加了自动化性能回归测试,改进了并行数据处理代码等。
这里需要特别提醒一下,上述功能增强中有一项破坏性修改,即用group 代替group_by 和grouped_map_reduce。用户在升级时需要针对这项修改调整应用程序,详情见 1.12 迁移指南。再者,升级之前务必先迁移数据。
读者可以从这里下载试用。
感谢包研对本文的审校。
给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。
评论