梧桐数据库存储格式介绍

1前言

梧桐数据库,作为一款强大的开源关系型数据库管理系统,不仅提供了卓越的 SQL 查询能力,还在其发展历程中不断优化数据存储结构,以满足不同应用场景下的性能需求。从传统的 ROW 格式到最新的 MagmaAP  格式,梧桐数据库为用户提供了多种存储选择。本文档将详细介绍这些存储格式的特点、使用场景以及不同存储格式之间的区别。

2存储格式概述

1.ROW 格式

ROW 格式采用按行存储的机制。该格式适合常规的关系型数据库应用,特别是那些对实时读写性能有较高要求的场景。ROW 格式简单直观,易于理解和管理。

2.ORC 格式

ORC(Optimized Row Columnar)是梧桐数据库中的默认存储方式,ORC 格式是一种高效的列式存储格式,由 Hadoop 生态系统中的 Hive 项目引入。在梧桐数据库中,ORC 格式通过扩展模块支持,它特别适用于大数据分析和数据仓库场景。列式存储使得 ORC 在读取大量数据时能够跳过不必要的列,从而提高查询性能。

3.Hudi 格式

Hudi 是 Apache 的一个开源项目,旨在提供流处理与大数据存储之间的桥梁。在梧桐数据库中,Hudi 格式通过特定的扩展支持,使得数据库能够处理增量数据,并支持数据的更新和删除操作。Hudi 格式适用于需要实时数据摄取和处理的场景。

4.MagmaAP  格式

MagmaAP 是梧桐数据库 4.0.0.0 版本中引入的全新存储格式。它结合了行式存储和列式存储的优点,旨在提供高性能的读写能力,并支持事务和索引。MagmaAP 格式特别适用于需要高性能、高可靠性和实时数据处理的场景。

3不同存储格式建表

3.1ROW 格式表

梧桐数据库建表的指定存储格式为 ROW 格式,如下:

CREATE TABLE table_a (

id int,

rank int,

year smallint,

gender char(1),

count int )

with (appendonly =false)

上面的创建的表一样,显式指定存储格式类型,如下:

CREATE TABLE table_b (

id int,

rank int,

year smallint,

gender char(1),

count int )

with ( orientation =row);

创建一个 snappy 压缩格式的 ROW 表,如下:

CREATE TABLE table_c (

id int,

rank int,

year smallint,

gender char(1),

count int)

with (appendonly =true, orientation =row, compresstype = snappy);

参数说明:

appendonly:是否只允许数据追加,true/false。

orientation:表示表的存储格式,可配置的格式有:ROW、ORC、Hudi,magma等。

compresstype:表示配置压缩算法,可配置snappy、lz4,zlib等压缩算法。

创建一个 lz4 压缩格式的 ROW 表,如下:

CREATE TABLE table_d (

id int,

rank int,

year smallint,

gender char(1),

count int)

with (appendonly =true, orientation =row, compresstype = lz4);

3.2ORC 格式表

创建一个不压缩的 ORC 表,如果不指定压缩类型的话,默认不压缩。

CREATE TABLE table_e (

id int,

rank int,

year smallint,

gender char(1),

count int)

with (appendonly =true, orientation =orc);

创建一个带 snappy 压缩的 ORC 表,如下:

CREATE TABLE table_f (

id int,

rank int,

year smallint,

gender char(1),

count int)

with (appendonly =true, orientation =orc, compresstype = snappy);

创建一个带 lz4 压缩的 ORC 表,如下:

CREATE TABLE rank_h (

id int,

rank int,

year smallint,

gender char(1),

count int)

with (appendonly =true, orientation =orc, compresstype = lz4);

3.3Hudi 格式表

创建一个普通的 Hudi 表,相比 ROW/ORC 表,需要指定 type,默认不压缩。

CREATE TABLE rank_i (

id int,

rank int,

year smallint,

gender char(1),

count int)

with (appendonly =true, orientation =horc, type = mor);

创建一个带压缩的 Hudi 表,指定压缩类型为 lz4,如下:

CREATE TABLE rankj  (

id int,

rank int,

year smallint,

gender char(1),

count int)

with (appendonly =true, orientation =horc, type = mor,compresstype = lz4);

3.4magma 格式表

创建一个压缩的 magma 表,magma 内部自动实现了压缩。

CREATE TABLE rank_k (

id int,

rank int,

year smallint,

gender char(1),

count int)

format 'magmaap';

创建一个有 primary key 的 magma 表,magma 内部实现了压缩。

CREATE TABLE rank_l (

id int,

rank int,

year smallint,

gender char(1),

primary key(id) )

format 'magmaap';

4存储对比说明

梧桐数据库多种存储格式的特性对比说明如下表:

特性ROWORCHudiMAGMAAP

行/列存储行行列混合存储行列混合存储行列混合存储

存储格式自定义存储格式兼容标准 ORC 格式兼容 Apache Hudi 表格式自定义存储格式

是否支持新执行器不支持支持支持支持

压缩支持 SNAPPY, ZLIB支持 LZ4, SNAPPY, ZSTD, ZLIB支持 LZ4, SNAPPY, ZSTD, ZLIB自动选择压缩算法, 不需要用户指定

是否UPDATE/DELTE支持支持支持支持

是否 INDEX不支持不支持不支持支持

5存储格式选择

ROW 存储格式:简单直观,易于理解和管理;适用于实时读写性能要求较高的场景。

ORC 存储格式:高效的列式存储,适用于大数据分析和数据仓库场景;支持压缩和编码,降低存储成本。

Hudi 存储格式:支持增量数据处理,适用于实时数据摄取和处理场景;支持数据的更新和删除操作。

MagmaAP 存储格式:结合行式存储和列式存储的优点,提供高性能的读写能力;支持事务和索引,保证数据的一致性和可靠性。

6总结

梧桐数据库提供了多种存储格式,每种格式都有其独特的特点和适用场景。通过选择合适的存储格式,可以充分发挥数据库的性能优势,满足不同业务需求。在未来的发展中,梧桐数据库将继续优化和扩展存储格式的功能,比如 json、parquet,Avro 等格式,为用户提供更加高效、可靠的数据存储解决方案。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,163评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,301评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,089评论 0 352
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,093评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,110评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,079评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,005评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,840评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,278评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,497评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,667评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,394评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,980评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,628评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,796评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,649评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,548评论 2 352

推荐阅读更多精彩内容