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

機能

ハイライト

  1. フル Vectorizied-Engine サポート、パフォーマンスを大幅に向上

    標準的な ssb-100-flat ベンチマークにおいて、1.2 のパフォーマンスは 1.1 より 2 倍高速です。複雑な TPCH 100 ベンチマークにおいて、1.2 のパフォーマンスは 1.1 より 3 倍高速です。

  2. Merge-on-Write Unique Key

    Unique Key Model での Merge-On-Write をサポートしました。このモードは、データ書き込み時に削除または更新が必要なデータをマークし、クエリ時の Merge-On-Read のオーバーヘッドを回避することで、更新可能なデータモデルでの読み取り効率を大幅に向上させます。

  3. Multi カタログ

    multi-catalog 機能により、Doris は外部データソースに迅速にアクセスする能力を提供します。ユーザーは CREATE CATALOG コマンドを通じて外部データソースに接続できます。Doris は外部データソースのライブラリとテーブル情報を自動的にマップします。その後、ユーザーは通常のテーブルにアクセスするのと同様に、これらの外部データソースのデータにアクセスできます。ユーザーが各テーブルに対して手動で外部マッピングを確立する必要がある複雑な操作を回避できます。

    現在この機能は以下のデータソースをサポートしています:

    1. Hive Metastore:Hive、Iceberg、Hudi を含むデータテーブルにアクセスできます。Alibaba Cloud の DataLake Formation などの Hive Metastore 互換のデータソースにも接続できます。HDFS とオブジェクトストレージ両方でのデータアクセスをサポートします。
    2. Elasticsearch:ES データソースにアクセスします。
    3. JDBC:JDBC プロトコルを通じて MySQL にアクセスします。

    ドキュメント:https://doris.apache.org//docs/dev/lakehouse/multi-catalog)

    注意:対応する権限レベルも自動的に変更されます。詳細は「アップグレード注意事項」セクションを参照してください。

  4. 軽量なテーブル構造変更

新しいバージョンでは、データテーブルへの列の追加・削除操作において、データファイルを同期的に変更する必要がなくなり、FE でメタデータを更新するだけで済むため、ミリ秒レベルの Schema Change 操作を実現します。この機能により、上流の CDC データの DDL 同期機能を実現できます。例えば、ユーザーは Flink CDC を使用して上流データベースから Doris への DML および DDL 同期を実現できます。

ドキュメント:https://doris.apache.org//docs/dev/sql-manual/sql-reference/Data-Definition-Statements/Create/CREATE-TABLE

