2013-08-05 138 views
0

我有要求每个小时(每日,每周在未来)报告优惠券代码赎回活动。广告系列可以有多个优惠券代码。MongoDB实时报告系统设计

我打算使用MongoDB的,并在我的脑海两种方法:

  1. 存储一个文件和查询中的每个细节换购在同一基础上的搜索条件。
  2. 创建一个小时的单个文档并将兑换细节作为嵌套文档。这里文档的关键是活动ID开始时间和结束时间。代表每次赎回的嵌套文件将与方法1相同。

在性能方面是否有第二种方法的优势。平均而言,一小时内赎回的总数将为1000,而最多一次的赎回将为100万。

我将不得不考虑MongoDB中单个文档的大小限制为16 MB。

请帮我设计这个解决方案。

问候, 阿布舍克

+0

也许这个问题,它的答案:http://stackoverflow.com/questions/17466150/popular-today-this-week-this-month-design-pattern/将是有益的。 – Dariusz

回答

0

我建议你使用你所提到的第一种方法,因为你不会有数据的大金额。如果您确保了索引,那么运行这些搜索都需要几毫秒。我们一直在使用MongoDB一段时间,并且我们正在处理超过2000万条记录的结果,并且从搜索中检索数据所需的时间不到一秒,并且在您希望更改查询的情况下使它更清晰更清晰未来。

+0

谢谢Jose,一个跟进问题:我将有多个活动(2-5k)。我应该为每个广告系列创建一个名称空间,并在每个名称空间内创建最多100万个兑换文档。您也可以建议部署配置,即我们应该向NOC团队订购多少个节点。 – user801871