CnosDB は sqllogictest をサポートする最初の時系列データベースになり、その安定性と信頼性はさらにアップグレードされます

 

クラウドネイティブの時系列データベース CnosDB では、sqllogictest 統合フレームワークが導入されています。sqllogictest を CnosDB に統合することで、開発者はデータベースの正確性をより簡単にテストして検証し、潜在的な問題をすばやく見つけて解決することができます。

最近、クラウドネイティブの時系列データベースである CnosDB に新しい PR が組み込まれ、Sqllogictest 統合フレームワークが導入されました。sqllogictest を CnosDB に統合することで、開発者はデータベースの正確性をより簡単にテストして検証し、潜在的な問題をすばやく見つけて解決することができます。この新しい PR は CnosDB にとって非常に重要であり、開発者により効率的で信頼性の高いテスト ツールを提供します。また、CnosDB は sqllogictest と統合された最初の時系列データベースとなり、その安定性と信頼性が再びアップグレードされました。

sqllogictest について:

sqllogictest は、SQL データベース エンジンが正しい結果を計算するかどうかを検証するために使用される統合テスト フレームワークです. 基本的な構文、関数、演算子、およびデータ型のサポートのテストを含む、さまざまな SQL クエリを実行できます. sqllogictest はクエリ結果の正確性のみを考慮し、データベース、インデックス、トランザクション、同時実行性、メモリ、およびディスクのパフォーマンスには注意を払いません。

sqllogictest の主な機能は、SQL クエリを実行し、期待される結果が実際の結果と一致しているかどうかを比較することです。フレームワークは、SELECT ステートメント、INSERT ステートメント、UPDATE ステートメント、DELETE ステートメント、CREATE TABLE ステートメントなど、さまざまな SQL クエリをテストできます。sqllogictest は、SQL エンジンがさまざまなデータ型、演算子、および関数をサポートしているかどうかを検証し、さまざまなクエリ ステートメントが期待される効果を持っているかどうかをテストすることもできます。

sqllogictest は、データベースのパフォーマンスやその他の側面を考慮せずに、クエリ結果の正確性のみに焦点を当てていることに注意してください。これは、クエリの実行時間、インデックスの使用、同時実行パフォーマンス、メモリ管理などの側面をテストしないことを意味します。したがって、sqllogictest は主に、データベースの全体的なパフォーマンスを評価するためではなく、SQL エンジンが結果を正しく計算できることを確認するために使用されます。

CnosDB が sqllogictest を導入する理由:

CnosDB 技術チームは、安定性と信頼性の高い製品をユーザーに提供することに常に取り組んできました。この目標を達成するために、安定性と信頼性を向上させるための最優先事項であるクエリ エンジンの論理テストに焦点を当てています。[詳細な資料: CnosDB は、SQLancer をサポートする最初のクラウド ネイティブな時系列データベースになります] sqllogictest を導入することで、CnosDB チームは次の利点を発見しました。

まず第一に、sqllogictest は、CnosDB 製品の安定性を確保するための回帰テストに役立ちます。リグレッション テストとは、修正後にソフトウェアの本来の機能が損なわれていないかどうかを確認することです。コミュニティの開発者がコードを変更する場合、新しいバグができるだけ導入されないようにし、修正されたバグが表示されないようにする必要があります。sqllogictest を使用することで、CnosDB チームは変更されたコードを迅速かつ効率的にテストして、CnosDB 製品の安定性を確保できます。

次に、sqllogictest は、開発者が SQL ステートメントの正確性を検証し、データベース内の論理エラーを見つけるのに役立ちます。開発プロセス中、開発者は多くの場合、クエリ結果が正しいことを確認するために SQL クエリ ステートメントを記述する必要があります。sqllogictest を使用することで、開発者は SQL クエリに対して論理テストを実行し、潜在的なバグや問題を見つけて、早い段階で修正することができます。

第 3 に、sqllogictest は統合テストを作成するのに非常に便利で、表示も簡単です。統合テストとは、システム全体またはアプリケーションの個々のコンポーネントが適切に機能しているかどうかをテストすることです。sqllogictest を使用することで、CnosDB チームは統合テストを簡単に記述して、CnosDB のすべてのコンポーネントが調和して動作し、製品の整合性と一貫性を保証できるようになります。

第 4 に、sqllogictest は Rust プログラミング言語で書かれています。これはたまたま CnosDB と同じであり、Rust 言語エコロジーの開発に貢献しています。Rust は、C++ や C とともに、高性能インフラストラクチャ プログラムを作成するために使用できる、高速で安全で信頼性の高いプログラミング言語です。CnosDB チームが Rust で CnosDB を作成した理由は、より優れたパフォーマンス、セキュリティ、および信頼性を提供するためです。[拡張読書: CnosDB Nirvana Rebirth: Go を放棄し、Rust を完全に採用]

最後に、sqllogictest は、自由に使用および変更できる成熟したオープン ソース プロジェクトであり、DataFusion などの SQL ベースのデータベースまたはフレームワークが既に多く使用されており、その安定性と使いやすさが証明されています。sqllogictest を使用することで、CnosDB チームはオープン ソース コミュニティからサポートと支援を得て、製品の品質と信頼性を向上させることができます。

sqllogictest を使用して SQL テストを作成します。

次に、sqllogictest を使用して SQL テストを記述する具体的な方法について説明します。テスト ファイルの拡張子は .slt です。

  1. 検証ステートメントが正常に実行されました
statement ok
CREATE TABLE foo(a BIGINT, b BIGINT, TAGS(c));

statement ok
INSERT INTO TABLE foo(time, a, b, c) VALUES  (1, 1, 1, '1'), (2, 2, 2, '2') ;

2. クエリ ステートメントが成功したことを確認する

query T
SELECT * FROM foo ORDER BY time;
----
1970-01-01T00:00:00.000000001 1 1 1
1970-01-01T00:00:00.000000002 2 2 2

T は、比較結果セットのテキストを表します。

3. 検証ステートメントの実行に失敗しました

statement error Database .* forbid drop
DROP DATABASE public;

その中で、error の後には正規表現が続き、さまざまなエラー メッセージの照合に使用されます。

このように、単純な構成により、sqllogictest をすばやく使用して、SQL に論理エラーがあるかどうかを確認できます。

その他の使用方法については、 https://github.com/cnosdb/cnosdb/tree/main/query_server/sqllogicaltestsで確認できます。

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

エピローグ

以上がsqllogictestをサポートするCnosDBの全内容です。CnosDB の技術チームにとって、安定性と信頼性の追求に終わりはありません。データベースとデータベースのテストを愛する友人は、WeChat 公式アカウント、Bilibili ビデオ アカウントに注意を払い、コミュニティに参加することを歓迎します.最新の技術動向と技術的内部情報を随時更新します.あなたとの深い交流を楽しみにしています. .

参考文献

GitHub - raiselightdb/sqllogictest-rs: Rust の Sqllogictest パーサーおよびランナー。

 

CnosDB の概要

CnosDBは、正式にリリースされ、完全にオープンソース化された、高性能で使いやすいオープンソースの分散型時系列データベースです。

コミュニティ Web サイトへようこそ: https://www.cnosdb.com

おすすめ

転載: blog.csdn.net/CnosDB/article/details/130329804