テーブル作成時、properties で "light_schema_change"="true" を設定します。

  1. JDBC facade

    ユーザーは JDBC を通じて外部データソースに接続できます。現在サポート済み:

    • MySQL
    • PostgreSQL
    • Oracle
    • SQL サーバー
    • Clickhouse

    ドキュメント:https://doris.apache.org/en/docs/dev/lakehouse/multi-catalog/jdbc

    注意:ODBC 機能は後のバージョンで削除される予定です。JDBC への切り替えをお試しください。

  2. JAVA UDF

    Java での UDF/UDAF の記述をサポートし、ユーザーが Java エコシステムでカスタム関数を使用することを便利にします。同時に、オフヒープメモリや Zero Copy などの技術により、言語間データアクセスの効率を大幅に向上させました。

    ドキュメント:https://doris.apache.org//docs/dev/ecosystem/udf/java-user-defined-function

    例:https://github.com/apache/doris/tree/master/samples/doris-demo

  3. Remote UDF

    RPC を通じてリモートユーザー定義関数サービスへのアクセスをサポートし、ユーザーが UDF を記述する際の言語制限を完全に排除します。ユーザーは任意のプログラミング言語を使用してカスタム関数を実装し、複雑なデータ分析作業を完了できます。

    ドキュメント:https://doris.apache.org//docs/ecosystem/udf/remote-user-defined-function

    例:https://github.com/apache/doris/tree/master/samples/doris-demo

  4. より多くのデータタイプサポート

    • Array 型

      Array 型をサポートしました。ネストした array 型もサポートします。ユーザープロファイルやタグなどの一部のシナリオにおいて、Array 型を使用してビジネスシナリオにより適応できます。同時に、新しいバージョンでは、データタイプの実際のシナリオでの応用をより良くサポートするために、大量のデータ関連関数も実装しました。

    ドキュメント:https://doris.apache.org//docs/dev/sql-manual/sql-reference/Data-Types/ARRAY

    関連関数:https://doris.apache.org//docs/dev/sql-manual/sql-functions/array-functions/array_max

    • Jsonb 型

      バイナリ Json データ型:Jsonb をサポートしました。この型はより コンパクトな json エンコーディング形式を提供し、同時にエンコーディング形式でのデータアクセスを提供します。文字列に格納された json データと比較して数倍新しく、改善できます。

    ドキュメント:https://doris.apache.org//docs/dev/sql-manual/sql-reference/Data-Types/JSONB

    関連関数:https://doris.apache.org//docs/dev/sql-manual/sql-functions/json-functions/jsonb_parse

    • Date V2

      影響範囲:

      1. ユーザーはテーブル作成時に datev2 と datetimev2 を指定する必要があり、元のテーブルの date と datetime は影響を受けません。
      2. datev2 と datetimev2 が元の date と datetime と計算される場合(例:等価結合)、元の型は新しい型にキャストされて計算されます
      3. 例はドキュメントに記載されています

      ドキュメント:https://doris.apache.org/docs/1.2/sql-manual/sql-reference/Data-Types/DATEV2

その他

  1. 新しいメモリ管理フレームワーク

    ドキュメント:https://doris.apache.org//docs/dev/admin-manual/maint-monitor/memory-management/memory-tracker

  2. table Valued Function

    Doris は一連の table Valued Function (TVF) を実装しました。TVF は通常のテーブルと見なすことができ、SQL で「テーブル」が使用できるすべての場所に表示できます。

    例えば、S3 TVF を使用してオブジェクトストレージでのデータインポートを実装できます:

    insert into tbl select * from s3("s3://bucket/file.*", "ak" = "xx", "sk" = "xxx") where c1 > 2;

または、HDFS上のデータファイルを直接クエリする:

```
insert into tbl select * from hdfs("hdfs://bucket/file.*") where c1 > 2;
```

TVFはユーザーがSQLの豊富な表現力を最大限に活用し、様々なデータを柔軟に処理できるよう支援します。

ドキュメント:

https://doris.apache.org//docs/dev/sql-manual/sql-functions/table-functions/s3

https://doris.apache.org//docs/dev/sql-manual/sql-functions/table-functions/hdfs

3. より便利なパーティション作成方法

`FROM TO`コマンドによる時間範囲内での複数パーティション作成をサポート。

4. カラム名変更

Light Schema Changeが有効なテーブルに対して、カラム名変更をサポート。

ドキュメント: https://doris.apache.org//docs/dev/sql-manual/sql-reference/Data-Definition-Statements/Alter/ALTER-TABLE-RENAME

5. より豊富な権限管理

- 行レベル権限のサポート

行レベル権限は`CREATE ROW POLICY`コマンドで作成可能。

ドキュメント: https://doris.apache.org//docs/dev/sql-manual/sql-reference/Data-Definition-Statements/Create/CREATE-POLICY

- パスワード強度、有効期限などの指定をサポート。

- 複数回のログイン失敗後のアカウントロックをサポート。

ドキュメント: https://doris.apache.org//docs/dev/sql-manual/sql-reference/Account-Management-Statements/ALTER-USER

6. インポート

- CSVインポートでヘッダー付きcsvファイルをサポート。

ドキュメント内で`csv_with_names`を検索: https://doris.apache.org//docs/dev/sql-manual/sql-reference/Data-Manipulation-Statements/Load/STREAM-LOAD/

- Stream Loadに`hidden_columns`を追加、削除フラグカラムとシーケンスカラムを明示的に指定可能。

