跳到主要内容

Databend 与 Snowflake:数据摄取基准测试

概览

我们进行了四项基准测试,以具体评估 Databend Cloud 与 Snowflake 的数据摄取性能与成本:

  1. TPC-H SF100 数据集加载:关注大规模数据集(100GB,约 6 亿行)的加载性能和成本。
  2. ClickBench Hits 数据集加载:测试加载宽表数据集(76GB,约 1 亿行,105 列)的效率,强调高列计数带来的挑战。
  3. 1 秒新鲜度:衡量平台在严格的 1 秒新鲜度要求下的数据摄取能力。
  4. 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 倍

数据摄取基准测试

image

TPC-H SF100 数据集

指标SnowflakeDatabend Cloud描述
总时间695s446s加载数据集所需的时间。
总成本$0.77$0.25数据加载的成本。
  • 数据量:100GB
  • 行数:约 6 亿

ClickBench Hits 数据集

指标SnowflakeDatabend Cloud描述
总时间51m 17s9m 58s加载数据集所需的时间。
总成本$3.42$0.30数据加载的成本。
  • 数据量:76GB
  • 行数:约 1 亿
  • 表宽度:105 列

新鲜度基准测试

image

1 秒新鲜度基准测试

评估在 1 秒新鲜度要求内摄取的数据量。

指标SnowflakeDatabend Cloud描述
总时间1s1s加载时间框架。
总行数100 行40,000 行在 1s 内成功摄取的数据量。

5 秒新鲜度基准测试

评估在 5 秒新鲜度要求内能摄取的数据量。

指标SnowflakeDatabend Cloud描述
总时间5s5s加载时间框架。
总行数90,000 行2,500,000 行在 5s 内成功摄取的数据量。

重现基准测试

您可以按照以下步骤重现基准测试。

基准测试环境

Snowflake 和 Databend Cloud 在类似条件下进行了测试:

参数SnowflakeDatabend Cloud
仓库大小SmallSmall
vCPU1616
价格$4/小时$2/小时
AWS 区域us-east-2us-east-2
存储AWS S3AWS S3

先决条件

数据摄取基准测试

可以使用以下步骤复现数据摄取基准测试:

TPC-H 数据加载
  1. Snowflake 数据加载

  2. Databend Cloud 数据加载

ClickBench Hits 数据加载
  1. Snowflake 数据加载

  2. Databend Cloud 数据加载

新鲜度基准测试

可以使用以下步骤复现新鲜度基准测试的数据生成和摄取:

  1. 在 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>'
);
  1. 将数据卸载到外部 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;
  1. 从外部 Stage 加载数据到 hits 表。
COPY INTO hits
FROM @hits_unload_stage
PATTERN = '.*[.]tsv.gz'
FILE_FORMAT = (TYPE = TSV, COMPRESSION=auto);
  1. 从仪表盘测量结果。
这篇文章对您有帮助吗?
Yes
No