メインコンテンツまでスキップ

リリース 1.1.0

バージョン1.1では、コンピューティング層とストレージ層の完全なベクトル化を実現し、ベクトル化実行エンジンを安定した機能として正式に有効化しました。すべてのクエリはデフォルトでベクトル化実行エンジンによって実行され、パフォーマンスは以前のバージョンより3~5倍向上しています。Apache Icebergの外部テーブルにアクセスする機能が強化され、DorisとIceberg内のデータのフェデレーテッドクエリをサポートし、データレイクにおけるApache Dorisの分析機能を拡張しました。元のLZ4に加えて、ZSTDデータ圧縮アルゴリズムが追加され、データ圧縮率がさらに向上しました。以前のバージョンの多くのパフォーマンスと安定性の問題が修正され、システムの安定性が大幅に改善されました。ダウンロードしてご利用いただくことを推奨します。

アップグレード注意事項

ベクトル化実行エンジンがデフォルトで有効

バージョン1.0では、ベクトル化実行エンジンを実験的機能として導入し、ユーザーがクエリを実行する際にはset batch_size = 4096set enable_vectorized_engine = trueでセッション変数を設定して手動で有効化する必要がありました。

バージョン1.1では、ベクトル化実行エンジンを安定した機能として正式に完全有効化しました。セッション変数enable_vectorized_engineはデフォルトでtrueに設定されています。すべてのクエリはデフォルトでベクトル化実行エンジンを通じて実行されます。

BEバイナリファイルの名前変更

BEバイナリファイルはpalo_beからdoris_beに名前が変更されました。クラスター管理やその他の操作でプロセス名に依存していた場合は、関連スクリプトの修正にご注意ください。

Segmentストレージ形式のアップグレード

Apache Dorisの初期バージョンのストレージ形式はSegment V1でした。バージョン0.12では、新しいストレージ形式としてSegment V2を実装し、Bitmapインデックス、メモリテーブル、ページキャッシュ、辞書圧縮、遅延マテリアライゼーションなど多くの機能を導入しました。バージョン0.13以降、新しく作成されるテーブルのデフォルトストレージ形式はSegment V2となり、Segment V1形式との互換性も維持されています。

コード構造の保守性を確保し、冗長な履歴コードによる追加の学習・開発コストを削減するため、次のバージョンからSegment v1ストレージ形式のサポートを終了することを決定しました。このコード部分はApache Doris 1.2バージョンで削除される予定です。

通常のアップグレード

通常のアップグレード操作については、公式サイトのクラスターアップグレードドキュメントに従ってローリングアップグレードを実行できます。

https://doris.apache.org//docs/admin-manual/cluster-management/upgrade

機能

データのランダム分散のサポート[実験的]

一部のシナリオ(ログデータ分析など)では、ユーザーがデータスキューを回避するための適切なバケットキーを見つけられない場合があるため、システムが問題を解決するための追加の分散方法を提供する必要があります。

そのため、テーブル作成時にDISTRIBUTED BY random BUCKETS numberを設定してランダム分散を使用できます。データはインポート時にランダムに単一のタブレットに書き込まれ、読み込みプロセス中のデータファンアウトが削減されます。リソースオーバーヘッドを削減し、システムの安定性を向上させます。

Iceberg外部テーブルの作成のサポート[実験的]

Iceberg外部テーブルは、Icebergに保存されたデータへの直接アクセスをApache Dorisに提供します。Iceberg外部テーブルを通じて、ローカルストレージとIcebergに保存されたデータのフェデレーテッドクエリを実装でき、面倒なデータローディング作業を省き、データ分析のシステムアーキテクチャを簡素化し、より複雑な分析操作を実行できます。

バージョン1.1では、Apache DorisはIceberg外部テーブルの作成とデータクエリをサポートし、REFRESHコマンドを通じてIcebergデータベース内のすべてのテーブルスキーマの自動同期をサポートします。

ZSTDデータ圧縮アルゴリズムの追加

現在、Apache Dorisのデータ圧縮方法はシステムによって統一的に指定され、デフォルトはLZ4です。データストレージコストに敏感な一部のシナリオでは、元のデータ圧縮率要件を満たすことができません。

