【问题标题】:Clustering and Search Optmization use case Snowflake聚类和搜索优化用例 Snowflake
【发布时间】:2021-07-19 18:43:32
【问题描述】:

我在 MySQL aurora 中有一个表,我需要迁移到 Snowflake 。 表的大小为 6 TB,有 30 亿行。 对于我们的应用程序,90% 的时间我们使用基于 OBJ_ID 的查询,它返回 100 到 1000 条记录。

Snowflake 中的 DDL 类似于 MySQL

create or replace table app_event (
  ID varchar(36)  not null primary key, 
  VERSION number, 
  ACT_TYPE varchar(255),
  EVE_TYPE varchar(255),
  CLI_ID varchar(36),
  DETAILS variant,
  OBJ_TYPE varchar(255),
  DATE_TIME timestamp,
  AAPP_EVENT_TO_UTC_DT timestamp,
  GRO_ID varchar(36),
  OBJECT_NAME varchar(255),
  OBJ_ID varchar(255),
  USER_NAME varchar(255),
  USER_ID varchar(255),
  EVENT_ID varchar(255),
  FINDINGS varchar(255),
  SUMMARY variant
);

我们正在从 MySQL 迁移到 Snowflake,因为我们需要执行分析和聚合查询,而 MySQL 在这方面做得很好,因此我们正在考虑为此目的迁移到 Snowflake。

在如此巨大的增长中维持单个 6 TB 的 MySQL 是很困难的,这就是为什么我们正在考虑通过分析和聚合将一些用例扩展到 Snowflake。

因此计划是将最近 2 年的数据保存到 MySQL 中,并将完整的数据子集保存到 Snowflake 中。

我们可以这样做,但是对于某些需要导出一些报告以供需要完整数据和查询的用途的用例,类似于

select * from table where OBJ_ID ='1234'

现在的问题是对于 6 TB 表 30 亿行,Snowflake 对此类查询表现良好吗? 1 秒 - 3 秒的延迟就可以了。

要获得这种性能,我需要使用 clusteringsearch optimization

我在 OBJ_ID 列中有按时间顺序排列的 UUID,并且该表中将有数百万个不同的 OBJ_ID。

我应该通过 OBJ_ID 创建表簇吗?

有什么方法可以让 Snowflake 在这种用例中运行得更快?

我们可以使用散列码进行聚类并创建表只是一个基于或 NTILE 的分组吗?

我们计划用 2 亿个数据做 POC,但可以吗?还是我们需要用完整的数据集进行测试?

如果我们在这种用例中使用 Snowflake,成本会更高吗?

注意:这是一个单独的表,与任何其他表没有关系

测试一: 我们已经加载了 1.5 亿行 基于返回 400 行的 OBJ_ID 选择需要 3 秒,而当我们执行相同的查询时则需要 200 毫秒。

它说 分区总数 350 分区扫描 250

之后我们更改表并使用 OBJ_ID 的集群,但结果相同。

我们不知道 CLUSTER by 是否工作,但我们在这里没有获得任何性能提升

我们可以让他更快吗?

【问题讨论】:

    标签: snowflake-cloud-data-platform snowflake-schema


    【解决方案1】:

    很难回答,因为这里有多个问题,有些人可能会认为这都是固执己见。话虽这么说,是的,按键集群。查询执行的实际工作发生在 Snowflake 仓库中,因此您需要适当地扩展您的仓库定义 [按大小扩展]。

    性能比 MySQL 快?非常可能。您的 POC 会做得很好。

    成本?无法在这里进行比较。

    警告:Snowflake 仅强制执行 NULL/NOT NULL 约束! PK 和 FK 约束可能会显示在 DDL 中,但您必须自己管理(也就是在您的应用程序中)。

    【讨论】:

    • 我只是这个表与任何其他表没有关系。我只是担心 obj_id 的 so 集群应该工作,即使我们有 5 亿个不同的对象 id
    • 当然。他们处理比这更大的数据,所以我不会担心。
    猜你喜欢
    • 2021-01-09
    • 1970-01-01
    • 2011-08-28
    • 1970-01-01
    • 2011-03-03
    • 1970-01-01
    • 1970-01-01
    • 2015-07-20
    • 1970-01-01
    相关资源
    最近更新 更多