通过蜂巢中的偏斜表后,我与偏斜表的数据存储方式以及对隔板表的处理方式感到困惑。有人可以清楚地说明这两个概念在哪里有明显的例子
Skewed Tables and Partitioned Tables
重合以及它们在哪里不同?请提供示例。
偏斜和分区表的目的是相同的,以优化查询。但是,他们这样做以及适用时会有点不同。
让我们假设我们正在构建像Strava这样的健身追踪器,并且用户数据不断发送给我们。
-
Partitioning
:按日期和时间(如/year=2017/month=10/day=12
等(进行分配的数据是很正常的
SELECT col FROM table WHERE year=2017 AND month=10
-
Skewed table
:可能会有一些用户不仅在发送健身房锻炼,而且步行步骤数量,地理位置,自行车骑行,卡路里消费,睡眠等。这些用户很少,但是与普通用户相比,他们发送的数据数量很大。因此,如果您想通过UserId
查询,它会很慢:
SELECT col FROM table WHERE year=2017 AND month=10 AND userid=20
但是,偏斜的表可以在这里提供帮助。假设那些活跃的用户是20, 23, 25
。现在您可以创建存储数据,例如:
/year=2017/month=10/day=12/userid=20
/year=2017/month=10/day=12/userid=23
/year=2017/month=10/day=12/userid=27
/year=2017/month=10/day=12/userid=others
您可以看到,这些健身怪胎有自己的目录。当您在上面运行相同的查询时,这将导致快速查询(用户ID过滤(。
还有更多内容,请参阅此文档。