论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
软件与程序人生
›
后端开发
›
Java
›
实时入库不用愁,HStore帮分忧
实时入库不用愁,HStore帮分忧
魏晓东
金牌会员
|
2023-8-8 18:07:14
|
显示全部楼层
|
阅读模式
楼主
主题
851
|
帖子
851
|
积分
2553
本文分享自华为云社区《
直播回顾 | 实时入库不用愁,HStore帮分忧
》,作者:汀丶。
海量数据时代,如何实现数据实时入库与实时查询?GaussDB(DWS) HStore表为数据高效存储与查询提供了哪些助力?本期《数仓实时入库利器—HStore表原理与应用实践详解》的主题直播中,我们邀请到华为云EI DTSE技术布道师马俊松,针对GaussDB(DWS)HStore表与开发者和伙伴朋友们展开交流互动。通过4部分内容帮助开发者快速了解HStore表。
GaussDB(DWS)表存储类型演进
传统的数据存储类型有行存储和列存储,GaussDB(DWS) 基于列存储格式设计和实现了全新的HStore表,同时提供高效的并发插入、更新入库,以及高性能实时查询。
行存储:数据以行为单位存储在数据块中,适用于传统OLTP场景,数据需要进行频繁的增删改查,数据量不会很大。行存储的优点是:点查性能好,更新效率高。实时并发入库使用行存表,能获得较好的并发更新入库性能,但分析查询性能与空间压缩往往不及预期
列存储:为了解决行存表的分析查询性能问题以及空间压缩问题,GaussDB(DWS)自研了列存储,适用于传统OLAP场景,数据量大,更新删除少。列存储能带来很好的空间压缩与批量查询性能提升,对于一些涉及多表关联的分析类复杂查询、数据不经常更新的表,推荐使用列存表。实时并发入库使用列存表,能获得较好的分析查询性能与数据压缩,但无法支持小批量入库。
列存表带Delta:为了解决小批量入库问题,GaussDB(DWS)自研了列存表带Delta,
适用于OLAP场景的小批量数据入库,导入后主要做查询分析业务,更新删除少。实时并发入库使用带Delta的列存表,能避免小批量入库的小CU问题,但基本无法支持并发更新入库。
HStore表:虽然列存表带Delta解决了小批量入库产生的小CU问题,但是没有解决同一个CU上的并发更新产生的锁冲突问题。而实时入库的场景下,需要将insert+upsert+update操作实时并发入库,数据来源于上游的其他数据库或者应用,同时要求入库后的数据要能及时查询,且对于查询的效率要求很高。目前的列存表由于锁冲突的原因无法支持并发upsert/update入库,导致这些有需要的局点只能使用行存表,但是行存表因为格式的天然劣势,在AP查询场景下一方面性能较慢,另一方面由于压缩差导致占用了大量的磁盘空间,对用户产生额外成本。GaussDB(DWS)中的HStore表, 在使用列存储格式尽量降低磁盘占用的同时,支持高并发的更新操作入库以及高性能的查询效率。面向对于实时入库和实时查询有较强诉求的场景,同时拥有处理传统TP场景的事务能力。
GaussDB(DWS)几种表类型对比
HStore表的解决方案
对于实时入库场景,数据通过Kafka、Flink导入到DWS中,同时下游实时应用,对数据入库的操作进行实时查询。入库后的数据支持热转冷,可以存储到obs上,进一步为客户节约成本,也支持外表导入,导入通过ORC/Parquet/text等格式,导出进行AI挖掘等操作。HStore表相当于同时满足上游的并发入库,以及下游的实时查询。
HStore表的技术特点
完整的事务一致性
支持全面的事务能力,数据插入或者更新提交后即可见不存在时延,保证数据ACID一致性。
全面的功能支持
提供和当前列存一样全面的功能和语法支持。
查询性能好
多表关联等复杂AP查询场景下,更完善的分布式查询计划与分布式执行器带来的性能优势,支持复杂的子查询和存储过程。
支持主键等传统索引能力去重和加速点查,也支持分区、全局字典、局部排序等方式进一步加速AP查询。
入库快
彻底解决列存CU锁冲突问题,支持高并发的更新入库操作,典型场景下,并发更新性能是之前的百倍以上。
高压缩
数据在MERGE进入列存主表后,按列存储具有天然的压缩优势,能极大地节省磁盘空间与IO资源。
HStore的Delta表与列存老Delta表的对比
HStore表的使用实践
当前HStore表提供了视图,可以用来观察Delta表的给类型元组数量以及Delta的膨胀情况。同时也提供了函数可以对Delta表做轻量清理以及全量清理。
关于压缩效率验证、并发更新入库验证、查询性能验证操作,感兴趣的开发者可以观看直播视频,学习后操作一下。
HStore表的使用注意事项
参数设置
HStore依赖后台常驻线程对HStore表进行MERGE清理操作,才能保证查询性能与压缩效率,所以使用HStore表务必设置相关GUC,推荐的配置如下:
并发同一行
当前HStore并发更新同一行仍然是不支持的,其中同一行上并发update/delete操作会先等锁然后报错,同一行上的并发upsert操作会先等锁然后继续执行。由于等待开销也是会影响业务的入库性能,甚至可能产生死锁,所以需要在入库时保证不会并发更新到同一行或者同一个key。
索引相关
索引会占用额外的空间,同时带来的点查性能提升有限,所以HStore表只建议在需要做Upsert或者有点查(这里指唯一性与接近唯一的点查) 的诉求下创建一个主键或者btree索引。
MERGE相关
由于HStore表依赖后台autovacuum来将操作MERGE到主表,所以入库速度不能超过MERGE速度,否则会导致delta表的膨胀,可以通过控制入库的并发来控制入库速度。同时由于Delta表本身的空间复用受oldestXmin的影响,如果有老事务存在可能会导致Delta空间复用不及时而产生膨胀。
UPSERT性能
HStore表虽然相比普通列存,并发upsert入库性能得到了很大提升,但相比行存还是有差距,大概只有行存的1/3。所以在不追求压缩率以及批量查询性能、只追求单点查询性能的场景下,还是推荐行存表入库。
欢迎感兴趣的开发者观看直播回放,了解详细信息。更多关于GaussDB(DWS)产品技术解析、数仓产品新特性的介绍,请关注GaussDB(DWS)论坛,技术博文分享、直播安排将第一时间发布在GaussDB(DWS)论坛。
论坛链接:
https://bbs.huaweicloud.com/forum/forum-598-1.html
直播回放链接:
https://bbs.huaweicloud.com/live/DTT_live/202308021630.html
点击关注,第一时间了解华为云新鲜技术~
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
魏晓东
金牌会员
这个人很懒什么都没写!
楼主热帖
基础常用dos命令
Unity技术手册 - Shader实现灵魂状态 ...
云原生之旅 - 14)遵循 GitOps 实践的 ...
.NET主流的几款重量级 ORM框架 ...
Vulnhub靶机-Al-Web-1
火山引擎 DataLeap 计算治理自动化解决 ...
vuluhub_jangow-01-1.0.1
Java集合框架(三)-HashSet
Android studio连接MySQL并完成简单的 ...
30 个 IDEA 常用小技巧,应有尽有,让 ...
标签云
存储
服务器
快速回复
返回顶部
返回列表