Redshift和超宽桌子

时间:2016-11-22 18:45:01

标签: amazon-redshift data-warehouse

在尝试处理多租户维DW中特定对象的自定义字段时,我创建了超宽的非规范化维度表(数百列,列的硬编码限制),Redshift不太喜欢;)。

  

用户1 | attR1位| attR2位... attr500

即使对少数记录中的单列进行无辜的更新查询也需要大约20秒。 (这有点令人惊讶,因为我猜它不应该是柱状数据库上的问题。)

任何指针如何修改设计以便从规范化的源表(一个用户有多个不同的属性,一个属性是一行)更好地报告到非规范化(每个用户一行有通用列,每个租户不同)?

或者有人试图在Redshift中将规范化记录转置(转动)到非规范化视图(表格)?我担心表现。

1 个答案:

答案 0 :(得分:3)

考虑如何 Redshift存储数据然后实现对该数据的更新可能很重要。

每列都存储在自己的1MB块序列中,这些块的内容var nodes = $('#tree').jstree('get_selected', true); 确定。因此,排序键值的多行可以容纳1MB,其中所有其他列的对应1MB中有多少(和哪些)值。

当您向Redshift询问SORTKEY行时,它实际上会为与该行对应的所有列写入整个块的新版本 - 而不仅仅是更改的块。如果您有1,600列意味着更新单行需要Redshift将最小的1,600MB新数据写入磁盘。

如果您的更新涉及许多不在一起的行,则可以放大此问题。我强烈建议选择一个与更新数据范围密切相关的UPDATE,以尽量减少写入量。