gpt4 book ai didi

mysql - 如何利用 memsql 生成合并多个表的报告

转载 作者:行者123 更新时间:2023-11-29 15:17:45 25 4
gpt4 key购买 nike

我们使用 memsql 列式存储数据库。我们为后端架构中的每个“偶数类型”创建管道,并为其创建一个专用表(我们称之为“源表”)。因此每个管道都会写入 memsql 上的一张表(也称为源表)

我们为客户提供不同的业务报告,其中包含来自多个源表的数据(不是我们可以连接的必要表,因为有些字段可以存在于一个表中,有些则不存在)

因此,克服这个问题的唯一方法是创建庞大且复杂的查询,其中包含 UNION 函数,这使得维护和理解变得非常困难

维护和保留这种架构的最佳实践是什么,这将使我们能够在多个源表上创建多个报告并降低查询复杂性。

我们认为的一种方法是对每个报告进行专门的查看。但我们不确定是否应该走那条路。我们需要创建外部 ETA,以便向该 View 添加越来越多的数据(每日流程)你对此有何看法?这可能是一种方法吗?

第二种方法只是使用 UNION 函数来操作大量查询(在运行时)我们不喜欢这种方式,因为它在查询时的运行时运行复杂性

我想提一下,这些报告不需要实时更新。我们可以从一个更新到另一个更新有缓冲(小时)

想法?

最佳答案

我看到两种可能的策略:优化读取或优化写入。您有一个管道可以将数据快速提取到“源”表。这绝对是针对写入进行优化的。但现在你正在为阅读而苦苦挣扎。 View 并不是一个坏方法,但每次报表运行都会产生连接成本。

考虑让管道(或另一个管道)将数据非规范化为报告所需的格式。这不是具有嵌入式联接的 View ,而是特定于所讨论的读取的数据的另一种存储。 (是的,重复数据,但存储很便宜,并且假设经常使用报告,此策略将转换计算移至摄取时的单个计算,而不是在每次报告运行时重复。)

如果您发现经常需要连接不同报告的标准数据,或者报告更加临时,请考虑更改“源”表架构以包含这些字段,并在管道摄取期间填充它们。然后,您可以使用更简单的查询来提高速度,而无需重复表。像这样的非规范化数据肯定有重复的元素——因此写入更复杂——但读取效率更高。

关于mysql - 如何利用 memsql 生成合并多个表的报告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59569433/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com