【发布时间】:2023-03-08 19:41:01
【问题描述】:
我在我的数据库中管理具有此架构的工具列表:
[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),因此这似乎效率不高。
【问题讨论】:
-
您的字面意思是测量值>100 还是计数(测量值)>100?与测量记录的数量(百分比)相比,您的工具列表有多大?工具列表及其详细信息真的每隔几分钟就会改变一次吗?如果工具的细节发生变化,您希望旧测量数据与旧细节、新细节还是两者相关联?
-
“最近 6 次测量中的 4 次 > 100”。每个工具都会有数千个测量值。工具列表不会经常改变,但当它改变时,在报告中显示更新的数据很重要。当细节发生变化时,旧的测量应该链接到新的细节。我想我在这里问的是数据仓库中的一个基本问题。我是否需要定期将所有“工具”数据行复制到仓库(保存测量值的地方)以便更容易连接?我在读到 Vertica 在更新方面并不擅长,这个定期副本不是这样的更新吗?
标签: analytics data-warehouse olap oltp