我一直在审核AWS文档,似乎无法理解分发方式如何工作以及如何将数据存储在Redshift上。我理解柱状存储数据库是什么,但是当我在Redshift上阅读关于分发方式的文档时,我对如何将数据存储在节点上感到困惑。分发样式表示为按行将新加载的数据分发到计算节点的切片。
例如,EVEN分配方式定义为:
均匀分发
领导节点在a中的切片上分配行 循环时尚,无论任何特定的价值观 柱。当表没有时,EVEN分布是合适的 参加加入或当KEY之间没有明确选择时 分配和所有分配。 EVEN分配是默认值 分配方式。
如果数据按行分布,那么数据如何存储到列式存储中呢?在将数据分发到计算节点后,柱状存储是否会生效?
以下是AWS文档的链接,讨论了列式存储和分发方式:
答案 0 :(得分:3)
每个Amazon Redshift群集都有多个节点。每个节点分为 slice ,分配了CPU和磁盘存储。
表格中的每个列都是单独存储的,因此每个切片需要至少3个块的表格。这就是使Redshift 柱状的原因 - 每列都是单独存储的。
每个块的大小 1 MB ,并且是独立压缩的。
请参阅:Why does a table in my Amazon Redshift cluster consume more disk storage space than expected?
分发键确定哪些行存储在哪些切片上。请记住 - 每个切片都有自己的存储空间用于表中的每个列,但行分布在切片之间。 (除了ALL的分布,它将每一行放入每个节点。)
在切片上特定列的存储空间内,数据将根据排序键进行排序。