客观的:
当计数的数量级为 100,000 - 10,000,000 时,获取两次之间发生某事的次数。
当前实施:
- 使用 PostgreSQL
- 每个“事件”都记录为表格中的单独行
列:
- 事件类型
- 它发生的日期时间
获取计数的查询(伪代码):
COUNT rows WHERE time_occurred > <begin_time> AND time_occurred < <end_time>
问题:
这可行,但查询效率非常低,需要大约 40 秒才能响应。据我了解,PostgreSQL 不是用于此类查询的好数据库。
我坐下来想了几种方法可以在 O(log n) 时间内索引和执行这种类型的查询,所以我知道 t 是可能的。
我应该使用什么工具来做到这一点?我们应该使用不同的数据库来存储计数行吗?有没有我们可以在 PostgreSQL 上安装的软件包来轻松完成这项工作?我们有哪些选择?
笔记:
不确定我是否清楚这一点。的结果COUNT
应该在 100,000 - 10,000,000 的数量级上。这意味着与查询匹配的行数大约为 100,000 - 10,000,000。表中的实际行数要多一个数量级。
非常感谢!