TDengine の寄稿者 Zhong Yu が TSZ 圧縮アルゴリズムの最適化の背後にある物語を語ります

TSZ 圧縮アルゴリズムは、TDengineによって提供されるオプションの圧縮アルゴリズムであり、特に浮動小数点データ型に使用されます。優れた圧縮パフォーマンスを備えており、非可逆状態と可逆状態の両方でより高い圧縮率を実現でき、より高いデータ ストレージのニーズを満たすためにデフォルトの圧縮アルゴリズムの 2 倍にも達します。データ予測技術を利用した TSZ 圧縮アルゴリズムは、時系列データなどの定期的に変化するデータの処理により適しています。ただし、TSZ 圧縮は効率的な圧縮方法であるため、実行に時間がかかる場合があるため、CPU リソースが豊富でストレージ容量が限られている場合に使用することをお勧めします。  

最近、「TSZ 圧縮アルゴリズム」に関する「ニュース」をお知らせします。

TDengine の寄稿者 Zhong Yu が TSZ 圧縮アルゴリズムの最適化の背後にあるストーリーを語る - TDengine データベース時系列データベース

つい最近、このようなメッセージが届きましたが、送信者は華中科技大学および武漢国立光電子研究センターの修士課程の学生、鍾宇さんでした。同氏はメッセージの中で、「ADT-FSE: A New Encoder for SZ」というタイトルの最近の学術論文で、TDengine TSZ 圧縮アルゴリズムに関連する改善が加えられたと述べました。その後、Zhong Yu はオープン ソース コードのこの部分を TDengine の Github コミュニティで共有し、TDengine オープン ソース コミュニティへの新たな貢献者になりました。

オープンソースの精神に溢れ、TDengine を支持するより多くの友人たちにこのストーリーをより詳しく理解してもらうために、私たちは Zhong Yu 氏に詳細なインタビューを実施し、TDengine を研究対象の 1 つとして選んだ理由と TSZ について説明します。圧縮アルゴリズム特定の最適化作業やオープンソースへの参加経験など、多くの側面を共有します。

インタビュー記録

1. 自己紹介をお願いします。

ご招待ありがとうございます。私は華中科技大学の出身で、現在武漢国立光電子研究センターの修士課程の 3 年生です。私は現在、Wu Fei 教授が率いる「Panshi New Non-Volatile Storage System Laboratory」(NNSS)研究グループに所属しています。私の個人的な研究の方向性には、主に NVMe ソリッド ステート ディスク、圧縮アルゴリズムなどが含まれます。2022 年 7 月から 9 月にかけて、Shenzhen Dapu Micro でのインターンシップ中に、私は同社の Lu Tao 博士と協力して、浮動小数点コンプレッサー SZ の最適化に関する論文「ADT-FSE: A New Encoder for SZ」を完成させました。今年の SC カンファレンスに含まれている SC は、スーパーコンピューティングとストレージの分野で CCF によって認定されたトップカンファレンスです。記事では、TDengine は系列データベースの分野の代表として、SZ アルゴリズムの適用の重要なシナリオになっていると述べています。

2. どのようなきっかけで TDengine と出会い、TDengine に貢献するようになりましたか?

私が初めて TDengine に触れたのは SZ の研究が始まった頃で、その時、別の先輩が卒業研究で TDengine の研究を準備していると聞き、その中で SZ (TSZ) というものがあることを知りました。モジュールは TDengine に導入され、オープン ソース コードに統合されました。有望かつ急速に発展している分野として、時系列データベースは常に私たちのチームが探求したい方向性でした。TDengine はオープンソース コミュニティに大きな影響力を持っており、オープンソースで成熟したプロジェクトは私たちが学術的な活動に参加するのに非常に適しています。ですので、これは非常に良い機会だと私たちも考えています。

3. TSZ 圧縮アルゴリズムを最適化することにした理由と、最適化の結果はどうなりましたか? 理由を詳しく説明してください

SZ は業界をリードする非可逆浮動小数点圧縮プログラムですが、実際には欠点があり、これは SZ のオープン ソース コード ベースの README にも「SZ は非常に小さなファイルの圧縮には適していない」とデータベースにも記載されています。通常、データは小さなブロックに分割されて保存されます。たとえば、TDengine のデフォルトの 4096 行のデータが最小保存単位です。単精度浮動小数点型 (float) が保存に使用される場合、保存単位は 16KB です。このサイズは、SZ にとって数百 MB、さらには数 GB のデータを簡単に圧縮できる非常に小さいサイズですが、テストでは、SZ がこのサイズのファイルを圧縮すると、圧縮率が大幅に低下し、圧縮と解凍が遅くなることがわかりました。 。

