所以我有一个存储消息的大型集合,我想从这个集合中生成时间序列数据。
现在我遇到了时间序列数据的问题,之前我有1000万条记录按时间间隔分组并计算/平均值。
Timestamp => values
我通过将所有数据放入一个集合中来修复它,所以现在我的文档更少但文档更大。这有助于减少数据库查找相关文档所需的搜索和搜索时间。但是我不确定如何加快对非时间序列文档的查询速度。此外,我想搜索这个大文件中的文字,所以我必须寻找所有文件没有exepction。
正如我所说,我将消息存储在单个文档中,架构看起来像这样:
Id: string
Author: string
MessageType: string,
Group: string,
Message: string
Votes: number
Date: date
我想计算邮件中包含单词的所有记录或包含作者Joe的所有记录。或者总结投票等等。 所以我最终得到的时间序列数据可以放在图表上。
现在,如果我必须经历一年约5000万条记录的数据。并且查询是永远的,因为它必须获取如此多的记录并过滤掉我感兴趣的记录。
我怎样才能获得更好的表现?
我只在日期和作者字段上设置了索引。然而,我的查询速度很慢,数据库忙于处理一个查询。
我应该以某种方式预先汇总我的数据,这会是一个好方法吗? 或者在后台工作者中生成时间序列数据?
有人可以指引我正确的方式,这样我就可以实施一个可以减少数据库负载或提高查询性能的正确解决方案吗?
处理包含消息的大型集合的最佳做法是什么?
我如何分割这类数据?
设置副本集并在多台计算机之间对数据库进行分片是不是一个好主意?
任何帮助和输入都会得到满足。