我想知道您是否认为使用 monetdb(或另一个列式数据库)将所有数据放在一个大而平坦的表中而不是将其分解为多个相关表是否合理。
例如,二手车数据库(flat)可能如下所示:
Make Model Year Color Mileage
Chevy Malibu 2009 orange 102100
Chevy Malibu 2009 orange 98112
Chevy Malibu 2008 orange 210232
Chevy Malibu 2009 pink 150100
注意到 Make-Model-Year-Color、SQL 数据库或 Excel 电子表格或其他任何内容中的冗余,您可能有两个表,例如:
mId Make Model Year Color
1 Chevy Malibu 2009 orange
2 Chevy Malibu 2008 orange
3 Chevy Malibu 2009 pink
mId Mileage
1 102100
1 98112
2 210232
3 150100
这有助于以更复杂的查询为代价实现冗余,并且必须考虑如何分解(分解)表。
我正在阅读有关列式数据库和特别是 monetdb 的信息。看起来,由于 monetdb 单独压缩列,冗余无关紧要,您可以只使用平面表来期望相同或更好的性能(查询时间、磁盘使用情况),因为一组分解良好的关系表会提供。这节省了设计工作,但更好的是让您完全自动化模式设计——通过避免它。
你怎么看?是否有一些我没有看到的隐藏成本?