広範なテストと定量的分析の結果、SZ 圧縮で使用される従来のハフマン アルゴリズムが、この問題を引き起こす主なボトルネックになっていることがわかりました。従来のハフマン アルゴリズムは、デコード中に元のデータを復元できるように、圧縮結果にハフマン ツリーを保存します。通常、大きなファイルを圧縮する場合、ハフマン ツリーのサイズは無視できますが、私たちのテストでは、小さなファイルを圧縮する場合、このツリーが占めるスペースは無視できないことが示されており、これが問題の鍵です。

最後に、従来のハフマン アルゴリズムに代わる ADT-FSE アルゴリズムを提案しました。これは、トランスコーディング + 圧縮方式です。元のデータは 1 ステップでトランスコーディングされ、その後、より高度なエントロピー コーディング FSE アルゴリズムが圧縮に使用され、エントロピー コーディングのアルゴリズムが完全に放棄されます。ハフマン ツリーを使用すると、小さなファイルの圧縮率が向上するだけでなく、圧縮と解凍の速度も向上します。弊社のテストでは、ADT-FSE により SZ の解凍速度が 2 倍~8 倍高速になり、TDengine での圧縮率は最大 5 倍向上しました。

TDengine の寄稿者 Zhong Yu が TSZ 圧縮アルゴリズムの最適化の背後にあるストーリーを語る - TDengine データベース時系列データベース

Zhong Yu が TDengine GitHub コミュニティに寄稿したコード (一部)

4. 最適化プロセス全体で何か難しい問題に遭遇しましたか? どうやってそれを破るのですか?

最初は、従来のハフマン アルゴリズムを置き換えるためにどのアルゴリズムを使用するかを決定するのが困難でした。代わりに一般的な圧縮器 Zstd またはエントロピー コーディング FSE を直接使用してみましたが、効果は最適ではなく、場合によっては元のアルゴリズムより悪かったです。 。最後に、別のプロジェクトの開発中に、Zstd には広範囲の整数を圧縮する、つまり、最初にトランスコーディングしてから圧縮するという内部アイデアがあることがわかりました。これに触発されて、私たちは SZ データを分析し、このアイデアを学習および改良し、最終的に最適な ADT-FSE アルゴリズムを提案しました。

TDengine シナリオでの評価では、実際のシナリオで時系列データに触れたことがないため、どのようなデータをテストに使用するかが難しい問題でもあり、連続性の強いデータの圧縮には SZ の方が適しています。最終的に、これもオープンソースであり、実際の家庭用電力の電圧データを記録する UK-DALE データセットを選択しました。

5. オープンソースに注目し、オープンソース プロジェクトに参加し始めたのはいつですか? オープンソースはどのように役立ったと思いますか?

学部時代から、オープンソース プロジェクトは私やクラスメートにとって常に注目の的でした。学生として、オープンソースは私たちにとって重要な学習プラットフォームです。これには、Linux オープン ソース ライブラリでオペレーティング システムの基礎となる原理を学習したり、fio および liburing ライブラリで I/O 関連の知識を学習したり、Zstd オープン ライブラリで圧縮原理を学習したりすることが含まれます。ソースライブラリなど。これらの優れたオープン ソース コードを使用すると、誰もが実際のシナリオとアルゴリズムにアクセスできると同時に、適切なプログラミング習慣を学ぶことができます。

一方で、大学院卒業後は、オープンソースコードも科学研究活動を行う上で必須の条件となります。オープンソースがなければ、より単純なプロジェクトの場合、研究を開始するまでに再現に数週間から数か月かかる場合があります。複雑なシステムを研究するための条件は基本的にありません。したがって、トピックを選択するときは、通常、オープンソース プロジェクトを優先します。

6. クラスター バージョンをオープンソースにしているデータベースはほとんどありませんが、TDengine のオープンソース クラスター バージョンについてはどう思いますか?

