跳到主要内容

Databend vs. 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 加载的数据量超过 Snowflake 的 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 行在 1 秒内成功摄取的数据量。

5 秒新鲜度基准测试

评估在 5 秒新鲜度要求下可以摄取的数据量。

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

复现基准测试

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

基准测试环境

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. 从仪表板测量结果。