【发布时间】:2015-08-17 02:33:40
【问题描述】:
我在 PostgreSQL 数据库中有大约 100 万个采用这种格式的事件:
id | stream_id | timestamp
----------+-----------------+-----------------
1 | 7 | ....
2 | 8 | ....
大约有 50,000 个独特的流。
我需要找到任意两个事件之间的时间超过特定时间段的所有事件。也就是说,我需要找到某个时间段内没有事件发生的事件对。
例如:
a b c d e f g h i j k
| | | | | | | | | | |
\____2 mins____/
在这种情况下,我想找到 (f, g) 对,因为它们是紧邻间隙的事件。
我不在乎查询是否(那个)慢,即对于 100 万条记录,如果需要一个小时左右就可以了。但是,数据集将继续增长,因此希望如果速度较慢,它可以正常扩展。
我在 MongoDB 中也有数据。
执行此查询的最佳方式是什么?
【问题讨论】:
-
事件是否由单个时间点(而不是时间跨度)定义?
-
你想要每个流都这样吗?换句话说,差距在属于单个流的事件之间?
-
@MOehm 是的,一个时间点
-
您也需要 MongoDB 的解决方案吗?
-
您能给我们展示一个 MongoDB 中的示例文档和预期的输出吗?
标签: sql mongodb algorithm postgresql bigdata