TDengine のオープンソースは非常に成功しており、GitHub では 20,000 個以上のスターが付いており、コミュニティ内で非常に大きな影響力を持っています。オープンソースは世界中の開発者からの広範な参加とブレインストーミングを呼び込むことができ、それはプロジェクト自体の長期的な発展に有益だと思います。TDengine のクラスター バージョンはオープンソースであるため、より高度で新鮮な血液を吸収するのに役立ち、また、TDengine に対するユーザーの理解がより透明になり、信頼性が高まります。

7. TDengine の貢献者として、TDengine の現在の開発についてどう思いますか? TDengine に関するその他の提案はありますか?

開発プロセスでは、オープンソース コミュニティのマネージャーと連絡を取り、多くの協力を得ることができ、協力プロセスは非常に楽しく充実したものでした。TDengine コミュニティは非常に健全で活発であると感じています。Taosi はオープンソース コミュニティの発展を非常に重視しており、個人的にはオープンソースの TDengine は非常に有望だと考えています。提案としては、モジュールが配置されているファイルの紹介や開発・デバッグの効率的な手順など、開発者に適した開発ドキュメントがあれば、新規開発者にとってより効率的です。

8. 時系列データベースの分野における TDengine の利点は何だと思いますか?

利点としては、オープンソースであることに加えて、開発プロセス中に感じたことは、TDengine は比較的充実したエコシステムを備えており、他の多くのオープンソース プロジェクトやツールと統合されており、ユーザーに幅広い選択肢を提供できるということです。そして柔軟性。

9. 今後のご自身の発展についてはどのように考えていますか?

今は修士課程を卒業したらそのまま就職するつもりです。私にとって、博士課程の勉強は時間コストが比較的高いからです(笑)。卒業後も、ストレージ分野で働き続ける可能性があります。私は以前、Dapuwei と Alibaba Cloud で一定期間インターンをしていました。この期間中、私が取り組んだ方向性は比較的低レベルで、ストレージ メディアとストレージの相互作用が関係していました。ソフトウェア層、将来的にはストレージベースに移行する可能性もあります。新卒採用の秋採用の時期になりましたが、今年も比較的熾烈な秋採用が行われていますので、一緒に頑張りましょう。

最後に書きます

近年、TDengine の製品機能が向上し、オープンソースの影響が徐々に拡大するにつれ、TDengine を研究テーマとして利用して論文を発表する大学大学院生や学者が増えています。機能の改善に注力しており、産業用モノのインターネット、スマートパーク、自動運転、タバコ業界など、多くの業界のビッグデータシナリオにおける TDengine のアプリケーションとパフォーマンスの分析に重点を置いている企業もあります。コミュニティ開発者がより直接的に参照したり相談したりできるように、そのような論文の概要もまとめました。「TDengine に関する論文や資料はすべてここにあります。皆さんが手に取るのを待っています!」

これらの外部資料に加えて、TDengine は、エンタープライズ ユーザーがデータ アーキテクチャを変革するのを支援するプロセスにおいて、多くの実践的な経験も蓄積してきました。これらのエクスペリエンスのほとんどは、エンタープライズ開発者によって作成され、生成されたユーザー ケースであり、TDengine の公式ブログで公開されました ( https://www.taosdata.com/tdengine-user-cases )参照できます。

このインタビューについてさらに詳しい質問がある場合、またはデータの問題について TDengine ソリューション アーキテクトに相談したい場合は、小さな T vx :tdengine を追加して要件を詳しく説明していただければ、タイムリーなサポートを提供します。

Microsoft、新しい「Windowsアプリ」 .NET 8を正式にGAリリース、最新LTSバージョン XiaomiはXiaomi Velaが完全にオープンソースであり、基盤となるカーネルはNuttXであることを正式に発表 Alibaba Cloud 11.12 障害の原因が明らかに:Access Key Service(アクセスKey) 例外 Vite 5 が正式にリリースされた GitHub レポート : TypeScript が Java に取って代わり、3 番目に人気のある言語になる Rust で Prettier を書き換えるために数十万ドルの報酬を提供 オープンソース作者に「プロジェクトはまだ生きていますか?」と尋ねる 非常に失礼で、失礼な バイトダンス: AI を使用して Linux カーネル パラメータ 演算子を自動的に調整する 魔法の操作: バックグラウンドでネットワークを切断し、ブロードバンド アカウントを無効化し、ユーザーに光モデムの変更を強制する
{{名前}}
{{名前}}

おすすめ

転載: my.oschina.net/u/4248671/blog/10149223