|
|
1
1
业务分析查询通常涉及计算指标的聚合,如总销售额和您举例说明的平均折扣。 olap数据结构对于这些用例非常有用,因为聚合可以被预计算和存储,因此在查询时需要较少的计算和i/o,并加快了在这些用例中使用的查询模式。 olap方法获得了发展势头(也是因为典型的关系数据库在这些场景中的性能较差),olap被证明是一种有效的优化方法。 Columnar数据库方法(在面向分析的数据库中)也旨在优化这些用例,主要是通过结构化和存储数据的方式,只有选定的列(如标签和聚合度量)才能从存储中读取。这需要更少的I/O,这也是Columnar格式为这些用例提供良好性能的主要原因之一(其他的是复杂的分区、并行处理、压缩和元数据,如 Apache Parquet ) 所以,关于您的问题,我想说,如果您在特殊查询场景中遇到性能低下的情况,并且无法以更直接的方式(如缓存、适当的分区和压缩)来解决,那么您应该只担心在列数据库中预计算聚合。但这也取决于您使用的数据库/saas/文件格式。 至于尺寸模型,那是另一个问题。如果使用像parquet这样的列文件格式,那么实际上可能需要(取决于用户和用例)使用 Hive 在文件上创建一个(元)维模型,以便您可以向用户公开数据库表和SQL接口,而不是一堆文件。 关于powerbi,与大多数报告工具一样,如果用户确实要使用10gb以上的数据集,则可以在直接查询模式下使用它。 PS:在一个列数据库中,特定的SQL语句不会“扫描整个表”,它只扫描您选择的列;这是列设计优化的一部分。 |
|
|
2
-1
你的销售增长SQL没有意义。随着时间的推移,销售增长受到监控,但您没有在sql中定义时间部分。例如,如果业务部门希望监视每周或每月的销售,则可以创建每周事实表或每月事实表,然后计算每周或每月的销售并保存到该事实表中。通过这种方式,您可以将每周或每月的数据附加到事实表中,这样报表就可以从事实表中读取数据。在事实表中有一个表示周/月开始和周/月结束的日期,以便报表可以使用它。使用这种设计方法,报表性能将很快,因为它不进行任何计算,而是显示汇总数据。 |
|
|
developer · 带外键的SQL表设计 11 月前 |
|
|
GH DevOps · 多对多关系中同类型的SQL Server关系表设计 11 月前 |
|
|
relatively_random · 确保两个表之间一致的共同参考 1 年前 |
|
|
b126 · 在两种不同的Oracle模式上执行相同查询的速度差异很大 1 年前 |
|
|
robertspierre · 在多对多关系中自动删除未引用的行 2 年前 |
|
|
Michael Samuel · MYSQL在以下情况下自动创建索引 7 年前 |