我们将苹果应用程序数据存储在数据库中(http://www.apple.com/itunes/affiliates/resources/documentation/itunes-enterprise-partner-feed.html)。包含复杂对象的Mongo集合的数据模型建议
我们要为一个类型的查询优化:查找满足一些条件的所有应用程序。标准:(1)应用程序的平均评分; (2)应用评级数量; (3)由app支持的设备; (4)出售应用程序的国家/地区; (5)应用的当前价格;和(6)应用程序免费时的日期。该查询应该尽可能快。示例查询:“查找所有具有> 600等级的应用程序,平均5星级,支持iPad和iPhone,在美国销售,并在两天前将其价格降至0.00美元。”
基于苹果的模式,对每一个国家的价格信息。假设苹果支持100个国家,每个应用程序将有100个价格 - 每个国家一个。我们还需要存储每个应用的历史价格,这意味着10个价格变化的应用将有1000个价格(假设有100个国家/地区)。
三个问题:
1)你怎么劝我们存储在蒙戈的价格数据进行查询快?现在,我们正在考虑将价格存储为一组对象。每个对象由三个元素组成:(1)日期; (2)国家; (3)价格。
2)如果我们店的价格数据作为一个数组对象,有什么事我们需要做的,使对价格数据的搜索速度非常快。再次,普通价格搜索就像是“找到所有在美国商店再次将价格降至0.00美元的应用程序”。
3)我们应当牢记在存储数据的任何陷阱?
谢谢!如果我们将价格数据存储在单独的字段中,我们是不是会损失mongo的大部分功能和速度?我们的理解是,mongo需要数据在一个集合中存在才能达到最优。 – Crashalot 2013-02-26 22:52:58
我不这么认为。这完全是为了优化您预期的访问模式......最重要的原则是:避免任何闻起来像关系连接的东西,特别是*以回应每个最终用户的请求。根据您的描述,这听起来像摘要数据就足以满足大多数查询;尽可能允许尽可能多的页面以便一次装入RAM中。 – dampier 2013-02-26 23:20:39