写点什么

CnosDB 成为首个支持 sqllogictest 的时序数据库,稳定性与可靠性再升级

作者:CnosDB
  • 2023-04-23
    内蒙古
  • 本文字数:2058 字

    阅读完需:约 7 分钟

CnosDB成为首个支持sqllogictest的时序数据库,稳定性与可靠性再升级

云原生时序数据库 CnosDB 引入了 sqllogictest 集成框架。通过将 sqllogictest 集成到 CnosDB 中,开发人员可以更轻松地测试和验证数据库的正确性,并能够快速地发现和解决潜在的问题。


近期,云原生时序数据库 CnosDB 合入新的 PR,引入了 Sqllogictest 集成框架。通过将 sqllogictest 集成到 CnosDB 中,开发人员可以更轻松地测试和验证数据库的正确性,并能够快速地发现和解决潜在的问题。这个新的 PR 对于 CnosDB 有着重要的意义,为开发人员提供了更加高效和可靠的测试工具。CnosDB 也成为首个集成 sqllogictest 的时序数据库,稳定性和可靠性再次升级。



关于 sqllogictest:

sqllogictest 是一个用来验证 SQL 数据库引擎是否计算出正确结果的集成测试框架,它可以执行各种 SQL 查询,包括对基本语法、函数、操作符和数据类型的支持进行测试。sqllogictest 只关心查询结果的正确性,不关注数据库的性能,索引,事务,并发,内存,磁盘。


sqllogictest 的主要功能是执行 SQL 查询,并比较预期结果与实际结果是否一致。该框架可以测试各种 SQL 查询,例如 SELECT 语句、INSERT 语句、UPDATE 语句、DELETE 语句、CREATE TABLE 语句等等。sqllogictest 还可以验证 SQL 引擎是否支持各种数据类型、操作符和函数,并测试不同的查询语句是否具有预期的效果。


值得注意的是,sqllogictest 只关注查询结果的正确性,而不考虑数据库的性能或其他方面。这意味着它不会测试查询的执行时间、索引的使用、并发性能或内存管理等方面。因此,sqllogictest 主要用于确保 SQL 引擎能够正确地计算结果,而不是评估数据库的整体性能。

为什么 CnosDB 引入 sqllogictest:

CnosDB 技术团队一直以来都致力于为用户提供高稳定性和高可靠性的产品。为了实现这个目标,我们注重对查询引擎的逻辑测试,这是提升稳定性和可靠性的重中之重。【拓展阅读:CnosDB成为首个产品支持SQLancer的云原生时序数据库】通过引入 sqllogictest,CnosDB 团队发现可以获得以下收益:


首先,sqllogictest 可以帮助回归测试,保证 CnosDB 产品的稳定性。回归测试是指检验软件原有功能在修改后是否保持完整。当社区开发者更改代码后,需要尽可能地保证不引入新 Bug,已经修复好的 Bug 不再出现。通过使用 sqllogictest,CnosDB 团队能够快速有效地测试修改后的代码,以确保 CnosDB 产品保持稳定性。


其次,sqllogictest 可以帮助开发人员进行 SQL 语句的正确性验证,找到数据库的逻辑错误。在开发过程中,开发人员需要经常编写 SQL 查询语句,确保查询结果正确无误。通过使用 sqllogictest,开发人员可以对 SQL 查询进行逻辑测试,找到潜在的错误和问题,并在早期阶段修复这些问题。


第三,sqllogictest 编写集成测试非常方便,易于查看。集成测试是指测试整个系统或应用程序的各个组件是否正常工作。通过使用 sqllogictest,CnosDB 团队可以轻松编写集成测试,以确保 CnosDB 的所有组件都可以协调工作,确保产品的完整性和一致性。


第四,sqllogictest 是用 Rust 编程语言编写的,正好与 CnosDB 相同,这有助于 Rust 语言生态的发展。Rust 是一种快速、安全和可靠的编程语言,与 C++和 C 语言,可用于编写高性能的基础架构程序。CnosDB 团队使用 Rust 编写 CnosDB 的原因是,它提供了更好的性能、安全性和可靠性。【拓展阅读:CnosDB 涅槃重生:弃用Go, 全面拥抱Rust


最后,sqllogictest 是一个成熟的开源项目,可以自由使用和修改,已经有很多基于 SQL 的数据库或框架在使用,比如 DataFusion,它的稳定性和易用性已经得到了证明。通过使用 sqllogictest,CnosDB 团队可以获得开源社区的支持和帮助,提高产品的质量和可靠性。

使用 sqllogictest 编写 SQL 测试:

下面介绍使用 sqllogictest 编写 SQL 测试的具体方法,测试文件使用.slt 作为扩展名。

  1. 验证语句执行成功

statement okCREATE TABLE foo(a BIGINT, b BIGINT, TAGS(c));
statement okINSERT INTO TABLE foo(time, a, b, c) VALUES (1, 1, 1, '1'), (2, 2, 2, '2') ;
复制代码


2.验证查询语句成功

query TSELECT * FROM foo ORDER BY time;----1970-01-01T00:00:00.000000001 1 1 11970-01-01T00:00:00.000000002 2 2 2
复制代码


T 表示比对结果集的文本。


3.验证语句执行失败

statement error Database .* forbid dropDROP DATABASE public;
复制代码


其中 error 后面跟着的是正则表达式,用来匹配多样的错误信息。


这样通过简单的配置,就可以快速使用 sqllogictest 帮助大家检查 SQL 是否有逻辑错误。


更多使用方法可以查看https://github.com/cnosdb/cnosdb/tree/main/query_server/sqllogicaltests


https://github.com/risinglightdb/sqllogictest-rs

结语

以上就是 CnosDB 支持 sqllogictest 的全部内容了。对稳定性和可靠性的追求,对于 CnosDB 的技术团队来说永无止境。欢迎热爱数据库及数据库测试的小伙伴们关注我们微信公众号、B 站视频号以及加入我们的社区,我们将及时更新最近技术动态与技术内幕,并期待与大家深入交流。

参考文献

GitHub - risinglightdb/sqllogictest-rs: Sqllogictest parser and runner in Rust.


CnosDB 简介

CnosDB 是一款高性能、高易用性的开源分布式时序数据库,现已正式发布及全部开源。

欢迎关注我们的社区网站:https://www.cnosdb.com

发布于: 刚刚阅读数: 5
用户头像

CnosDB

关注

还未添加个人签名 2022-04-18 加入

打造高性能、高压缩比、高可用的分布式云原生时间序列数据库,引领世界迈向万物智联 欢迎关注 https://www.cnosdb.com

评论

发布
暂无评论
CnosDB成为首个支持sqllogictest的时序数据库,稳定性与可靠性再升级_数据库_CnosDB_InfoQ写作社区