MonogoDB如何为非常大的数据集堆叠,其中只有一些数据是易失的
我正在开展一个项目,我们定期通过IMAP或POP收集大量电子邮件,对其进行分析(例如聚类到对话,提取重要句子等),然后通过网络呈现视图到最后用户。
主视图将是一个类似Facebook的个人资料页面,用于最近(大约20个)对话的每个联系人,每个对话都来自我们捕获的电子邮件。
对我们而言,能够经常快速地检索个人资料页面和最近20个项目非常重要。我们也可能经常在此Feed中插入最近的电子邮件。为此,文档存储和MongoDB的低成本原子写入看起来非常有吸引力。
然而,我们还会有大量的旧电子邮件会话,这些会话不会经常被访问(因为它们不会出现在最近的20个项目中,人们只会在他们搜索它们时看到它们,这将是相对罕见)。此外,随着时间的推移,此数据的大小将比联系人存储的增长更快。
从我读过的内容来看,MongoDB似乎或多或少地要求整个数据集保留在RAM中,解决这个问题的唯一方法就是使用虚拟内存,这会带来很大的开销。特别是如果Mongo无法区分易失性数据(配置文件/提要)和非易失性数据(旧电子邮件),这可能最终会非常讨厌(因为它似乎将虚拟内存分配转移到操作系统,我不知道Mongo怎么可能这样做。
似乎唯一的选择是(a)购买足够的RAM来存储所有内容,这对于易失性数据来说很好,但是对于捕获TB的电子邮件几乎没有成本效益,或者(b)使用虚拟内存并且看到读取/写入我们的易失性数据慢慢爬行。
这是正确的,还是我错过了什么? MongoDB是否适合这个特殊问题?如果是这样,配置会是什么样的?
没有找到相关结果
已邀请:
4 个回复
募磷
豆兢
锑寝粒
坝胺绣敝