前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Doris在生产环境中的一些最佳实践

Doris在生产环境中的一些最佳实践

作者头像
王知无-import_bigdata
发布2023-12-04 19:42:19
2960
发布2023-12-04 19:42:19
举报

大家好,一些经验和教训,总结一下,大家直接领走。

前缀索引

不同于传统的数据库设计,Doris 不支持在任意列上创建索引。Doris 这类 MPP 架构的 OLAP 数据库,通常都是通过提高并发,来处理大量数据的。

本质上,Doris 的数据存储在类似 SSTable(Sorted String Table)的数据结构中。该结构是一种有序的数据结构,可以按照指定的列进行排序存储。在这种数据结构上,以排序列作为条件进行查找,会非常的高效。

在 Aggregate、Uniq 和 Duplicate 三种数据模型中。底层的数据存储,是按照各自建表语句中,AGGREGATE KEY、UNIQ KEY 和 DUPLICATE KEY 中指定的列进行排序存储的。而前缀索引,即在排序的基础上,实现的一种根据给定前缀列,快速查询数据的索引方式。

所以:当where条件中包含Key的前缀列时,能够触发前缀索引,加速过滤。

例如:你的key的顺序是(k1,k2,k3,v1,v2)

那么:

where k1 = and k2,能够命中前缀索引 where k1 = and k3,只有k1能够命中前缀索引 where k3,不能够命中前缀索引

分区分桶

  • 分区

一般来说线上的数据规模较大,尽量采用分区。Doris的数据导入是分区粒度的,一次导入会更新同一分区下所有Tablet,分区能够减少数据导入完成后Compaction的压力。而且而且,分区列一般我们都是用时间列,当where条件包含对时间列的筛选时候,能够触发分区裁剪,这个是非常重要的优化手段。

  • 分桶

三个基本结论:分桶数量不宜过多,64个就够了;单个分桶数据量不宜过大,官方推荐1G-10G,但是实际情况有所不同,大家可以测一测,建议1G;单个分桶的数据规模不宜多大,百万级别最佳;

Flink写Doris

Flink写入Doris有一个场景需要大家特别注意,因为Flink写Doris是批次写入,同一个批次的数据理论上是无法保证顺序的。也就是说如果在极短的时间内更新同一列的某一个字段,在一个批次内提交到Doris,会有乱序风险。

为了解决这个问题,Doris支持了sequence列,通过用户在导入时指定sequence列,相同key列下,REPLACE聚合类型的列将按照sequence列的值进行替换,较大值可以替换较小值,反之则无法替换。该方法将顺序的确定交给了用户,由用户控制替换顺序。

但是,Sequence列只能在Uniq数据模型下使用。

OK,大家下课。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-12-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大数据技术与架构 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前缀索引
  • 分区分桶
  • Flink写Doris
相关产品与服务
数据保险箱
数据保险箱(Cloud Data Coffer Service,CDCS)为您提供更高安全系数的企业核心数据存储服务。您可以通过自定义过期天数的方法删除数据,避免误删带来的损害,还可以将数据跨地域存储,防止一些不可抗因素导致的数据丢失。数据保险箱支持通过控制台、API 等多样化方式快速简单接入,实现海量数据的存储管理。您可以使用数据保险箱对文件数据进行上传、下载,最终实现数据的安全存储和提取。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档