gpt4 book ai didi

analytics - 对 OLAP 和操作数据的联接查询

转载 作者:行者123 更新时间:2023-12-04 04:56:11 24 4
gpt4 key购买 nike

我在我的数据库中管理了具有此模式的工具列表:

[id] int PRIMARY
[name] varchar

每隔几秒钟,每个工具都会发出一个测量值。我将使用此架构将其保存在 OLAP 存储中:
[toolID] int
[time] timestamp
[measurement] int

(我们还没有选择 OLAP 存储,但假设我们需要一个,因为我们将运行的数据量、语义和查询类型)

如何查询测量值大于 100 的工具名称列表?挑战在于我需要连接来自 OLAP 和 OLTP 存储的数据。

选项 1 - 在 OLAP 中保存每个测量的工具名称(非规范化)。问题是自测量以来工具名称可能已更改,我需要最新的。此外,每个工具可能有更多的细节(和细节数据),不确定每次测量都保存它是否有意义。

选项 2 - OLAP 仅返回 ID 列表,然后我向 OLTP 发出查询以获取名称。这将需要带有许多嵌入 ID 的 SQL 查询,这似乎不正确。

选项 3 - 每隔几分钟将所有 OLTP 数据同步到 OLAP。但是 OLAP 工具并未针对更新(例如 Vertica)进行优化,因此这似乎效率不高。

最佳答案

通常,在 OLAP/DW 系统中,选项 3 是首选,工具列表及其详细信息将存储在工具维度表中,测量将存储在测量事实表中。

如果,正如您在评论中提到的,您是 不关心保存历史记录 详细信息更改时工具的详细信息和 工具细节的更新频率和数量都很小 ,那么我只会更新 Tool 维度中的记录,因为它的更新次数相对较少。

如果更新频率很小但实际更新次数很大,那么简单地截断工具维度并插入来自 OLTP 系统的所有工具记录可能会更容易和更快。在这种情况下,您需要确保有一种方法可以保留维度键,以便连接回已经存储的事实测量。如果您使用基于自动生成序列的代理键,这可能会很困难。

当工具详细信息的更新频率和数量很大时,就会出现真正的问题。在这种情况下,您必须退后一步查看整个模型,并确定工具详细信息是否确实属于某个维度,或者它们是否值得拥有自己的事实表。

关于analytics - 对 OLAP 和操作数据的联接查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16719411/

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