gpt4 book ai didi

postgresql - 如何处理 Redshift 中的 Slowly Changing Dimension Type 2?

转载 作者:行者123 更新时间:2023-11-29 11:25:52 25 4
gpt4 key购买 nike

我想随时跟踪用户名更改。

我在 Redshift 中有以下用户表:

id     username     valid_from     valid_to     current    
--------------------------------------------------------
1 joe1 2015-01-01 2015-01-15 No
1 joe2 2015-01-15 NULL Yes

我的源数据来自 RDS Postgres。我正在考虑如何处理这个问题的几种选择:

1) 创建 users_history 表并开始在 RDS Postgres 数据库中跟踪它。这需要我对我的应用程序进行更改,并且此表可能会变得很大

2) 有一个 ETL 过程并每 5 分钟查询一次用户源表以查找新更改(按最后更新时间排序)并将其转储到 DynamoDB。

3) 有一个 ETL 进程将数据转储到 S3,然后将其复制到 Redshift 中的一个临时表中并在那里进行查询更新

从长远来看,您能否提供一些可扩展且易于维护的建议?请记住,这些表可能很大,我将跟踪许多表的 SCD。

谢谢。

更新 1:我与 AWS 支持聊天,他们向我展示了这个,似乎是一个很好的解决方案:http://docs.aws.amazon.com/redshift/latest/dg/merge-specify-a-column-list.html

最佳答案

在 SQL/ETL 实现方面,Redshift 支持 RDS 支持的任何东西。因此,您的决定应基于数据库的约束和期望。

Redshift 是一个读取优化系统,因此每隔几分钟更新一次可能会降低查询速度。 (在 Redshift 上不太推荐使用微型 ETL)

另一方面,如果您可能拥有巨大的表,Redshift 的性能将优于大多数行存储数据库(如 MySQL、Postgre 等)。这种性能差异会随着数据量的增长而增加,因为 Redshift 是为比传统系统更大的规模而设计的。

关于postgresql - 如何处理 Redshift 中的 Slowly Changing Dimension Type 2?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34297538/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com