Databend vs. 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 加载的数据量超过 Snowflake 的 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 行 | 在 1 秒内成功摄取的数据量。 |
5 秒新鲜度基准测试
评估在 5 秒新鲜度要求下可以摄取的数据量。
指标 | Snowflake | Databend Cloud | 描述 |
---|---|---|---|
总时间 | 5s | 5s | 加载时间框架。 |
总行数 | 90,000 行 | 2,500,000 行 | 在 5 秒内成功摄取的数据量。 |
复现基准测试
您可以按照以下步骤复现基准测试。
基准测试环境
Snowflake 和 Databend Cloud 在相似条件下进行测试:
参数 | Snowflake | Databend Cloud |
---|---|---|
计算集群大小 | Small | Small |
vCPU | 16 | 16 |
价格 | $4/小时 | $2/小时 |
AWS 区域 | us-east-2 | us-east-2 |
存储 | AWS S3 | AWS S3 |
- TPC-H SF100 数据集,来源自 Amazon Redshift。
- 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);
- 从仪表板测量结果。