作者:Sugu Sougoumarane,Morgan Tocker
有关添加或更改的功能的概述,以及从早期版本升级的重要更改,请参阅发布说明。
https://github.com/vitessio/vitess/releases/tag/v4.0.0
我们希望利用这篇文章来反思Vitess发展的三个方面,因为它已经从YouTube的一个内部项目演变成一个有近200名贡献者的CNCF项目。
改进SQL查询的支持
Vitess 4.0在提高所支持的MySQL语法的覆盖率方面有了很大的进步。Vitess现在可以支持批量语句,例如可能需要跨越分片边界的插入。
还支持更广泛的SELECT语句,包括对不同的聚合查询的支持,比如COUNT(distinct…)。你也可以通过SQL与ALTER VSCHEMA来修改Vitess本身。
我们还开始使用常见的应用程序和框架对Vitess进行测试,并将失败添加到我们的测试套件中。其目标是从一个单一的MySQL或MariaDB转到分片Vitess,而应用程序不需要知道。
改进可用性
创建Vitess是为了解决一个重大挑战 - 在YouTube大规模增长期间扩展其数据库。为了解决YouTube的需求,Vitess还添加了一些功能,帮助你在生产环境中更好地运行数据库。然而,缺点是,随着内部开发的进行,并不总是对新用户的入职体验给予足够的关注。
在Vitess 4.0中,我们已经采取了一些措施,让新用户更容易使用:
当我们进入Vitess 5.0的发展时,这将继续是一个重点。
对VReplication的实验支持
分片的一个缺点是,你可能被迫进行权衡。例如,在一个电子商务平台上,你有买家和卖家,你可以选择买家在分片,在这种情况下,由卖家在分片系统查询可能会变得慢得多。
对于需要买方和卖方都进行有效查询的应用程序,VReplication提供了一种方法来订阅对每个分片所做的更改(使用MySQL二进制日志),并在其它分片上保持关键数据的冗余副本可用。你可以将此功能看作类似于其它商业数据库中可用的物化视图。
回到SQL支持,Vitess 4.0也支持表等价的概念。这意味着你可以指示Vitess,从原始表或VReplication物化视图中读取数据:使用查询执行得更快的那个。
这只是对Vitess 4.0中一些新特性的快速概述,但是我们再次鼓励你查看发布说明,其中包含更多的细节。
从Vitess 5.0开始,我们将过渡到12周的发布周期。我们欢迎你的贡献。请查看vitessio/vitess和vitessio/website(docs)中的未解决问题,并加入vitess slack频道。
https://github.com/vitessio/vitess/issues
https://github.com/vitessio/website/issues