親愛的社區(qū)小伙伴們堤框,經(jīng)歷數(shù)月的等候域滥,我們很高興地宣布,Apache Doris 于 2022 年 12 月 7 日迎來了 1.2.0 Release 版本的正式發(fā)布蜈抓!有近?118 位 Contributor 為 Apache Doris 提交了超 2400 項(xiàng)優(yōu)化和修復(fù)启绰,感謝每一位讓 Apache Doris 更好的你!
自從社區(qū)正式確立 LTS 版本管理機(jī)制后沟使,在 1.1.x 系列版本中不再合入大的功能委可,僅提供問題修復(fù)和穩(wěn)定性改進(jìn),力求滿足更多社區(qū)用戶在穩(wěn)定性方面的高要求。而綜合考慮版本迭代節(jié)奏和用戶需求后着倾,我們決定將眾多新特性在 1.2.0 版本中發(fā)布拾酝,這無疑承載了眾多社區(qū)用戶和開發(fā)者的深切期盼,同時(shí)也是一場(chǎng)厚積而薄發(fā)后的全面進(jìn)化卡者!
在 1.2 版本中蒿囤,我們實(shí)現(xiàn)了全面向量化、實(shí)現(xiàn)多場(chǎng)景查詢性能3-11 倍的提升崇决,在 Unique Key 模型上實(shí)現(xiàn)了?Merge-on-Write?的數(shù)據(jù)更新模式材诽、數(shù)據(jù)高頻更新時(shí)查詢性能提升達(dá) 3-6 倍,增加了?Multi-Catalog 多源數(shù)據(jù)目錄恒傻、提供了無縫接入 Hive脸侥、ES、Hudi碌冶、Iceberg 等外部數(shù)據(jù)源的能力湿痢,引入了?Light Schema Change?輕量表結(jié)構(gòu)變更、實(shí)現(xiàn)毫秒級(jí)的 Schema Change 操作并且可以借助 Flink CDC 自動(dòng)同步上游數(shù)據(jù)庫(kù)的 DML 和 DDL 操作扑庞,以?JDBC 外部表替換了過去的 ODBC 外部表譬重,支持了 Java UDF 和 Romote UDF 以及 Array 數(shù)組類型和 JSONB 類型,修復(fù)了諸多之前版本的性能和穩(wěn)定性問題罐氨,推薦大家下載和使用臀规!
下載安裝
GitHub下載:?https://github.com/apache/doris/releases
官網(wǎng)下載頁(yè):?https://doris.apache.org/download
源碼地址:?https://github.com/apache/doris/releases/tag/1.2.0-rc04
下載說明
由于 Apache 服務(wù)器對(duì)文件大小限制,官網(wǎng)下載頁(yè)的 1.2.0 版本的二進(jìn)制程序分為三個(gè)包:
apache-doris-fe
apache-doris-be
apache-doris-java-udf-jar-with-dependencies
其中新增的apache-doris-java-udf-jar-with-dependencies包用于支持 1.2 版本中的 JDBC 外表和 JAVA UDF 新功能栅隐。下載后需要將其java-udf-jar-with-dependencies.jar文件放到?be/lib目錄下塔嬉,方可啟動(dòng) BE,否則無法啟動(dòng)成功租悄。
為了便于大家下載使用谨究,我們將預(yù)編譯好的二進(jìn)制程序提前打包好,該版本基于 Apache Doris 1.2.0 正式版泣棋,僅內(nèi)置了 java8 運(yùn)行時(shí)環(huán)境胶哲,復(fù)制下方鏈接到瀏覽器下載,解壓后即可使用潭辈。
下載鏈接:
部署說明
從歷史版本升級(jí)到 1.2.0 版本鸯屿,需完整更新 fe、be 下的 bin 和 lib 目錄把敢。
其他升級(jí)注意事項(xiàng)寄摆,請(qǐng)完整閱讀以下文檔:
本通告最后一節(jié)「升級(jí)注意事項(xiàng)」
安裝部署文檔:https://doris.apache.org/zh-CN/docs/dev/install/install-deploy
集群升級(jí)文檔:https://doris.apache.org/zh-CN/docs/dev/admin-manual/cluster-management/upgrade
如在版本升級(jí)、功能驗(yàn)證修赞、生產(chǎn)上線等過程中出現(xiàn)問題婶恼,可以在社區(qū)用戶群中尋求 SelectDB 專職技術(shù)工程師幫助。
重要更新
全面向量化支持,性能大幅提升
在 Apache Doris 1.2.0 版本中勾邦,系統(tǒng)所有模塊都實(shí)現(xiàn)了向量化联逻,包括數(shù)據(jù)導(dǎo)入、Schema Change检痰、Compaction、數(shù)據(jù)導(dǎo)出锨推、UDF 等铅歼。新版向量化執(zhí)行引擎具備了完整替換原有非向量化引擎的能力,后續(xù)我們也將考慮在未來版本中去除原有非向量化引擎的代碼换可。
與此同時(shí)椎椰,在全面向量化的基礎(chǔ)上,我們對(duì)數(shù)據(jù)掃描沾鳄、謂詞計(jì)算慨飘、Aggregation 算子、HashJoin 算子译荞、算子之間 Shuffle 效率等進(jìn)行了全鏈路的優(yōu)化瓤的,使得查詢性能有了大幅提升。
我們對(duì) Apache Doris 1.2.0 新版本進(jìn)行了多個(gè)標(biāo)準(zhǔn)測(cè)試集的測(cè)試吞歼,同時(shí)選擇了 1.1.3 版本和 0.15.0 版本作為對(duì)比參照項(xiàng)圈膏。經(jīng)測(cè),1.2.0 在 SSB-Flat 寬表場(chǎng)景上相對(duì) 1.1.3 版本整體性能提升了近 4 倍篙骡、相對(duì)于 0.15.0 版本性能提升了近 10 倍稽坤,在 TPC-H 多表關(guān)聯(lián)場(chǎng)景上較 1.1.3 版本上有近 3 倍的提升、較 0.15.0 版本性能至少提升了 11 倍糯俗。
圖1 SSB
圖2 TPC-H
同時(shí)尿褪,我們將1.2.0版本的測(cè)試數(shù)據(jù)提交到了全球知名數(shù)據(jù)庫(kù)測(cè)試排行榜 ClickBench,在最新的排行榜中得湘,Apache Doris 1.2.0 新版本取得了通用機(jī)型(c6a.4xlarge, 500gb gp2)下查詢性能 Cold Run 第二和 Hot Run 第三的醒目成績(jī)杖玲,共有 8 個(gè) SQL 刷新榜單最佳成績(jī)、成為新的性能標(biāo)桿忽刽。?導(dǎo)入性能方面天揖,1.2.0 新版本數(shù)據(jù)寫入效率在同機(jī)型所有產(chǎn)品中位列第一,壓縮前 70G 數(shù)據(jù)寫入僅耗時(shí) 415s跪帝、單節(jié)點(diǎn)寫入速度超過 170 MB/s今膊,在實(shí)現(xiàn)極致查詢性能的同時(shí)也保證了高效的寫入效率!
圖3 Cold Run
圖4 Hot Run
UniqueKey 模型實(shí)現(xiàn) Merg-On-Write 數(shù)據(jù)更新模式
在過去版本中伞剑, Apache Doris 主要是通過 Unique Key 數(shù)據(jù)模型來實(shí)現(xiàn)數(shù)據(jù)實(shí)時(shí)更新的斑唬。但由于采用的是 Merge-On-Read 的實(shí)現(xiàn)方式,查詢存在著效率瓶頸,有大量非必要的 CPU 計(jì)算資源消耗和 IO 開銷恕刘,且可能將出現(xiàn)查詢性能抖動(dòng)等問題缤谎。
在 1.2.0 版本中,我們?cè)谠械?Unique Key 數(shù)據(jù)模型上褐着,增加了 Merge-On-Write 的數(shù)據(jù)更新模式坷澡。?該模式在數(shù)據(jù)寫入時(shí)即對(duì)需要?jiǎng)h除或更新的數(shù)據(jù)進(jìn)行標(biāo)記,始終保證有效的主鍵只出現(xiàn)在一個(gè)文件中(即在寫入的時(shí)候保證了主鍵的唯一性)含蓉,不需要在讀取的時(shí)候通過歸并排序來對(duì)主鍵進(jìn)行去重频敛,這對(duì)于高頻寫入的場(chǎng)景來說,大大減少了查詢執(zhí)行時(shí)的額外消耗馅扣。此外還能夠支持謂詞下推斟赚,并能夠很好利用 Doris 豐富的索引,在數(shù)據(jù) IO 層面就能夠進(jìn)行充分的數(shù)據(jù)裁剪差油,大大減少數(shù)據(jù)的讀取量和計(jì)算量拗军,因此在很多場(chǎng)景的查詢中都有非常明顯的性能提升。
在比較有代表性的 SSB-Flat 數(shù)據(jù)集上蓄喇,通過模擬多個(gè)持續(xù)導(dǎo)入場(chǎng)景发侵,新版本的大部分查詢?nèi)〉昧?3-6 倍的性能提升。
使用場(chǎng)景:?所有對(duì)主鍵唯一性有需求公罕,需要頻繁進(jìn)行實(shí)時(shí) Upsert 更新的用戶建議打開器紧。
使用說明:?作為新的 Feature 默認(rèn)關(guān)閉,用戶可以通過在建表時(shí)添加下面的 Property 來開啟:
“enable_unique_key_merge_on_write” = “true”
另外新版本 Merge-On-Write 數(shù)據(jù)更新模式與舊版本 Merge-On-Read 實(shí)現(xiàn)方式存在差異楼眷,因此已經(jīng)創(chuàng)建的 Unique Key 表無法直接通過 Alter Table 添加 Property 來支持铲汪,只能在新建表的時(shí)候指定。如果用戶需要將舊表轉(zhuǎn)換到新表罐柳,可以使用insert into new_table select * from old_table的方式來實(shí)現(xiàn)掌腰。
Multi Catalog 多源數(shù)據(jù)目錄
Multi-Catalog 多源數(shù)據(jù)目錄功能的目標(biāo)在于能夠幫助用戶更方便對(duì)接外部數(shù)據(jù)目錄,以增強(qiáng) Apache Doris 的數(shù)據(jù)湖分析和聯(lián)邦數(shù)據(jù)查詢能力张吉。
在過去版本中齿梁,當(dāng)我們需要對(duì)接外部數(shù)據(jù)源時(shí),只能在 Database 或 Table 層級(jí)對(duì)接肮蛹。當(dāng)外部數(shù)據(jù)目錄 Schema 發(fā)生變化勺择、或者外部數(shù)據(jù)目錄的 Database 或 Table 非常多時(shí),需要用戶手工進(jìn)行一一映射伦忠,維護(hù)量非常大省核。1.2.0 版本新增的多源數(shù)據(jù)目錄功能為 Apache Doris 提供了快速接入外部數(shù)據(jù)源進(jìn)行訪問的能力,用戶可以通過CREATE CATALOG命令連接到外部數(shù)據(jù)源昆码,Doris 會(huì)自動(dòng)映射外部數(shù)據(jù)源的庫(kù)气忠、表信息邻储。之后,用戶就可以像訪問普通表一樣旧噪,對(duì)這些外部數(shù)據(jù)源中的數(shù)據(jù)進(jìn)行訪問吨娜,避免了之前用戶需要對(duì)每張表手動(dòng)建立外表映射的復(fù)雜操作。
目前能支持以下數(shù)據(jù)源:
Hive Metastore:可以訪問包括 Hive淘钟、Iceberg宦赠、Hudi 在內(nèi)的數(shù)據(jù)表,也可對(duì)接兼容 Hive Metastore 的數(shù)據(jù)源米母,如阿里云的 DataLake Formation袱瓮,同時(shí)支持 HDFS 和對(duì)象存儲(chǔ)上的數(shù)據(jù)訪問。
Elasticsearch:訪問 ES 數(shù)據(jù)源爱咬。
JDBC:支持通過 JDBC 訪問 MySQL 數(shù)據(jù)源。
注:相應(yīng)的權(quán)限層級(jí)也會(huì)自動(dòng)變更绊起,詳見「升級(jí)注意事項(xiàng)」部分
相關(guān)文檔:
https://doris.apache.org/zh-CN/docs/dev/ecosystem/external-table/multi-catalog
輕量表結(jié)構(gòu)變更 Light Schema Change
在過去版本中精拟,SchemaChange是一項(xiàng)相對(duì)消耗比較大的工作,需要對(duì)數(shù)據(jù)文件進(jìn)行修改虱歪,在集群規(guī)模和表數(shù)據(jù)量較大時(shí)執(zhí)行效率會(huì)明顯降低蜂绎。同時(shí)由于是異步作業(yè),當(dāng)上游Schema發(fā)生變更時(shí)笋鄙,需要停止數(shù)據(jù)同步任務(wù)并手動(dòng)執(zhí)行SchemaChange师枣,增加開發(fā)和運(yùn)維成本的同時(shí)還可能造成消費(fèi)數(shù)據(jù)的積壓。
在 1.2.0 新版本中萧落,對(duì)數(shù)據(jù)表的加減列操作践美,不再需要同步更改數(shù)據(jù)文件,僅需在 FE 中更新元數(shù)據(jù)即可找岖,從而實(shí)現(xiàn)毫秒級(jí)的 Schema Change 操作陨倡,且存在導(dǎo)入任務(wù)時(shí)效率的提升更為顯著。?與此同時(shí)许布,使得 Apache Doris 在面對(duì)上游數(shù)據(jù)表維度變化時(shí)兴革,可以更加快速穩(wěn)定實(shí)現(xiàn)表結(jié)構(gòu)同步,保證系統(tǒng)的高效且平穩(wěn)運(yùn)轉(zhuǎn)蜜唾。如用戶可以通過 Flink CDC杂曲,可實(shí)現(xiàn)上游數(shù)據(jù)庫(kù)到 Doris 的 DML 和 DDL 同步,進(jìn)一步提升了實(shí)時(shí)數(shù)倉(cāng)數(shù)據(jù)處理和分析鏈路的時(shí)效性與便捷性袁余。
使用說明:?作為新的 Feature 默認(rèn)關(guān)閉擎勘,用戶可以通過在建表時(shí)添加下面的 Property 來開啟:
"light_schema_change" = "true"
相關(guān)文檔:
JDBC 外部表
在過去版本中,Apache Doris 提供了 ODBC 外部表的方式來訪問 MySQL泌霍、Oracle货抄、SQL Server述召、PostgreSQL 等數(shù)據(jù)源,但由于 ODBC 驅(qū)動(dòng)版本問題可能造成系統(tǒng)的不穩(wěn)定蟹地。相對(duì)于 ODBC积暖,JDBC 接口更為統(tǒng)一且支持?jǐn)?shù)據(jù)庫(kù)眾多,因此在?1.2.0 版本中我們實(shí)現(xiàn)了 JDBC 外部表以替換原有的 ODBC 外部表怪与。在新版本中夺刑,用戶可以通過 JDBC 連接支持 JDBC 協(xié)議的外部數(shù)據(jù)源,當(dāng)?前已適配的數(shù)據(jù)源包括**:
MySQL
PostgreSQL
Oracle
SQLServer
ClickHouse
更多數(shù)據(jù)源的適配已經(jīng)在規(guī)劃之中分别,原則上任何支持 JDBC 協(xié)議訪問的數(shù)據(jù)庫(kù)均能通過 JDBC 外部表的方式來訪問遍愿。而之前的 ODBC 外部表功能將會(huì)在后續(xù)的某個(gè)版本中移除,還請(qǐng)盡量切換到 JDBC 外表功能耘斩。
相關(guān)文檔:
https://doris.apache.org/zh-CN/docs/dev/ecosystem/external-table/jdbc-of-doris/
JAVA UDF
在過去版本中沼填,Apache Doris 提供了 C++ 語(yǔ)言的原生 UDF,便于用戶通過自己編寫自定義函數(shù)來滿足特定場(chǎng)景的分析需求括授。但由于原生 UDF 與 Doris 代碼耦合度高坞笙、當(dāng) UDF 出現(xiàn)錯(cuò)誤時(shí)可能會(huì)影響集群穩(wěn)定性,且只支持 C++ 語(yǔ)言荚虚,對(duì)于熟悉 Hive薛夜、Spark 等大數(shù)據(jù)技術(shù)棧的用戶而言存在較高門檻,因此在?1.2.0 新版本我們?cè)黾恿?Java 語(yǔ)言的自定義函數(shù)版述,支持通過 Java 編寫 UDF/UDAF梯澜,方便用戶在 Java 生態(tài)中使用。同時(shí)渴析,通過堆外內(nèi)存晚伙、Zero Copy 等技術(shù),使得跨語(yǔ)言的數(shù)據(jù)訪問效率大幅提升俭茧。
相關(guān)文檔:
https://doris.apache.org/zh-CN/docs/dev/ecosystem/udf/java-user-defined-function
示例:
https://github.com/apache/doris/tree/master/samples/doris-demo
Remote UDF
遠(yuǎn)程 UDF 支持通過 RPC 的方式訪問遠(yuǎn)程用戶自定義函數(shù)服務(wù)撬腾,從而徹底消除用戶編寫 UDF 的語(yǔ)言限制,用戶可以使用任意編程語(yǔ)言實(shí)現(xiàn)自定義函數(shù)恢恼,完成復(fù)雜的數(shù)據(jù)分析工作民傻。
相關(guān)文檔:
https://doris.apache.org/zh-CN/docs/ecosystem/udf/remote-user-defined-function
示例:
https://github.com/apache/doris/tree/master/samples/doris-demo
Array/JSONB 復(fù)合數(shù)據(jù)類型
Array 類型
支持了數(shù)組類型,同時(shí)也支持多級(jí)嵌套的數(shù)組類型场斑。在一些用戶畫像漓踢,標(biāo)簽等場(chǎng)景,可以利用 Array 類型更好的適配業(yè)務(wù)場(chǎng)景漏隐。同時(shí)在新版本中喧半,我們也實(shí)現(xiàn)了大量數(shù)組相關(guān)的函數(shù),以更好的支持該數(shù)據(jù)類型在實(shí)際場(chǎng)景中的應(yīng)用青责。
相關(guān)文檔:
https://doris.apache.org/zh-CN/docs/dev/sql-manual/sql-reference/Data-Types/ARRAY
相關(guān)函數(shù):
https://doris.apache.org/zh-CN/docs/dev/sql-manual/sql-functions/array-functions/array
JSONB 類型
支持二進(jìn)制的 JSON 數(shù)據(jù)類型 JSONB挺据。該類型提供更緊湊的 JSONB 編碼格式取具,同時(shí)提供在編碼格式上的數(shù)據(jù)訪問,相比于使用字符串存儲(chǔ)的 JSON 數(shù)據(jù)扁耐,有數(shù)倍的性能提升暇检。
相關(guān)文檔:
https://doris.apache.org/zh-CN/docs/dev/sql-manual/sql-reference/Data-Types/JSONB
相關(guān)函數(shù):
https://doris.apache.org/zh-CN/docs/dev/sql-manual/sql-functions/json-functions/jsonb_parse
DateV2/DatatimeV2 新版日期/日期時(shí)間數(shù)據(jù)類型
支持 DataV2 日期類型和 DatatimeV2 日期時(shí)間類型,相較于原有的 Data 和 Datatime 效率更高且支持最多到微秒的時(shí)間精度婉称,建議使用新版日期類型块仆。
相關(guān)文檔:
https://doris.apache.org/zh-CN/docs/dev/sql-manual/sql-reference/Data-Types/DATETIMEV2/
https://doris.apache.org/zh-CN/docs/dev/sql-manual/sql-reference/Data-Types/DATEV2
影響范圍:
用戶需要在建表時(shí)指定 DateV2 和 DatetimeV2,原有表的 Date 以及 Datetime 不受影響王暗。
Datev2 和 Datetimev2 在與原來的 Date 和 Datetime 做計(jì)算時(shí)(例如等值連接)悔据,原有類型會(huì)被cast 成新類型做計(jì)算
Example 相關(guān)文檔中說明
全新內(nèi)存管理框架
在 Apache Doris 1.2.0 版本中我們?cè)黾恿巳碌膬?nèi)存跟蹤器(Memory Tracker),用以記錄 Doris BE 進(jìn)程內(nèi)存使用俗壹,包括查詢科汗、導(dǎo)入、Compaction绷雏、Schema Change 等任務(wù)生命周期中使用的內(nèi)存以及各項(xiàng)緩存肛捍。通過 Memory Tracker 實(shí)現(xiàn)了更加精細(xì)的內(nèi)存監(jiān)控和控制,大大減少了因內(nèi)存超限導(dǎo)致的 OOM 問題之众,使系統(tǒng)穩(wěn)定性進(jìn)一步得到提升。
相關(guān)文檔:
https://doris.apache.org/zh-CN/docs/dev/admin-manual/maint-monitor/memory-management/memory-tracker
Table Valued Function 表函數(shù)
增加了 Table Valued Function(TVF依许,表函數(shù))棺禾,TVF 可以視作一張普通的表,可以出現(xiàn)在 SQL 中所有“表”可以出現(xiàn)的位置峭跳,讓用戶像訪問關(guān)系表格式數(shù)據(jù)一樣膘婶,讀取或訪問來自 HDFS 或 S3 上的文件內(nèi)容,
例如使用 S3 TVF 實(shí)現(xiàn)對(duì)象存儲(chǔ)上的數(shù)據(jù)導(dǎo)入:
insert into tbl select * from s3("s3://bucket/file.*", "ak" = "xx", "sk" = "xxx") where c1 > 2;
或者直接查詢 HDFS 上的數(shù)據(jù)文件:
insert into tbl select * from hdfs("hdfs://bucket/file.*") where c1 > 2;
TVF 可以幫助用戶充分利用 SQL 豐富的表達(dá)能力蛀醉,靈活處理各類數(shù)據(jù)悬襟。
相關(guān)文檔:
https://doris.apache.org/zh-CN/docs/dev/sql-manual/sql-functions/table-functions/s3
https://doris.apache.org/zh-CN/docs/dev/sql-manual/sql-functions/table-functions/hdfs
更多功能
1. 更便捷的分區(qū)創(chuàng)建方式
支持通過FROM TO命令創(chuàng)建一個(gè)時(shí)間范圍內(nèi)的多個(gè)分區(qū)。
相關(guān)文檔:
示例:
-- 根據(jù)時(shí)間date 創(chuàng)建分區(qū)拯刁,支持多個(gè)批量邏輯和單獨(dú)創(chuàng)建分區(qū)的混合使用
PARTITION BY RANGE(event_day)(
? ? ?? FROM ("2000-11-14") TO ("2021-11-14") INTERVAL 1 YEAR,
? ? ?? FROM ("2021-11-14") TO ("2022-11-14") INTERVAL 1 MONTH,
? ? ?? FROM ("2022-11-14") TO ("2023-01-03") INTERVAL 1 WEEK,
? ? ?? FROM ("2023-01-03") TO ("2023-01-14") INTERVAL 1 DAY,
? ? ?? PARTITION p_20230114 VALUES [('2023-01-14'), ('2023-01-15'))
)
-- 根據(jù)時(shí)間datetime 創(chuàng)建分區(qū)
PARTITION BY RANGE(event_time)(
? ? ?? FROM ("2023-01-03 12") TO ("2023-01-14 22") INTERVAL 1 HOUR
)
2. 列重命名
對(duì)于開啟了 Light Schema Change 的表脊岳,支持對(duì)列進(jìn)行重命名。
相關(guān)文檔:
3. 更豐富的權(quán)限管理
支持行級(jí)權(quán)限垛玻「钔保可以通過CREATE ROW POLICY?命令創(chuàng)建行級(jí)權(quán)限。相關(guān)文檔:https://doris.apache.org/zh-CN/docs/dev/sql-manual/sql-reference/Data-Definition-Statements/Create/CREATE-POLICY
支持指定密碼強(qiáng)度帚桩、過期時(shí)間等亿驾。
支持在多次失敗登錄后鎖定賬戶。相關(guān)文檔:?https://doris.apache.org/zh-CN/docs/dev/sql-manual/sql-reference/Account-Management-Statements/ALTER-USER
4. 導(dǎo)入相關(guān)
CSV 導(dǎo)入支持帶 Header 的 CSV 文件账嚎。相關(guān)文檔:https://doris.apache.org/zh-CN/docs/dev/sql-manual/sql-reference/Data-Manipulation-Statements/Load/STREAM-LOAD/
Stream Load 新增?hidden_columns莫瞬,可以顯式指定 Deleteflag 列和 Sequence列儡蔓。相關(guān)文檔:https://doris.apache.org/zh-CN/docs/dev/sql-manual/sql-reference/Data-Manipulation-Statements/Load/STREAM-LOAD
Spark Load 支持 Parquet 和 ORC 文件導(dǎo)入。
支持清理已完成的導(dǎo)入的 Label疼邀。相關(guān)文檔:https://doris.apache.org/zh-CN/docs/dev/sql-manual/sql-reference/Data-Manipulation-Statements/Load/CLEAN-LABEL
支持通過狀態(tài)批量取消導(dǎo)入作業(yè)喂江。相關(guān)文檔:https://doris.apache.org/zh-CN/docs/dev/sql-manual/sql-reference/Data-Manipulation-Statements/Load/CANCEL-LOAD
Broker Load 新增支持阿里云 OSS,騰訊 CHDFS 和華為云 OBS檩小。相關(guān)?文檔**:https://doris.apache.org/zh-CN/docs/dev/advanced/broker
支持通過 hive-site.xml 文件配置訪問 HDFS开呐。相關(guān)?文檔**:https://doris.apache.org/zh-CN/docs/dev/admin-manual/config/config-dir
5. 支持通過SHOW CATALOG RECYCLE BIN功能查看回收站中的內(nèi)容。
相關(guān)文檔:
6. 支持SELECT * EXCEPT語(yǔ)法
相關(guān)文檔:
https://doris.apache.org/zh-CN/docs/dev/data-table/basic-usage
7. OUTFILE 支持 ORC 格式導(dǎo)出规求,并且支持多字節(jié)分隔符
相關(guān)文檔:
8. 支持通過配置修改可保存的 Query Profile 的數(shù)量筐付。
文檔搜索 FE 配置項(xiàng):max_query_profile_num
9.DELETE語(yǔ)句支持IN謂詞條件,并且支持分區(qū)裁剪阻肿。
10. 時(shí)間列的默認(rèn)值支持使用CURRENT_TIMESTAMP
11. 添加兩張系統(tǒng)表:backends瓦戚、rowsets
backends 是 Doris 中內(nèi)置系統(tǒng)表,存放在 information_schema 數(shù)據(jù)庫(kù)下丛塌,通過該系統(tǒng)表可以查看當(dāng)前 Doris 集群中的 BE 節(jié)點(diǎn)信息较解。
rowsets 是 Doris 中內(nèi)置系統(tǒng)表,存放在?information_schema數(shù)據(jù)庫(kù)下赴邻,通過該系統(tǒng)表可以查看 Doris 集群中各個(gè) BE 節(jié)點(diǎn)當(dāng)前 rowsets 情況印衔。
相關(guān)文檔:
https://doris.apache.org/zh-CN/docs/dev/admin-manual/system-table/backends
https://doris.apache.org/zh-CN/docs/dev/admin-manual/system-table/rowsets
12. 備份恢復(fù)
Restore作業(yè)支持?reserve_replica參數(shù),使得恢復(fù)后的表的副本數(shù)和備份時(shí)一致姥敛。
Restore 作業(yè)支持reserve_dynamic_partition_enable參數(shù)奸焙,使得恢復(fù)后的表保持動(dòng)態(tài)分區(qū)開啟狀態(tài)。相關(guān)?文檔:**https://doris.apache.org/zh-CN/docs/dev/sql-manual/sql-reference/Data-Definition-Statements/Backup-and-Restore/RESTORE
支持通過內(nèi)置的Libhdfs 進(jìn)行備份恢復(fù)操作彤敛,不再依賴 Broker与帆。相關(guān)文檔:?https://doris.apache.org/zh-CN/docs/dev/sql-manual/sql-reference/Data-Definition-Statements/Backup-and-Restore/CREATE-REPOSITORY
13. 支持同機(jī)多磁盤之間的數(shù)據(jù)均衡
相關(guān)文檔:
14. Routine Load 支持訂閱 Kerberos 認(rèn)證的 Kafka 服務(wù)。
相關(guān)文檔:
https://doris.apache.org/zh-CN/docs/dev/data-operate/import/import-way/routine-load-manual
15. New built-in-function 新增內(nèi)置函數(shù)
新增以下內(nèi)置函數(shù):
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
outer combine
以及所有 Array 函數(shù)
升級(jí)注意事項(xiàng)
FE 元數(shù)據(jù)版本變更 【重要】
FE Meta Version 由 107 變更為 114墨榄,因此從 1.1.x 以及更早版本升級(jí)至 1.2.0 版本后玄糟,不可回滾到之前版本。
升級(jí)過程中袄秩,建議通過灰度升級(jí)的方式阵翎,先升級(jí)部分節(jié)點(diǎn)并觀察業(yè)務(wù)運(yùn)行情況,以降低升級(jí)風(fēng)險(xiǎn)之剧,若執(zhí)行非法的回滾操作將可能導(dǎo)致數(shù)據(jù)丟失與損壞贮喧。
行為改變
權(quán)限層級(jí)變更,因?yàn)橐肓?Catalog 層級(jí)猪狈,所以相應(yīng)的用戶權(quán)限層級(jí)也會(huì)自動(dòng)變更箱沦。規(guī)則如下:
GlobalPrivs 和 ResourcePrivs 保持不變
新增 CatalogPrivs 層級(jí)。
原 DatabasePrivs 層級(jí)增加 internal 前綴(表示 internal catalog 中的 db)
原 TablePrivs 層級(jí)增加 internal 前綴(表示internal catalog中的 tbl)
GroupBy 和 Having 子句中雇庙,優(yōu)先使用列名而不是別名進(jìn)行匹配谓形。
不再支持創(chuàng)建以 "mv?" 開頭的列灶伊。"mv" 是物化視圖中的保留關(guān)鍵詞
移除了 orderby 語(yǔ)句默認(rèn)添加的 65535 行的 Limit 限制,并增加 Session 變量default_order_by_limit可以自定配置這個(gè)限制寒跳。
"Create Table As Select" 生成的表聘萨,所有字符串列統(tǒng)一使用 String 類型,不再區(qū)分 varchar/char/string
audit log 中童太,移除 db 和 user 名稱前的default_cluster字樣米辐。
audit log 中增加 sql digest 字段
union 子句總 order by 邏輯變動(dòng)。新版本中书释,order by 子句將在 union 執(zhí)行完成后執(zhí)行翘贮,除非通過括號(hào)進(jìn)行顯式的關(guān)聯(lián)。
進(jìn)行 Decommission 操作時(shí)爆惧,會(huì)忽略回收站中的 Tablet狸页,確保 Decomission 能夠完成。
Decimal 的返回結(jié)果將按照原始列中聲明的精度進(jìn)行顯示 扯再,或者按照顯式指定的 Cast 函數(shù)中的精度進(jìn)行展示芍耘。
列名的長(zhǎng)度限制由 64 變更為 256
FE 配置項(xiàng)變動(dòng)
默認(rèn)開啟enable_vectorized_load參數(shù)。
增大了?create_table_timeout值熄阻。建表操作的默認(rèn)超時(shí)時(shí)間將增大斋竞。
修改?stream_load_default_timeout_second默認(rèn)值為 3天。
修改alter_table_timeout_second的默認(rèn)值為 一個(gè)月秃殉。
增加參數(shù)?max_replica_count_when_schema_change用于限制 alter 作業(yè)中涉及的 Replica 數(shù)量坝初,默認(rèn)為 100000。
添加?disable_iceberg_hudi_table复濒。默認(rèn)禁用了 Iceberg 和 Hudi 外表,推薦使用 Multi Catalog功能乒省。
BE 配置項(xiàng)變動(dòng)
移除了?disable_stream_load_2pc參數(shù)巧颈。2PC的 Stream Load 可直接使用。
修改tablet_rowset_stale_sweep_time_sec從 1800 秒修改為 300 秒袖扛。
Session 變量變動(dòng)
修改變量enable_insert_strict默認(rèn)為 true砸泛。這會(huì)導(dǎo)致一些之前可以執(zhí)行,但是插入了非法值的 insert 操作蛆封,不再能夠執(zhí)行唇礁。
修改變量enable_local_exchange默認(rèn)為 true
默認(rèn)通過 lz4 壓縮進(jìn)行數(shù)據(jù)傳輸,通過變量?fragment_transmission_compression_codec控制
增加?skip_storage_engine_merge變量惨篱,用于調(diào)試 Unique 或 Agg 模型的數(shù)據(jù)盏筐。?相關(guān)?文檔:**https://doris.apache.org/zh-CN/docs/dev/advanced/variables
BE 啟動(dòng)腳本會(huì)通過/proc/sys/vm/max_map_count?檢查數(shù)值是否大于200W,否則啟動(dòng)失敗砸讳。
移除了 mini load 接口
升級(jí)過程需注意
升級(jí)準(zhǔn)備
需替換:lib, bin 目錄(start/stop 腳本均有修改)
BE 也需要配置JAVA_HOME琢融,已支持 JDBC Table 和 Java UDF界牡。
fe.conf中默認(rèn)JVM Xmx參數(shù)修改為 8GB。
升級(jí)過程中可能的錯(cuò)誤
Repeat 函數(shù)不可使用并報(bào)錯(cuò):vectorized repeat function cannot be executed漾抬,可以在升級(jí)前先關(guān)閉向量化執(zhí)行引擎宿亡。
Schema Change 失敗并報(bào)錯(cuò):desc_tbl is not set. Maybe the FE version is not equal to the BE
向量化 Hash Join 不可使用并報(bào)錯(cuò)。vectorized hash join cannot be executed可以在升級(jí)前先關(guān)閉向量化執(zhí)行引擎纳令。
以上錯(cuò)誤在完全升級(jí)后會(huì)恢復(fù)正常挽荠。
性能影響
默認(rèn)使用 JeMalloc 作為新版本 BE 的內(nèi)存分配器,替換 TcMalloc 平绩。JeMalloc 相比 TcMalloc 使用的內(nèi)存更少圈匆、高并發(fā)場(chǎng)景性能更高,但在內(nèi)存充足的性能測(cè)試時(shí)馒过,TcMalloc 比 JeMalloc 性能高5%-10%臭脓,詳細(xì)測(cè)試見:?https://github.com/apache/doris/pull/12496
tablet sink中batch size?修改為至少 8K。
默認(rèn)關(guān)閉 Page Cache 和 減少 Chunk Allocator 預(yù)留內(nèi)存大小腹忽。
Page Cache 和 Chunk Allocator 分別緩存用戶數(shù)據(jù)塊和內(nèi)存預(yù)分配来累,這兩個(gè)功能會(huì)占用一定比例的內(nèi)存并且不會(huì)釋放。由于這部分內(nèi)存占用無法靈活調(diào)配窘奏,導(dǎo)致在某些場(chǎng)景下可能因這部分內(nèi)存占用而導(dǎo)致其他任務(wù)內(nèi)存不足嘹锁,影響系統(tǒng)穩(wěn)定性和可用性,因此新版本中默認(rèn)關(guān)閉了這兩個(gè)功能着裹。
但在某些延遲敏感的報(bào)表場(chǎng)景下领猾,關(guān)閉該功能可能會(huì)導(dǎo)致查詢延遲增加。如用戶擔(dān)心升級(jí)后該功能對(duì)業(yè)務(wù)造成影響骇扇,可以通過在?be.conf中增加以下參數(shù)以保持和之前版本行為一致摔竿。
disable_storage_page_cache=false
chunk_reserved_bytes_limit=10%
)
API 變化
BE 的 HTTP API 錯(cuò)誤返回信息,由{"status": "Fail", "msg": "xxx"}變更為更具體的{"status":"Notfound","msg":"Tabletnotfound.tablet_id=1202"}
SHOW CREATE TABLE中少孝, Comment 的內(nèi)容由雙引號(hào)包裹變?yōu)閱我?hào)包裹
支持普通用戶通過 HTTP 命令獲取 Query Profile继低。相關(guān)文檔:https://doris.apache.org/zh-CN/docs/dev/admin-manual/http-actions/fe/manager/query-profile-action
優(yōu)化了 Sequence 列的指定方式,可以直接指定列名稍走。相關(guān)文檔:https://doris.apache.org/zh-CN/docs/dev/data-operate/update-delete/sequence-column-manual
show backends和show tablets返回結(jié)果中袁翁,增加遠(yuǎn)端存儲(chǔ)的空間使用情況
移除了 Num-Based Compaction 相關(guān)代碼
重構(gòu)了BE的錯(cuò)誤碼機(jī)制,部分返回的錯(cuò)誤信息會(huì)發(fā)生變化
其他
支持 Docker 官方鏡像婿脸。
支持在 MacOS(x86/M1) 和 ubuntu-22.04 上編譯 Doris粱胜。
支持進(jìn)行 image 文件的校驗(yàn)。相關(guān)文檔:https://doris.apache.org/zh-CN/docs/dev/admin-manual/maint-monitor/metadata-operation
腳本相關(guān)
FE狐树、BE 的 stop 腳本支持通過--grace參數(shù)退出FE焙压、BE(使用 kill -15 信號(hào)代替 kill -9)
FE start 腳本支持通過?--version查看當(dāng)前FE 版本
支持通過 ADMIN COPY TABLET命令獲取某個(gè) tablet 的數(shù)據(jù)和相關(guān)建表語(yǔ)句,用于本地問題調(diào)試。相關(guān)文檔:https://doris.apache.org/zh-CN/docs/dev/sql-manual/sql-reference/Database-Administration-Statements/ADMIN-COPY-TABLET
支持通過 http api冗恨,獲取一個(gè)SQL語(yǔ)句相關(guān)的建表語(yǔ)句答憔,用于本地問題復(fù)現(xiàn)。相關(guān)文檔:https://doris.apache.org/zh-CN/docs/dev/admin-manual/http-actions/fe/query-schema-action
支持建表時(shí)關(guān)閉此表的 Compaction 功能掀抹,用于測(cè)試虐拓。相關(guān)文檔:https://doris.apache.org/zh-CN/docs/dev/sql-manual/sql-reference/Data-Definition-Statements/Create/CREATE-TABLE
致謝
Apache Doris 1.2.0 版本的發(fā)布離不開所有社區(qū)用戶的支持,在此向所有參與版本設(shè)計(jì)傲武、開發(fā)蓉驹、測(cè)試、討論的社區(qū)貢獻(xiàn)者們表示感謝揪利,他們分別是(首字母排序):
貢獻(xiàn)者名單
@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
@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