Databend 与 Snowflake:数据摄取基准测试
概览
我们进行了四项基准测试,以具体评估 Databend Cloud 与 Snowflake 的数据摄取性能与成本:
- TPC-H SF100 数据集加载:关注大规模数据集(100GB,约 6 亿行)的加载性能和成本。
- ClickBench Hits 数据集加载:测试加载宽表数据集(76GB,约 1 亿行,105 列)的效率,强调高列计数带来的挑战。
- 1 秒新鲜度:衡量平台在严格的 1 秒新鲜度要求下的数据摄取能力。
- 5 秒新鲜度:衡量平台在 5 秒新鲜度要求下的数据摄取能力。
平台
- Snowflake:知名的云数据平台,强调可扩展的计算、数据共享。
- Databend Cloud:基于开源 Databend 项目构建的云原生数据仓库,专注于可扩展性和成本效率。
基准测试条件
在 Small-Size
计算集群(16vCPU,AWS us-east-2)上进行,使用来自同一个 S3 桶的数据。
性能和成本比较
性能和成本
- TPC-H SF100 数据:Databend Cloud 比 Snowflake 成本降低 67%。
- ClickBench Hits 数据:Databend Cloud 实现了 成本降低 91%。
- 1 秒新鲜度:Databend 摄取的数据量是 Snowflake 的 400 倍。
- 5 秒新鲜度:Databend 摄取的数据量超过 27 倍。
数据摄取基准测试
TPC-H SF100 数据集
指标 | Snowflake | Databend Cloud | 描述 |
---|---|---|---|
总时间 | 695s | 446s | 加载数据集所需的时间。 |
总成本 | $0.77 | $0.25 | 数据加载的成本。 |
- 数据量:100GB
- 行数:约 6 亿
ClickBench Hits 数据集
指标 | Snowflake | Databend Cloud | 描述 |
---|---|---|---|
总时间 | 51m 17s | 9m 58s | 加载数据集所需的时间。 |
总成本 | $3.42 | $0.30 | 数据加载的成本。 |
- 数据量:76GB
- 行数:约 1 亿
- 表宽度:105 列
新鲜度基准测试
1 秒新鲜度基准测试
评估在 1 秒新鲜度要求内摄取的数据量。
指标 | Snowflake | Databend Cloud | 描述 |
---|---|---|---|
总时间 | 1s | 1s | 加载时间框架。 |
总行数 | 100 行 | 40,000 行 | 在 1s 内成功摄取的数据量。 |
5 秒新鲜度基准测试
评估在 5 秒新鲜度要求内能摄取的数据量。
指标 | Snowflake | Databend Cloud | 描述 |
---|---|---|---|
总时间 | 5s | 5s | 加载时间框架。 |
总行数 | 90,000 行 | 2,500,000 行 | 在 5s 内成功摄取的数据量。 |
重现基准测试
您可以按照以下步骤重现基准测试。
基准测试环境
Snowflake 和 Databend Cloud 在类似条件下进行了测试:
参数 | Snowflake | Databend Cloud |
---|---|---|
仓库大小 | Small | Small |
vCPU | 16 | 16 |
价格 | $4/小时 | $2/小时 |
AWS 区域 | us-east-2 | us-east-2 |
存储 | AWS S3 | AWS S3 |
- 来自 Amazon Redshift 的 TPC-H SF100 数据集。
- 来自 ClickBench 的 ClickBench 数据集。
先决条件
- 拥有一个 Snowflake 账户
- 创建一个 Databend Cloud 账户。
数据摄取基准测试
可以使用以下步骤复现数据摄取基准测试:
TPC-H 数据加载
Snowflake 数据加载:
- 登录您的 Snowflake 账户。
- 创建与 TPC-H 架构相对应的表。SQL 脚本。
- 使用
COPY INTO
命令从 AWS S3 加载数据。SQL 脚本。
Databend Cloud 数据加载:
- 登录您的 Databend Cloud 账户。
- 创建必要的表,与 TPC-H 架构相对应。SQL 脚本。
- 使用与 Snowflake 类似的方法从 AWS S3 加载数据。SQL 脚本。
ClickBench Hits 数据加载
Snowflake 数据加载:
- 登录您的 Snowflake 账户。
- 创建与
hits
架构相对应的表。SQL 脚本。 - 使用
COPY INTO
命令从 AWS S3 加载数据。SQL 脚本。
Databend Cloud 数据加载:
- 登录您的 Databend Cloud 账户。
- 创建必要的表,与
hits
架构相对应。SQL 脚本。 - 使用与 Snowflake 类似的方法从 AWS S3 加载数据。SQL 脚本。
新鲜度基准测试
可以使用以下步骤复现新鲜度基准测试的数据生成和摄取:
- 在 Databend Cloud 中创建一个外部 Stage
CREATE STAGE hits_unload_stage
URL = 's3://unload/files/'
CONNECTION = (
ACCESS_KEY_ID = '<your-access-key-id>',
SECRET_ACCESS_KEY = '<your-secret-access-key>'
);
- 将数据卸载到外部 Stage。
CREATE or REPLACE FILE FORMAT tsv_unload_format_gzip
TYPE = TSV,
COMPRESSION = gzip;
COPY INTO @hits_unload_stage
FROM (
SELECT *
FROM hits limit <the-rows-you-want>
)
FILE_FORMAT = (FORMAT_NAME = 'tsv_unload_format_gzip')
DETAILED_OUTPUT = true;
- 从外部 Stage 加载数据到
hits
表。
COPY INTO hits
FROM @hits_unload_stage
PATTERN = '.*[.]tsv.gz'
FILE_FORMAT = (TYPE = TSV, COMPRESSION=auto);
- 从仪表盘测量结果。