バージョン1.1では、ユーザーはテーブル作成時にテーブルプロパティで"compression"="zstd"を設定して、圧縮方法をZSTDとして指定できます。25GB、1億1000万行のテキストログテストデータにおいて、最高圧縮率は約10倍で、元の圧縮率より53%高く、ディスクからのデータ読み取りと解凍速度は30%向上しました。

改善

より包括的なベクトル化サポート

バージョン1.1では、コンピューティング層とストレージ層の完全なベクトル化を実装しました。これには以下が含まれます:

すべての組み込み関数のベクトル化を実装

ストレージ層でベクトル化を実装し、低カーディナリティ文字列カラムの辞書最適化をサポート

ベクトル化エンジンの多数のパフォーマンスと安定性問題を最適化・解決

SSBとTPC-H標準テストデータセットでApache Dorisバージョン1.1とバージョン0.15のパフォーマンスをテストしました:

SSBテストデータセットの13のSQLすべてで、バージョン1.1はバージョン0.15より優れており、全体的なパフォーマンスは約3倍改善され、バージョン1.0での一部シナリオにおけるパフォーマンス低下の問題を解決しました。

TPC-Hテストデータセットの22のSQLすべてで、バージョン1.1はバージョン0.15より優れており、全体的なパフォーマンスは約4.5倍改善され、一部のシナリオのパフォーマンスは10倍以上向上しました。

release-note-1.1.0-SSB

SSB Benchmark

release-note-1.1.0-TPC-H

TPC-H Benchmark

パフォーマンステストレポート

https://doris.apache.org//docs/benchmark/ssb

https://doris.apache.org//docs/benchmark/tpch

Compactionロジックの最適化とリアルタイム保証

Apache Dorisでは、各コミットがデータバージョンを生成します。高同時書き込みシナリオでは、データバージョンが多すぎてcompactionが間に合わないため-235エラーが発生しやすく、クエリパフォーマンスも相応に低下します。

バージョン1.1では、QuickCompactionを導入し、データバージョンが増加した際にcompactionを能動的にトリガーします。同時に、フラグメントメタデータをスキャンする能力を向上させることで、データバージョンが多すぎるフラグメントを迅速に見つけてcompactionをトリガーできます。能動的トリガーと受動的スキャンにより、データマージのリアルタイム問題を完全に解決しました。

同時に、高頻度の小ファイルcumulative compactionに対して、compactionタスクのスケジューリングと分離を実装し、重量級のbase compactionが新しいデータのマージに影響することを防ぎます。

最後に、小ファイルのマージに対して、小ファイルマージ戦略を最適化し、段階的マージの方法を採用します。マージに参加するファイルは毎回同じデータ規模に属し、サイズが大きく異なるバージョンのマージを防ぎ、段階的に階層マージすることで、単一ファイルがマージに参加する回数を減らし、システムのCPU消費を大幅に節約できます。

データ上流が毎秒10万の書き込み頻度を維持する場合(20の同時書き込みタスク、ジョブあたり5000行、チェックポイント間隔1秒)、バージョン1.1は以下のような動作をします:

  • 迅速なデータ統合:Tabletバージョンは50以下に維持され、compactionスコアは安定します。以前のバージョンで高同時書き込み時に頻繁に発生していた-235問題と比較して、compactionマージ効率は10倍以上改善されました。

  • CPU リソース消費の大幅削減:小ファイルCompactionの戦略が最適化されました。上記の高同時書き込みシナリオで、CPUリソース消費は25%削減されました。

  • 安定したクエリ時間消費:データの全体的な秩序性が向上し、クエリ時間消費の変動が大幅に削減されました。高同時書き込み時のクエリ時間消費はクエリのみの場合と同じであり、クエリパフォーマンスは以前のバージョンと比較して3~4倍改善されました。

ParquetとORCファイルの読み取り効率最適化

arrowパラメータを調整し、arrowのマルチスレッド読み取り機能を使用して各row_groupのArrow読み取りを高速化し、SPSCモデルに修正してプリフェッチによりネットワーク待機コストを削減しました。最適化後、Parquetファイルインポートのパフォーマンスは4~5倍改善されました。

より安全なメタデータCheckpoint

メタデータcheckpoint後に生成されるイメージファイルのダブルチェックと履歴イメージファイルの保持機能により、イメージファイルエラーによるメタデータ破損の問題を解決しました。

