You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by GitBox <gi...@apache.org> on 2022/12/02 08:02:26 UTC

[GitHub] [doris] morningman commented on issue #14461: Release Note 1.2.0(Draft)

morningman commented on issue #14461:
URL: https://github.com/apache/doris/issues/14461#issuecomment-1334879879

   # Feature
   ## Highlight
   
   1. 全面向量化支持,性能大幅提升
   
       在标准的ssb-100的宽表性能测试中,1.2 的性能相较于1.1 提升2倍;在复杂的TPCH 场景下1.2 的性能相较于1.1 提升3倍。
   
   2. Merge-on-Write Unique Key
   
   	在原有的 Unique Key 数据模型上,支持了 Merge-on-Write 的数据更新模式。该模式在数据写入时即对需要删除或更新的数据进行标记,从而避免了在读取时对数据进行 Merge Read 的开销,极大的提高了可更新数据模型上的读取效率。
   	
   3. Multi Catalog
   
   	多源数据目录功能为Doris提供了快速接入外部数据源进行访问的能力。用户可以通过 `CREATE CATALOG` 命令连接到外部数据源。Doris 会自动映射外部数据源的库、表信息。之后,用户就可以像访问普通表一样,对这些外部数据源中的数据进行访问了。避免了之前用户需要对每张表手动建立外表映射的复杂操作。
       
       目前该功能支持以下数据源:
       
       1. Hive Metastore:可以访问包括 Hive、Iceberg、Hudi 在内的数据表。也可对接兼容 Hive Metastore 的数据源,如阿里云的 DataLake Formation。同时支持 HDFS 和对象存储上的数据访问。
       2. Elasticsearch:访问 ES 数据源。
       3. JDBC:通过 JDBC 协议访问 MySQL等数据库。        
       
       文档:https://doris.apache.org/zh-CN/docs/dev/ecosystem/external-table/multi-catalog)
   
       > 注:相应的权限层级也会自动变更,详见“升级注意事项”部分
   
   4. 轻量表结构变更
   
   	在新版本中,对数据表的加减列操作,不再需要同步更改数据文件,仅需在 FE 中更新元数据即可,从而实现毫秒级的Schema Change 操作。通过该功能,可以实现对上游 CDC 数据的 DDL 同步能力。如用户可以通过 Flink CDC,实现上游数据库到 Doris 的 DML 和 DDL 同步。
   
   	文档:https://doris.apache.org/zh-CN/docs/dev/sql-manual/sql-reference/Data-Definition-Statements/Create/CREATE-TABLE
   
   	通过建表的时候在 properties设 `"light_schema_change"="true"` 即可。
   	
   5. JDBC 外表
   
   	在新版本中,用户可以通过 JDBC 连接支持JDBC的外部数据源。当前已支持:
   	
     	- MySQL
     	- PostgreSQL
     	- Oracle
     	- SQLServer
     	- Clickhouse
   
   	文档:https://doris.apache.org/zh-CN/docs/dev/ecosystem/external-table/jdbc-of-doris/
   	
   	> 注:ODBC 外表功能将在之后的某个版本移除,请尽量切换到 JDBC 外表功能。
   	
   6. JAVA UDF
   
   	支持通过 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
   
   7. Remote UDF
   
   	支持通过 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
           
   8. 更多数据类型支持 
   
   	- Array 类型
   
   		支持了数组类型。同时也支持多级嵌套的数组类型。在一些用户画像,标签等场景,可以利用Array类型更好的适配业务场景。同时,新版本中,我们也实现了大量的数据相关的函数,以更好的支持数据类型在实际场景中的应用。
   		
   		文档:https://doris.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_max
           
   	- Jsonb 类型
   
   		支持二进制的Json数据类型:Jsonb。该类型提供更紧凑的json编码格式,同时提供在编码格式上的数据访问,相比于使用字符串存储的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
   
   	  文档:https://doris.apache.org/docs/dev/sql-manual/sql-reference/Data-Types/DATEV2
   	  
   	  影响范围:
   	  
   	  1. 用户需要在建表时指定datev2和datetimev2,原有表的date以及datetime不受影响。
   	  2. datev2和datetimev2在与原来的date和datetime做计算时(例如等值连接),原有类型会被cast成新类型做计算
   	  3. example在文档中有
   
   ## More
   
   1. 全新的内存管理框架
   
   	文档:https://github.com/apache/doris/blob/master/docs/zh-CN/docs/admin-manual/memory-management/memory-tracker.md
   
   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/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
           
   3. 更便捷的分区创建方式
   
   	支持通过 `FROM TO` 命令创建一个时间范围内的多个分区。
   
   4. 列重命名
   
   	对于开启了 Light Schema Change 的表,支持对列进行重命名。
   
   	文档:https://doris.apache.org/zh-CN/docs/dev/sql-manual/sql-reference/Data-Definition-Statements/Alter/ALTER-TABLE-RENAME
           
   5. 更丰富权限管理
   	
   	- 支持行级权限
   	
   		可以通过 `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
   
   6. 导入相关
   
   	- CSV 导入支持带 header的 csv文件。
   
   		在文档中搜索 `csv_with_names`:https://doris.apache.org/zh-CN/docs/dev/sql-manual/sql-reference/Data-Manipulation-Statements/Load/STREAM-LOAD/
   
   	- Stream Load 新增 `hidden_columns`,可以显式指定 delete flag 列和 sequence 列。
   
                    在文档中搜索 `hidden_columns`:https://doris.apache.org/zh-CN/docs/dev/sql-manual/sql-reference/Data-Manipulation-Statements/Load/STREAM-LOAD
   
   	- Spark Load 支持 Parquet 和 ORC 文件导入。
   
   	- 支持清理已完成的导入的 Label
     
     		文档:https://doris.apache.org/zh-CN/docs/dev/sql-manual/sql-reference/Data-Manipulation-Statements/Load/CLEAN-LABEL
   
   	- 支持通过状态批量取消导入作业
   
                   文档:https://doris.apache.org/zh-CN/docs/dev/sql-manual/sql-reference/Data-Manipulation-Statements/Load/CANCEL-LOAD
   
   	- broker load 新增支持阿里云 oss,腾讯云 cos/chdfs 和华为云 obs。
   	
                   文档:https://doris.apache.org/zh-CN/docs/dev/advanced/broker
   
   	- 支持通过 hive-site.xml 文件配置访问 hdfs。
   
                   文档:https://doris.apache.org/zh-CN/docs/dev/admin-manual/config/config-dir
   
   7. 支持通过 `SHOW CATALOG RECYCLE BIN` 功能查看回收站中的内容。
   
   	文档:https://doris.apache.org/zh-CN/docs/dev/sql-manual/sql-reference/Show-Statements/SHOW-CATALOG-RECYCLE-BIN
   
   8. 支持 `SELECT * EXCEPT` 语法。
   
   	文档:https://doris.apache.org/zh-CN/docs/dev/data-table/basic-usage
   
   9. OUTFILE 支持 ORC 格式导出。并且支持多字节分隔符。
       
       文档:https://doris.apache.org/zh-CN/docs/dev/sql-manual/sql-reference/Data-Manipulation-Statements/OUTFILE
   
   10. 支持通过配置修改可保存的 Query Profile 的数量。
   
   	文档搜索 FE 配置项:max_query_profile_num
   
   11. DELETE 语句支持 IN 谓词条件。并且支持分区裁剪。
   
   	文档:https://doris.apache.org/zh-CN/docs/dev/sql-manual/sql-reference/Data-Manipulation-Statements/Manipulation/DELETE
   
   12. 时间列的默认值支持使用 `CURRENT_TIMESTAMP`
   
   	文档中搜索 "CURRENT_TIMESTAMP":https://doris.apache.org/zh-CN/docs/dev/sql-manual/sql-reference/Data-Definition-Statements/Create/CREATE-TABLE
   
   13. 添加两张系统表: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
   
   14. 备份恢复
   
   	- 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
   
   15. 支持同机多磁盘之间的数据均衡
   
   	文档:
   	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-DISK
   	
   16. Routine Load 支持订阅 Kerberos 认证的 Kafka 服务。
   
   	文档中搜索 kerberos:https://doris.apache.org/zh-CN/docs/dev/data-operate/import/import-way/routine-load-manual
   
   17. 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 函数
   
   # Upgrade Notice
   ## Behavior Changed
   
   - 权限层级变更
     因为引入了Catalog层级,所以相应的用户权限层级也会自动变更。规则如下:
     - GlobalPrivs 和 ResourcePrivs 保持不变
     - 新增 CatalogPrivs 层级。
     - 原DatabasePrivs层级增加 internal 前缀(表示internal catalog中的db)
     - 原TablePrivs层级增加 internal 前缀(表示internal catalog中的tbl)
   
   - GroupBy 和 Having 子句中,优先使用列名而不是别名进行匹配。(#14408)
   
   - 不再支持创建以 "mv_" 开头的列。"mv_" 是物化视图中的保留关键词 (#14361)
   
   - 移除了 order by 语句默认添加的 65535 行的 limit 限制,并增加session变量 `default_order_by_limit` 可以自定配置这个限制。(#12478)
   
   - "Create Table As Select" 生成的表,所有字符串列统一使用 string类型,不再区分 varchar/char/string (#14382)
   
   - audit log 中,移除db和user名称前的 `default_cluster` 字样。(#13499)(#11408)
   
   - audit log 中增加 sql digest 字段(#8919)
   
   - union子句总order by逻辑变动。新版本中,order by子句将在union执行完成后执行,除非通过括号进行显式的关联。(#9745)
   
   - 进行decommission 操作时,会忽略回收站中的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` 的默认值为 一个月。
   
     - 增加参数 `max_replica_count_when_schema_change` 用于限制 alter 作业中涉及的 replica数量,默认为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)
   
   - Session变量变动
   
     - 修改变量 `enable_insert_strict` 默认为 true。这会导致一些之前可以执行,但是插入了非法值的insert操作,不再能够执行。(11866)
   
     - 修改变量 `enable_local_exchange` 默认为 true (#13292)
   
     - 默认通过 lz4 压缩进行数据传输,通过变量 `fragment_transmission_compression_codec` 控制 (#11955)
   
     - 增加 `skip_storage_engine_merge` 变量,用于调试 unique 或 agg 模型的数据 (#11952)
       
       文档:https://doris.apache.org/zh-CN/docs/dev/advanced/variables
   
   - BE 启动脚本会通过 `/proc/sys/vm/max_map_count` 检查数值是否大于200W。否则启动失败。(#11052)
   
   - 移除了 mini load 接口 (#10520)
   
   - FE Metadata Version
   
   	FE Meta Version 由 107 变更为 114,升级后不可回滚。
   
   ## During Upgrade
   
   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`,可以在升级前先关闭向量化执行引擎。 (#13868)
     
     - schema change 失败并报错:`desc_tbl is not set. Maybe the FE version is not equal to the BE` (#13822)
     
     - 向量化 hash join 不可使用并报错。`vectorized hash join cannot be executed`。可以在升级前先关闭向量化执行引擎。(#13753)
   
   	以上错误在完全升级后会恢复正常。
   
   ## Performance Impact
   
   - 默认使用 JeMalloc 作为新版本BE的内存分配器,替换 TcMalloc (#13367)
   
   - tablet sink 中的 batch size 修改为至少 8K。(#13912)
   
   - 默认关闭 chunk allocator (#13285)
   
   ## Api change
   
   - BE 的 http api 错误返回信息,由 `{"status": "Fail", "msg": "xxx"}` 变更为更具体的 ``{"status": "Not found", "msg": "Tablet not found. tablet_id=1202"}``(#9771)
   
   - `SHOW CREATE TABLE` 中, comment的内容由双引号包裹变为单引号包裹(#10327)
   
   - 支持普通用户通过 http 命令获取 query profile。(#14016)
   文档:https://doris.apache.org/zh-CN/docs/dev/admin-manual/http-actions/fe/manager/query-profile-action
   
   - 优化了 sequence 列的指定方式,可以直接指定列名。(#13872)
   文档:https://doris.apache.org/zh-CN/docs/dev/data-operate/update-delete/sequence-column-manual
   
   - `show backends` 和 `show tablets` 返回结果中,增加远端存储的空间使用情况 (#11450)
   
   - 移除了 Num-Based Compaction 相关代码(#13409)
   
   - 重构了BE的错误码机制,部分返回的错误信息会发生变化(#8855)
   Other
   
   - 支持Docker 官方镜像。
   
   - 支持在 MacOS(x86/M1) 和 ubuntu-22.04 上编译 Doris
     文档:https://doris.apache.org/zh-CN/docs/dev/install/source-install/compilation-mac/
   
   - 支持进行image 文件的校验。
   
     文档:https://doris.apache.org/zh-CN/docs/dev/admin-manual/maint-monitor/metadata-operation/ 
   
   - 脚本相关
   
     - FE、BE 的 stop 脚本支持通过 `--grace` 参数退出FE、BE(使用 kill -15 信号代替 kill -9)
   
     - FE start 脚本支持通过 --version 查看当前FE 版本(#11563)
   
   - 支持通过 `ADMIN COPY TABLET` 命令获取某个 tablet 的数据和相关建表语句,用于本地问题调试 (#12176)
   
   	文档:https://doris.apache.org/zh-CN/docs/dev/sql-manual/sql-reference/Database-Administration-Statements/ADMIN-COPY-TABLET
   
   - 支持通过 http api,获取一个SQL语句相关的 建表语句,用于本地问题复现(#11979)
   
   	文档:https://doris.apache.org/zh-CN/docs/dev/admin-manual/http-actions/fe/query-schema-action
   
   - 支持建表时关闭这个表的 compaction 功能,用于测试 (#11743)
   
   	文档中搜索 "disble_auto_compaction":https://doris.apache.org/zh-CN/docs/dev/sql-manual/sql-reference/Data-Definition-Statements/Create/CREATE-TABLE
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@doris.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@doris.apache.org
For additional commands, e-mail: commits-help@doris.apache.org