ドキュメント内で`hidden_columns`を検索: https://doris.apache.org//docs/dev/sql-manual/sql-reference/Data-Manipulation-Statements/Load/STREAM-LOAD

- Spark LoadでParquetとORCファイルインポートをサポート。

- 完了したインポートLabelsのクリーンアップをサポート

ドキュメント: https://doris.apache.org//docs/dev/sql-manual/sql-reference/Data-Manipulation-Statements/Load/CLEAN-LABEL

- ステータス別のインポートジョブ一括キャンセルをサポート

ドキュメント: https://doris.apache.org//docs/dev/sql-manual/sql-reference/Data-Manipulation-Statements/Load/CANCEL-LOAD

- broker loadでAlibaba Cloud oss、Tencent Cloud cos/chdfs、Huawei Cloud obsのサポートを追加。

ドキュメント: https://doris.apache.org//docs/dev/advanced/broker

- hive-site.xmlファイル設定を通じたhdfsアクセスをサポート。

ドキュメント: https://doris.apache.org//docs/dev/admin-manual/config/config-dir

7. SHOW CATALOG RECYCLE BIN機能を通じたカタログrecycle binの内容表示をサポート。

ドキュメント: https://doris.apache.org//docs/dev/sql-manual/sql-reference/Show-Statements/SHOW-CATALOG-RECYCLE-BIN

8. SELECT * EXCEPT構文をサポート。

ドキュメント: https://doris.apache.org//docs/dev/data-table/basic-usage

9. OUTFILEでORC形式エクスポートをサポート。また、マルチバイト区切り文字をサポート。

ドキュメント: https://doris.apache.org//docs/dev/sql-manual/sql-reference/Data-Manipulation-Statements/OUTFILE

10. 設定によるQuery Profiles保存可能数の変更をサポート。

ドキュメントでFE設定項目を検索: max_query_profile_num

11. DELETE文でIN述語条件をサポート。また、パーティションプルーニングをサポート。

ドキュメント: https://doris.apache.org//docs/dev/sql-manual/sql-reference/Data-Manipulation-Statements/Manipulation/DELETE

12. 時間カラムのデフォルト値でCURRENT_TIMESTAMP使用をサポート

ドキュメント内で"CURRENT_TIMESTAMP"を検索: https://doris.apache.org//docs/dev/sql-manual/sql-reference/Data-Definition-Statements/Create/CREATE-TABLE

13. 2つのシステムテーブルを追加: backends、rowsets

ドキュメント:

https://doris.apache.org//docs/dev/admin-manual/system-table/backends

https://doris.apache.org//docs/dev/admin-manual/system-table/rowsets

14. バックアップと復元

- Restoreジョブで`reserve_replica`パラメータをサポート、復元テーブルのレプリカ数をバックアップと同じにする。

- Restoreジョブで`reserve_dynamic_partition_enable`パラメータをサポート、復元テーブルで動的パーティションを有効に保つ。

ドキュメント: https://doris.apache.org//docs/dev/sql-manual/sql-reference/Data-Definition-Statements/Backup-and-Restore/RESTORE

- 組み込みlibhdfsを通じたバックアップと復元操作をサポート、brokerへの依存を廃止。

ドキュメント: https://doris.apache.org//docs/dev/sql-manual/sql-reference/Data-Definition-Statements/Backup-and-Restore/CREATE-REPOSITORY

15. 同一マシン内の複数ディスク間でのデータバランスをサポート

ドキュメント:

https://doris.apache.org//docs/dev/sql-manual/sql-reference/Database-Administration-Statements/ADMIN-REBALANCE-DISK

https://doris.apache.org//docs/dev/sql-manual/sql-reference/Database-Administration-Statements/ADMIN-CANCEL-REBALANCE-DISK

16. Routine LoadでKerberos認証Kafkaサービスの購読をサポート。

ドキュメント内でkerberosを検索: https://doris.apache.org//docs/dev/data-operate/import/import-way/routine-load-manual

17. 新しいbuilt-in-function

