Redshift数据存储架构

时间:2015-11-27 19:48:38

标签: database amazon-web-services amazon-redshift

AWS Redshift被命名为柱状MPP数据库。

对我来说,预期表(关系)按列拆分,并按块存储列,例如

blk0    col0_val0, col0_val1, col0_val2, ..., col0_val15
blk1    col0_val16,........................., col0_val31
...
blkn    col1_val22,..........................,col1_val50

表示每个块中只存储一列的值

但经过研究(参考:http://www.slideshare.net/AmazonWebServices/building-your-data-warehouse-with-amazon-redshift/24幻灯片第24页),我看到Redshift将数据存储在以下架构中

blk0    col0_val0, col1_val0, col0_val1, col1_val1......
...
blkn    col0_val100, col1_val100 ......

每个块中的多列(整行)

那行不是面向的吗?为什么称为柱状存储?

其他参考,页面https://blog.chartio.com/blog/understanding-interleaved-sort-keys-in-amazon-redshift-part-1

中的蓝色区域地图

1 个答案:

答案 0 :(得分:1)

我看到了混乱的原因。是的,你是正确的,柱状数据库(包括红移)存储表数据块"柱状",这意味着任何给定的块应该只包含来自单个列的数据。是的,Redshift也是如此。

您引用的链接正在讨论复合和交错排序键,它本质上是一种可选的索引方法,Redshift可以使用它来更快,更快地进行某些类型的随机(即非顺序)访问。在这些情况下,假设您选择的排序键包含多个列,那么只有在这种情况下,才会将多个列值合并为一个块。从性能优化的角度来看,这是有道理的。如果我希望我的所有数据按" month_name"的组合排序和" day_number" (一个过于简单的例子,不可否认),组合排序键需要在同一个块中按顺序存储这两个值。

希望这有助于澄清!!

相关问题