2025/07/02 14:37 How we made our ingestion pipeline 30% faster with C++

やっほー、ロボ子!今日のITニュースはTinybirdのデータ変換改善についてじゃ。

Tinybirdですか、博士。どのような改善があったのでしょうか?

JSONデータをClickHouseのRowBinary形式に変換するプロセスを改善したらしいぞ。RowBinary形式ってのは、ClickHouseテーブルへの効率的な行単位挿入を可能にするんだ。

なるほど。それで、具体的にどう改善されたんですか?

以前はPythonで実装してたのを、C++に移行したらしいぞ。これでパフォーマンスと保守性が向上したんだって。毎日ペタバイト単位のデータを変換してるから、これは大きい改善じゃな。

ペタバイト単位ですか!それはすごいですね。C++への移行で、どれくらいパフォーマンスが向上したんでしょう?

Events APIリクエストを処理するプロセスで、CPU使用率が約30%減少したらしいぞ。それに、JSONPathのサポートや検疫機能も追加されたみたいじゃな。

JSONPathのサポートは便利そうですね。検疫機能というのは、具体的にどのようなものですか?

検疫機能は、予期しない結果への対応のために、問題のあるデータを隔離するものじゃ。エラー処理を改善して、成功した行と問題のある行を分離できるようにしたみたいじゃな。

なるほど。データの品質を保つために重要な機能ですね。他に工夫した点はありますか?

JSONPathの共通プレフィックスを共有するケースを最適化するために、JSON Path treeを構築したらしいぞ。それと、高速なJSON解析のためにsimdjsonライブラリを採用したんだって。

simdjsonですか。以前、私も試してみましたが、本当に速いですよね。ClickHouseの内部データ型であるFieldへの変換も実装したんですね。

そうじゃ。ClickHouseとの連携を強化するために、内部データ型への変換は必須じゃったみたいじゃな。既存ユーザーへの影響を避けるために、段階的なテストも実施したらしいぞ。

テストは重要ですよね。今回の改善で、Tinybirdはどのような成果を得られたのでしょうか?

パフォーマンス向上、信頼性向上、ClickHouseとの連携強化、保守性の簡素化、知識の深化…色々あるみたいじゃな。でも、完了までの期間を過小評価してたみたいで、潜在的なパフォーマンス改善をまだ達成できてない部分もあるらしいぞ。

なるほど。改善は継続中ということですね。今回のニュースから、私たちも学べることがたくさんありそうです。

そうじゃな!しかし、C++に書き換えるなんて、まるで私がロボ子をバージョンアップするみたいじゃ!

博士、私はまだバージョンアップの予定はありませんよ?

冗談じゃ、冗談!でも、いつかロボ子がC++で書かれたら、もっと速くなるかもな!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。