Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb 场外处理大型mongo收集_Mongodb_Storage_Replication_Database - Fatal编程技术网

Mongodb 场外处理大型mongo收集

Mongodb 场外处理大型mongo收集,mongodb,storage,replication,database,Mongodb,Storage,Replication,Database,我有一个将日志写入mongodb的系统(每天大约1kk日志)。每周我需要计算一些关于这些日志的统计数据。由于计算非常消耗处理器和内存,我想将收集的数据复制到功能强大的异地机器上。我如何在不复制所有内容的情况下使场外收藏保持最新?我通过在其元素中存储统计信息来修改场外集合,即添加字段{“alogirthm_1”:“passed”}或{“stat1”:3.1415}。复制是否适合我的用例,或者我应该研究其他替代方案 至于您的问题,是的,复制确实部分解决了您的问题,但存在一些限制。 因此,我知道有几种

我有一个将日志写入mongodb的系统(每天大约1kk日志)。每周我需要计算一些关于这些日志的统计数据。由于计算非常消耗处理器和内存,我想将收集的数据复制到功能强大的异地机器上。我如何在不复制所有内容的情况下使场外收藏保持最新?我通过在其元素中存储统计信息来修改场外集合,即添加字段
{“alogirthm_1”:“passed”}
{“stat1”:3.1415}
。复制是否适合我的用例,或者我应该研究其他替代方案

至于您的问题,是的,复制确实部分解决了您的问题,但存在一些限制。 因此,我知道有几种方法可以解决您的问题:

  • 半数据库半应用方式。
    复制使您的数据保持最新。但是,它不允许您修改辅助节点(您称之为“场外收集”)。因此,您必须对辅助设备进行计算,并将数据写入主设备。您需要在辅助服务器上运行应用程序,并将结果写回其主服务器。
    这需要运行一个应用程序,PHP、.NET、Python等等

  • 全服务器方式
    由于您将有多服务器的任何方式,您可以考虑使用更快的存储,并直接在网上进行计算。这样,您甚至不需要运行应用程序。Map/Reduce执行计算并将输出写入新集合。由于当前版本的复杂性,我不推荐此解决方案

  • 完整的应用方式
    基本上,您仍然使用复制进行读取,但服务器除了查询数据之外不进行任何计算。您可以使用或删除过期数据,只需在应用程序中逐个枚举数据并自行计算即可


  • 每天1kk的日志是多少?每天一百万行日志?你打算如何处理日志数据?Map/Reduce或者你有计算的应用程序?@Stennie,是的,没错。@yaoxing我已经有计算的应用程序了。@Moonwalker那么我的答案的解决方案1就适用了。您需要阅读有关聚合框架的文档和您的语言的API文档。这将给MongoDB服务器带来压力。而如果您使用解决方案3,则压力将在应用程序服务器上,逻辑将更加复杂。