PowerData

编者荐语:

来自PowerData徐振超同学的精彩文章~

以下文章来源于数据极客圈 ,作者徐振超

[

数据极客圈 .

一入大数据深似海?别怕!“数据极客圈” 就是你的救生圈,走对圈子跟对人,趣析数据、畅聊趋势,快进圈子!

](#)

如今,不管是做电商、搞金融,还是做互联网运营,大家都知道数据就是公司的 “命根子”。数据不仅要准确,更得实时更新,这样领导们做决策才能又快又准。要是数据库更新数据不给力,业务发展肯定处处受限。Apache Doris 是最近非常火的开源实时数据仓库。不少大厂都在用它处理海量数据更新,靠着高性能和灵活的架构,在数据更新这块脱颖而出。接下来,咱们就深入了解下,Doris 究竟有哪些数据更新的 “绝招”,又是怎么操作的呢?

一、Doris 数据模型与更新基础

Doris 提供主键模型和聚合模型,适配不同业务场景的更新需求。

(一)主键模型

主键模型能确保记录唯一性,在用户画像数据场景应用广泛。以电商平台为例,平台需实时更新用户浏览偏好、购买记录等信息,同时保证每个用户仅有一条最新记录。主键模型包含 MoW(Merge-on-Write)和 MoR(Merge-on-Read)两种实现方式。MoW 在写入数据时就完成合并操作,查询时无需额外处理,查询性能比 MoR 快 5 - 10 倍,在高并发查询场景下,能有效降低查询延迟,提升系统响应速度。

(二)聚合模型

聚合模型适用于数据累加、平均等场景。以广告点击数据统计为例,当新的点击记录产生时,系统会自动将其与历史数据进行聚合计算,为广告投放效果分析提供实时数据支持,助力广告主及时调整广告策略,提升投放精准度。

二、Doris 数据更新方式

(一)UPDATE 语句

UPDATE 语句适合小规模、临时性的数据修改。比如在用户标签系统中,若需修正少量用户的标签信息,使用该语句十分便捷。不过,UPDATE 语句目前仅支持 UNIQUE KEY 模型,且只能更新 Value 列。示例如下:

-- 假设表user_profile包含user_id(主键)、user_label(标签列)等字段 UPDATE user_profile SET user_label = '新标签值' WHERE user_id = 123;

(二)基于导入的批量更新

对于大规模数据更新,基于导入的方式更具优势,而且该方式支持主键模型和聚合模型。Doris 支持 Stream Load、Broker Load、Routine Load、Insert Into等导入方式,在批量更新时,系统会自动采用 UPSERT 语义,确保数据一致性。

以 Stream Load 为例,在创建表时,若要开启 Merge-on-Write 部分列更新(Doris 2.1 后默认开启),需指定如下属性:

CREATE TABLE example_table (    id INT,    value VARCHAR(20) ) ENGINE = olap UNIQUE KEY(id) DISTRIBUTED BY HASH(id) BUCKETS 3 PROPERTIES (    "enable_unique_key_merge_on_write" = "true" );

在使用 Stream Load 导入数据时,需添加相应的 header,并在 columns 中指定要导入的列:

curl --location-trusted -u root:123456 -T test_data.csv -h "format:csv" -h "column_separator:," -h "partial_columns:true" -h "columns:id, value" http://10.16.10.6:8030/api/demo/example_table/_stream_load

这种方式能显著提升更新效率,特别适合每日百万级广告数据的更新场景。

三、Doris vs OLTP:数据更新的优劣对比

(一)Doris 作为 OLAP,与 OLTP 相比在数据更新方面的劣势

单条记录更新性能欠佳:OLTP 数据库专为处理大量并发的事务性操作设计,借助行级锁机制,能快速定位并更新单条记录,响应时间可低至毫秒级。而 Doris 作为 OLAP 数据库,其架构侧重于海量数据的批量处理和复杂查询分析,单条记录更新时,需在列式存储结构中进行复杂的元数据管理与数据重组,导致效率较低。

事务支持精细化不足:OLTP 严格遵循 ACID 特性,对事务的原子性、一致性、隔离性和持久性提供全面且精细的支持。Doris 虽然在批量更新时采用 UPSERT 语义确保数据一致性,但在事务的隔离级别和回滚机制方面,缺乏 OLTP 数据库那样的精细化管理。

实时互动更新体验不足:在 OLTP 场景中,用户对数据更新的响应速度和实时性要求极高,OLTP 数据库能够迅速响应用户的更新请求,并即时反馈结果。而 Doris 在处理交互式更新时,由于其查询优化和数据存储机制并非针对此类场景设计,在更新响应速度和用户交互体验上存在差距。

(二)Doris 在数据更新方面的优势

海量数据批量更新性能优:Doris 凭借独特的存储结构和并行计算能力,以 Stream Load 导入方式为例,能将百万级广告数据的更新时间从数小时大幅缩短至几分钟,远超 OLTP 数据库在大规模数据更新场景下的表现。

数据模型灵活适配性强:主键模型中的 MoW 机制在写入时完成数据合并,提升查询性能;聚合模型能自动处理数据的累加、平均等操作,满足多元业务需求,相比 OLTP 单一的数据模型,Doris 的适配性更强。

列更新策略降本增效:从 Doris 2.0 版本开始,在 MoW 实现中支持部分列更新功能,类似 Excel 表格的单元格级更新,减少不必要的数据更新开销。在聚合模型中,通过 REPLACE\_IF\_NOT\_NULL 聚合函数实现增量更新,新数据仅覆盖旧数据中的非空值,降低数据更新和存储成本。

更新与分析查询融合佳:Doris 在更新数据的同时,能为复杂的分析查询提供强大支持。在金融行业的实时交易数据分析场景中,既能快速处理海量交易数据的更新,又能为风险评估和决策提供实时依据,实现数据更新与分析查询的高效结合。

四、使用场景示例

(一)实时动态更新

在广告或推荐系统中,需频繁更新用户标签表中的行为信息,以支持实时分析和决策。Doris 的部分列更新功能能快速响应这些更新需求,当用户在电商平台浏览某类商品后,系统可立即更新用户的浏览偏好标签,为用户推送相关商品推荐,提升用户购物体验和平台转化率。

(二)数据修正

在财务数据管理中,若发现某笔交易记录有误,可使用 Doris 的 UPDATE 语句或基于导入的批量更新功能,及时修正错误数据,确保财务报表的准确性。

(三)大宽表拼接

在企业数据仓库建设过程中,经常需要将来自不同业务系统的数据整合到一张大宽表中。使用 Doris 的部分列更新功能,可只更新变化的数据,将新数据准确合并到目标表中,避免全表数据重写带来的高成本,降低数据整合的时间和资源成本。

Doris 数据库在数据更新方面功能强大,能应对不同规模数据更新需求,为企业提供可靠的数据更新解决方案。若你还未体验,不妨一试,说不定让你眼前一亮~

往期推荐

[

](http://mp.weixin.qq.com/s?__b...

Doris BE节点下线卡住?快速排障技巧全攻略!

Apache Doris 索引的全面剖析与使用指南

Doris 数据划分:分区与分桶策略全解析

Apache Doris 湖仓一体:打破数据边界,解锁实时分析的终极答案

Doris vs ClickHouse 企业级实时分析引擎怎么选?

Doris查询报错-230?别慌,教你几招秒解!

Doris Tablet 损坏如何应对?能恢复数据吗?

Doris的Stream Load那些事儿,你踩过哪些“坑”?

如何排查 Apache Doris 中 "Failed to commit txn" 导入失败问题?

Doris 导入慢该如何排查和优化

Doris 建表与分区问题全解析

Doris Schema Change 常见问题分析

数据极客圈子介绍

圈子1

Apache Doris社区是目前国内最活跃的开源社区(之一)。Apache Doris(Apache 顶级项目) 聚集了世界全国各地的用户与开发人员,致力于打造一个内容完整、持续成长的互联网开发者学习生态圈! 

如果您对Apache Doris感兴趣,可以通过以下入口访问官方网站、社区论坛、GitHub和dev邮件组:

💡官网文档:https://doris.apache.org 

💡社区论坛:https://ask.selectdb.com 

💡GitHub:https://github.com/apache/doris 

💡dev邮件组:mailto:dev@doris.apache.org

      可以加作者微信(Faith\_xzc)直接进Doris官方社区群

圈子2

PowerData是由一群数据从业人员,因为热爱凝聚在一起,以开源精神为基础,组成的数据开源社区。

社区整理了一份每日一题汇总及社区分享PPT,内容涵盖大数据组件、编程语言、数据结构与算法、企业真实面试题等各个领域,帮助您提升自我,成功上岸。

可以加作者微信(Faith\_xzc)直接进PowrData官方社区群

叮咚✨ “数据极客圈” 向你敞开大门,走对圈子跟对人,行业大咖 “唠” 数据,实用锦囊天天有,就缺你咯!快快关注数据极客圈,共同成长!

图片


PowerData
1 声望6 粉丝

PowerData社区官方思否账号