以下の組み込み関数を追加:

- `cbrt`
- `sequence_match/sequence_count`
- `mask/mask_first_n/mask_last_n`
- `elt`
- `any/any_value`
- `group_bitmap_xor`
- `ntile`
- `nvl`
- `uuid`
- `initcap`
- `regexp_replace_one/regexp_extract_all`
- `multi_search_all_positions/multi_match_any`
- `domain/domain_without_www/protocol`
- `running_difference`
- `bitmap_hash64`
- `murmur_hash3_64`
- `to_monday`
- `not_null_or_empty`
- `window_funnel`
- `group_bit_and/group_bit_or/group_bit_xor`
- `outer combine`
- および全てのarray functions

アップグレード通知

既知の問題

  • JDK11の使用でBEクラッシュが発生、代わりにJDK8を使用してください。

動作変更

  • 権限レベル変更

    catalog levelが導入されたため、対応するユーザー権限レベルも自動的に変更されます。ルールは以下の通りです:

    • GlobalPrivsとResourcePrivsは変更なし
    • CatalogPrivsレベルを追加。
    • 元のDatabasePrivsレベルにinternalプレフィックスを追加(internal catalog内のdbを示す)
    • 元のTablePrivsレベルにinternalプレフィックスを追加(internal catalog内のtblを表す)
  • GroupBy句とHaving句において、エイリアスよりもカラム名を優先してマッチ。(#14408)

  • mv_で始まるカラム作成はサポート終了。mv_はマテリアライズドビューの予約キーワード (#14361)

  • order by文によって追加される65535行のデフォルト制限を削除し、この制限を設定するためのセッション変数default_order_by_limitを追加。(#12478)

  • "Create table As Select"で生成されたテーブルで、すべての文字列カラムは統一してstring型を使用し、varchar/char/stringを区別しない (#14382)

  • 監査ログにおいて、dbとユーザー名の前のdefault_clusterという文字を削除。(#13499) (#11408)

  • 監査ログにsql digestフィールドを追加 (#8919)

  • union句は常にorder byロジックを変更。新バージョンでは、order by句はunion実行後に実行される(括弧で明示的に関連付けられない限り)。(#9745)

  • decommission操作中、recycle bin内のtabletは無視され、decomissionの完了を保証。(#14028)

  • Decimalの返却結果は、元カラムで宣言された精度、またはcast関数で指定された精度に従って表示。(#13437)

  • カラム名長制限を64から256に変更 (#14671)

  • FE設定項目の変更

    • enable_vectorized_loadパラメータをデフォルトで有効。(#11833)

    • create_table_timeout値を増加。テーブル作成操作のデフォルトタイムアウトが増加。(#13520)

    • stream_load_default_timeout_secondのデフォルト値を3日に変更。

    • alter_table_timeout_secondのデフォルト値を1か月に変更。

    • パラメータmax_replica_count_when_schema_changeを増加し、alter jobに関わるレプリカ数を制限、デフォルトは100000。(#12850)

    • disable_iceberg_hudi_tableを追加。icebergとhudiの外観はデフォルトで無効、multi catalog機能を推奨。(#13932)

  • BE設定項目の変更

    • disable_stream_load_2pcパラメータを削除。2PCのstream loadが直接使用可能。(#13520)

    • tablet_rowset_stale_sweep_time_secを1800秒から300秒に変更。

    • compactionに関する設定項目名を再設計 (#13495)

    • メモリ最適化に関するパラメータを見直し (#13781)

  • セッション変数の変更

    • 変数enable_insert_strictをデフォルトでtrueに変更。これにより、以前は実行可能だったが不正な値を挿入していた一部のinsert操作が実行されなくなります。(11866)

    • 変数enable_local_exchangeをデフォルトでtrueに変更 (#13292)

    • デフォルトでlz4圧縮によるデータ送信、変数fragment_transmission_compression_codecで制御 (#11955)

    • uniqueまたはaggモデルデータのデバッグ用skip_storage_engine_merge変数を追加 (#11952)

      ドキュメント: https://doris.apache.org//docs/dev/advanced/variables

  • BEスタートアップスクリプトは/proc/sys/vm/max_map_countを通じて値が200Wより大きいかチェック。そうでなければ起動失敗。(#11052)

  • mini loadインターフェースを削除 (#10520)

  • FE Metadataバージョン

    FE Meta Versionが107から114に変更、アップグレード後はロールバック不可。

アップグレード中

  1. アップグレード準備

    • 置換が必要: lib、binディレクトリ(start/stopスクリプトが変更済み)

    • BEもJAVA_HOMEの設定が必要、JDBC tableとJava UDFを既にサポート。

    • fe.confのデフォルトJVM Xmxパラメータが8GBに変更。

  2. アップグレード処理中の可能性があるエラー

    • repeat関数が使用できずエラー報告: vectorized repeat function cannot be executed、アップグレード前にvectorized実行エンジンをオフにすることが可能。(#13868)

    • schema changeがエラーで失敗: desc_tbl is not set. Maybe the FE version is not equal to the BE (#13822)

    • Vectorized hash joinが使用できずエラー報告。vectorized hash join cannot be executed。アップグレード前にvectorized実行エンジンをオフにすることが可能。(#13753)

    上記エラーは完全アップグレード後に正常に戻ります。

パフォーマンスへの影響

  • デフォルトで、新バージョンBEのメモリアロケータとしてJeMallocを使用、TcMallocに代替 (#13367)

  • tablet sinkのバッチサイズを最小8Kに変更。(#13912)

  • デフォルトでchunk allocatorを無効化 (#13285)

API変更

感謝

このリリースに貢献したすべての方々に感謝します!(アルファベット順)

@924060929
@a19920714liou
@adonis0147
@Aiden-Dong
@aiwenmo
@AshinGau
@b19mud
@BePPPower
@BiteTheDDDDt
@bridgeDream
@ByteYue
@caiconghui
@CalvinKirs
@cambyzju
@caoliang-web
@carlvinhust2012
@catpineapple
@ccoffline
@chenlinzhong
@chovy-3012
@coderjiang
@cxzl25
@dataalive
@dataroaring
@dependabot[bot]
@dinggege1024
@DongLiang-0
@Doris-Extras
@eldenmoon
@EmmyMiao87
@englefly
@FreeOnePlus
@Gabriel39
@gaodayue
@geniusjoe
@gj-zhang
@gnehil
@GoGoWen
@HappenLee
@hello-stephen
@Henry2SS
@hf200012
@huyuanfeng2018
@jacktengg
@jackwener
@jeffreys-cat
@Jibing-Li
@JNSimba
@Kikyou1997
@Lchangliang
@LemonLiTree
@lexoning
@liaoxin01
@lide-reed
@link3280
@liutang123
@liuyaolin
@LOVEGISER
@lsy3993
@luozenglin
@luzhijing
@madongz
@morningman
@morningman-cmy
@morrySnow
@mrhhsg
@Myasuka
@myfjdthink
@nextdreamblue
@pan3793
@pangzhili
@pengxiangyu
@platoneko
@qidaye
@qzsee
@SaintBacchus
@SeekingYang
@smallhibiscus
@sohardforaname
@song7788q
@spaces-X
@ssusieee
@stalary
@starocean999
@SWJTU-ZhangLei
@TaoZex
@timelxy
@Wahno
@wangbo
@wangshuo128
@wangyf0555
@weizhengte
@weizuo93
@wsjz
@wunan1210
@xhmz
@xiaokang
@xiaokangguo
@xinyiZzz
@xy720
@yangzhg
@Yankee24
@yeyudefeng
@yiguolei
@yinzhijian
@yixiutt
@yuanyuan8983
@zbtzbtzbt
@zenoyang
@zhangboya1
@zhangstar333
@zhannngchen
@ZHbamboo
@zhengshiJ
@zhenhb
@zhqu1148980644
@zuochunwei
@zy-kkk