mongodb server side api for php


mongodb server side api for php

我使用MongoDb,其中数据经常更改(更新),每分钟一次。数据通过HTTP从MongoDB思想第三方API应用程序获取。此外,API 数据在返回之前会额外聚合,例如计算第 N 页最近 X 天的浏览量总和。

不断增加的数据量(即这些集合中的少数从6 GB到14 GB)在某些情况下发生2-7秒的延迟,直到API返回聚合数据。提到的 Web 应用程序的延迟已经足够大了。我想以某种方式减少这些延迟。

在我描述的情况下使用哪些模型?也许首先我应该解释HTTP API的想法并将所有API逻辑移动到服务器端?

自己的想法,考虑:

也许应该有两个分离的数据"过程":

1)第一个"处理器"应该做所有的聚合工作,只写到第二个。

2)第二个"处理器"所有数据都只是返回,没有任何内部计算,聚合。

但是,当第一次写入第二个数据存储时,也可能会出现引导,应该有更新新旧数据的逻辑,这也会影响性能。

该第三方应用程序似乎做得不好,因此您应该删除它。也许您可以通过重构数据模型或使用更好的聚合算法来解决问题。

预计算

使用批处理器和实时处理器听起来是个好主意,但我认为您还不需要它(见下文)。如果您仍想实现它,您应该阅读有关 Lambda 架构的信息,因为它解决了您的方法可能存在的一些问题。

这种体系结构方法尝试通过使用批处理来提供全面而准确的预计算视图,同时使用实时流处理来提供动态视图,从而平衡延迟、吞吐量和容错。两个视图输出可以在演示之前连接。

数据模型(6 条经验法则)

你说有很多更新,这是使用MongoDB时的危险信号。某种更新可能会减慢MongoDB的速度,因为它的分布式性质。例如,尝试插入子文档,而不是更新字段。但这不是一门精确的科学,因此如果不看到数据模型,我就无能为力。

聚合框架

数据库是为数据而生的,因此将数据聚合移动到MongoDB中。Map Reduce在MongoDB上很慢,因此使用Aggregation Framework。