亲爱的社区小伙伴们,历时数月,我们很高兴地宣布,ApacheDoris于 2022年12月 7 日迎来了 1.2 Release 版本的正式发布!有近 120 位 Contributor 为 Apache Doris 提交了超过 2400 项优化和修复,感谢每一个让 Apache Doris 变得更好的你!
在 1.2 版本中,我们实现了全面向量化、实现多场景查询性能3-11 倍的提升,在 Unique Key 模型上实现了 Merge-on-Write 的数据更新模式、数据高频更新时查询性能提升达 3-6 倍,增加了 Multi-Catalog 多源数据目录、提供了无缝接入 Hive、ES、Hudi、Iceberg 等外部数据源的能力,引入了Light Schema Change 轻量表结构变更、实现毫秒级的 Schema Change 操作并且可以借助 Flink CDC 自动同步上游数据库的 DML 和 DDL 操作,以 JDBC 外部表替换了过去的 ODBC 外部表,支持了 Java UDF 和 Romote UDF 以及 Array 数组类型和 JSONB 类型,修复了诸多之前版本的性能和稳定性问题,欢迎大家下载使用!
重 要 优 化
在标准的 ssb-100-flat benchmark中,1.2 版本的性能比1.1 版本快 2 倍;在复杂的 TPCH 100 基准测试中,1.2 版本的性能比 1.1 版本快 3 倍。
在原有的 Unique Key 数据模型上,支持了 Merge-on-Write 的数据更新模式。该模式在数据写入时即对需要删除或更新的数据进行标记,从而避免了在读取时对数据进行 Merge Read 的开销,极大地提高了可更新数据模型上的读取效率。
多源数据目录功能为Doris提供了快速接入外部数据源进行访问的能力。用户可以通过 CREATE CATALOG
命令连接到外部数据源。Doris 会自动映射外部数据源的库、表信息。之后,用户就可以像访问普通表一样,对这些外部数据源中的数据进行访问了。避免了之前用户需要对每张表手动建立外表映射的复杂操作。
目前该功能支持以下数据源:
Hive Metastore:可以访问包括 Hive、Iceberg、Hudi 在内的数据表。也可对接兼容 Hive Metastore 的数据源,如阿里云的 DataLake Formation。同时支持 HDFS 和对象存储上的数据访问。
Elasticsearch:访问 ES 数据源。
JDBC:通过 JDBC 协议访问 MySQL等数据库。
相关文档:https://doris.apache.org/zh-CN/docs/dev/ecosystem/external-table/multi-catalog
轻量表结构变更
在新版本中,对数据表的加减列操作,不再需要同步更改数据文件,仅需在 FE 中更新元数据即可,从而实现毫秒级的 Schema Change 操作。通过该功能,可以实现对上游 CDC 数据的 DDL 同步能力。如用户可以通过 Flink CDC,实现上游数据库到 Doris 的 DML 和 DDL 同步。
使用说明:通过建表的时候使用以下命令开启
"light_schema_change"="true"
相关文档:https://doris.apache.org/zh-CN/docs/dev/sql-manual/sql-reference/Data-Definition-Statements/Create/CREATE-TABLE
在新版本中,用户可以通过 JDBC 连接支持JDBC的外部数据源。当前已支持:
MySQL
PostgreSQL
Oracle
SQLServer
Clickhouse
相关文档:https://doris.apache.org/zh-CN/docs/dev/ecosystem/external-table/jdbc-of-doris/
支持通过 Java 编写 UDF/UDAF,方便用户在 Java 生态中使用自定义函数。同时,通过堆外内存、Zero Copy 等技术,使得跨语言的数据访问效率大幅提升。
相关文档:https://doris.apache.org/zh-CN/docs/dev/ecosystem/udf/java-user-defined-function 示例:https://github.com/apache/doris/tree/master/samples/doris-demo
支持通过 RPC 的方式访问远程用户自定义函数服务,从而彻底消除用户编写 UDF 的语言限制。用户可以使用任意编程语言实现自定义函数,完成复杂的数据分析工作。
相关文档:https://doris.apache.org/zh-CN/docs/ecosystem/udf/remote-user-defined-function 示例:https://github.com/apache/doris/tree/master/samples/doris-demo
Array 类型
相关文档: https://do ris.apache.org/zh-CN/docs/dev/sql-manual/sql-reference/Data-Types/ARRAY 相关函数:https://doris.apache.org/zh-CN/docs/dev/sql-manual/sql-functions/array-functions/array
支持二进制的 JSON 数据类型 JSONB。该类型提供更紧凑的 JSONB 编码格式,同时提供在编码格式上的数据访问,相比于使用字符串存储的 JSON 数据,有数倍的性能提升。
相关文档: https://doris.apache.org/zh-CN/docs/dev/sql-manual/sql-reference/Data-Types/JSONB 相关函数: https://doris.apache.org/zh-CN/docs/dev/sql-manual/sql-functions/json-functions/jsonb_parse
影响范围:
用户需要在建表时指定 datev2 和 datetimev2,原有表的 date 以及 datetime 不受影响。
datev2 和 datetimev2 在与原来的 date 和 datetime 做计算时(例如等值连接),原有类型会被 cast 成新类型做计算
example 在文档中有
相关文档: https://doris.apache.org/docs/dev/sql-manual/sql-reference/Data-Types/DATEV2
其他变更
全新的内存管理框架
相关文档:https://github.com/apache/doris/blob/master/docs/zh-CN/docs/admin-manual/memory-management/memory-tracker.md
Table Valued Function
Doris 实现了一组 Table Valued Function(TVF),TVF 可以视作一张普通的表,可以出现在 SQL 中所有“表”可以出现的位置。
更便捷的分区创建方式
支持通过
FROM TO
命令创建一个时间范围内的多个分区。列重命名
对于开启了 Light Schema Change 的表,支持对列进行重命名。
文档:https://doris.apache.org/zh-CN/docs/dev/sql-manual/sql-reference/Data-Definition-Statements/Alter/ALTER-TABLE-RENAME
更丰富权限管理
支持行级权限
可以通过
CREATE ROW POLICY
命令创建行级权限。文档:https://doris.apache.org/zh-CN/docs/dev/sql-manual/sql-reference/Data-Definition-Statements/Create/CREATE-POLICY
支持指定密码强度、过期时间等。
支持在多次失败登录后锁定账户。
文档:https://doris.apache.org/zh-CN/docs/dev/sql-manual/sql-reference/Account-Management-Statements/ALTER-USER
导入相关
CSV 导入支持带 header的 csv文件。
Stream Load 新增
hidden_columns
,可以显式指定 delete flag 列和 sequence 列。Spark Load 支持 Parquet 和 ORC 文件导入。
支持清理已完成的导入的 Label
支持通过状态批量取消导入作业
broker load 新增支持阿里云 oss,腾讯云 cos/chdfs 和华为云 obs。
支持通过 hive-site.xml 文件配置访问 hdfs。
支持通过
SHOW CATALOG RECYCLE BIN
功能查看回收站中的内容。文档:https://doris.apache.org/zh-CN/docs/dev/sql-manual/sql-reference/Show-Statements/SHOW-CATALOG-RECYCLE-BIN
支持
SELECT * EXCEPT
语法。文档:https://doris.apache.org/zh-CN/docs/dev/data-table/basic-usage
OUTFILE 支持 ORC 格式导出。并且支持多字节分隔符。
文档:https://doris.apache.org/zh-CN/docs/dev/sql-manual/sql-reference/Data-Manipulation-Statements/OUTFILE
支持通过配置修改可保存的 Query Profile 的数量。
DELETE 语句支持 IN 谓词条件。并且支持分区裁剪。
文档:https://doris.apache.org/zh-CN/docs/dev/sql-manual/sql-reference/Data-Manipulation-Statements/Manipulation/DELETE
时间列的默认值支持使用
CURRENT_TIMESTAMP
文档中搜索 "CURRENT_TIMESTAMP":https://doris.apache.org/zh-CN/docs/dev/sql-manual/sql-reference/Data-Definition-Statements/Create/CREATE-TABLE
添加两张系统表:backends,rowsets
文档:
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备份恢复
Restore作业支持
reserve_replica
参数,使得恢复后的表的副本数和备份时一致。Restore 作业支持
reserve_dynamic_partition_enable
参数,使得恢复后的表保持动态分区开启状态。文档:https://doris.apache.org/zh-CN/docs/dev/sql-manual/sql-reference/Data-Definition-Statements/Backup-and-Restore/RESTORE
支持通过内置的 libhdfs 进行备份恢复操作,不再依赖 broker。
文档:https://doris.apache.org/zh-CN/docs/dev/sql-manual/sql-reference/Data-Definition-Statements/Backup-and-Restore/CREATE-REPOSITORY
支持同机多磁盘之间的数据均衡
文档:
https://doris.apache.org/zh-CN/docs/dev/sql-manual/sql-reference/Database-Administration-Statements/ADMIN-REBALANCE-DISK
https://doris.apache.org/zh-CN/docs/dev/sql-manual/sql-reference/Database-Administration-Statements/ADMIN-CANCEL-REBALANCE-DISKRoutine Load 支持订阅 Kerberos 认证的 Kafka 服务。
文档中搜索 kerberos:https://doris.apache.org/zh-CN/docs/dev/data-operate/import/import-way/routine-load-manual
New 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 函数
下 载 使 用
http://doris.apache.org/zh-CN/downloads/downloads.html
您可以从Apache Doris 低发行版本直接升级到 1.2 Release 版本,升级过程请参考文档:https://doris.apache.org/docs/admin-manual/cluster-management/upgrade/
详细 Release Note 请查看链接:
https://github.com/apache/doris/issues/14461
如果您遇到任何使用上的问题,欢迎随时通过 GitHub Discussion 论坛或者 Dev 邮件组与我们取得联系。
GitHub 论坛:https://github.com/apache/doris/discussions
Dev 邮件组:dev@doris.apache.org微信公众号:
致 谢
Apache Doris 1.2 Release 版本的发布离不开所有社区用户的支持,在此向所有参与版本设计、开发、测试、讨论的社区贡献者们表示感谢,他们分别是(首字母排序):
一贡献者名单一
@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
Apache Doris官方网站:
http://doris.apache.org
Apache Doris Github:
https://github.com/apache/doris
Apache Doris 开发者邮件组:
dev@doris.apache.org
本文分享自微信公众号 - ApacheDoris(gh_80d448709a68)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。