我在我的数据库中管理具有此架构的工具列表:
[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),因此这似乎效率不高。