バグ修正

データバージョンの欠落によりデータがクエリできない問題の修正(重大)

この問題はバージョン1.0で導入され、複数レプリカのデータバージョンの損失を引き起こす可能性がありました。

ローディングタスクのリソース使用量制限に対するリソース分離が無効になる問題の修正(中程度)

1.1では、broker loadとroutine loadは指定されたリソースタグを持つBackendsを使用してロードを実行します。

2GBを超えるネットワークデータパケットの転送にHTTP BRPCを使用(中程度)

以前のバージョンでは、BackendsはBRPCを通じて2GBを超えるデータを転送する際に、 データ転送エラーを引き起こす可能性がありました。

その他

Mini Loadの無効化

/_loadインターフェースはデフォルトで無効化されています。/_stream_loadインターフェースを統一してご使用ください。 もちろん、FE設定項目disable_mini_loadをオフにすることで再有効化できます。

Mini Loadインターフェースはバージョン1.2で完全に削除される予定です。

SegmentV1ストレージ形式の完全無効化

SegmentV1形式のデータの作成はもう許可されません。既存のデータは引き続き正常にアクセスできます。 ADMIN SHOW TABLET STORAGE FORMATステートメントを使用して、クラスター内にSegmentV1形式のデータが まだ存在するかを確認できます。そして、データ変換コマンドを通じてSegmentV2に変換できます。

バージョン1.2では、SegmentV1データへのアクセスはサポートされなくなります。

String型の最大長の制限

以前のバージョンでは、String型の最大長は2GBまで許可されていました。 バージョン1.1では、string型の最大長を1MBに制限します。この長さを超える文字列はもう書き込めません。 同時に、String型をテーブルのパーティショニングまたはバケッティングカラムとして使用することはサポートされなくなりました。

すでに書き込まれたString型は正常にアクセスできます。

fastjson関連の脆弱性の修正

fastjsonセキュリティ脆弱性を修正するため、Canalバージョンを更新しました。

ADMIN DIAGNOSE TABLETコマンドの追加

指定されたtabletの問題を迅速に診断するために使用されます。

ダウンロードして使用

ダウンロードリンク

hhttps://doris.apache.org/download

フィードバック

使用中に問題が発生した場合は、GitHubディスカッションフォーラムまたはDevメールグループを通じていつでもお気軽にご連絡ください。

GitHub Forum: https://github.com/apache/doris/discussions

Mailing list: dev@doris.apache.org

謝辞

このリリースに貢献してくださったすべての方々に感謝いたします:


@adonis0147

@airborne12

@amosbird

@aopangzi

@arthuryangcs

@awakeljw

@BePPPower

@BiteTheDDDDt

@bridgeDream

@caiconghui

@cambyzju

@ccoffline

@chenlinzhong

@daikon12

@DarvenDuan

@dataalive

@dataroaring

@deardeng

@Doris-Extras

@emerkfu

@EmmyMiao87

@englefly

@Gabriel39

@GoGoWen

@gtchaos

@HappenLee

@hello-stephen

@Henry2SS

@hewei-nju

@hf200012

@jacktengg

@jackwener

@Jibing-Li

@JNSimba

@kangshisen

@Kikyou1997

@kylinmac

@Lchangliang

@leo65535

@liaoxin01

@liutang123

@lovingfeel

@luozenglin

@luwei16

@luzhijing

@mklzl

@morningman

@morrySnow

@nextdreamblue

@Nivane

@pengxiangyu

@qidaye

@qzsee

@SaintBacchus

@SleepyBear96

@smallhibiscus

@spaces-X

@stalary

@starocean999

@steadyBoy

@SWJTU-ZhangLei

@Tanya-W

@tarepanda1024

@tianhui5

@Userwhite

@wangbo

@wangyf0555

@weizuo93

@whutpencil

@wsjz

@wunan1210

@xiaokang

@xinyiZzz

@xlwh

@xy720

@yangzhg

@Yankee24

@yiguolei

@yinzhijian

@yixiutt

@zbtzbtzbt

@zenoyang

@zhangstar333

@zhangyifan27

@zhannngchen

@zhengshengjun

@zhengshiJ

@zingdle

@zuochunwei

@zy-kkk