cen*_*cru 4 asp.net-mvc mongodb nosql asp.net-mvc-3 appharbor
我们正在开发一个部署在AppHarbor上的ASP.NET MVC 3网站.该网站上至少有10,000种产品.用户可以基于标记系统搜索产品(例如,搜索"color = blue"加上"size = 10"加上"category = whatever").因此,这个系统将在数据库读取和写入时发挥重要作用,我们的主要关注之一是保持搜索功能的速度极快.为此,我们还希望结合一些缓存结果.
我们认为这是一个使用NoSQL数据库的好用例(我们一直在关注MongoDB,要在https://mongohq.com上托管),我们是对还是错?
如果我们确实使用MongoDB,我们应该研究哪些缓存策略?
干杯!
MongoDB非常适合标记,因为它具有多键功能
例如,假设您创建了这样的产品文档
{
_id : 1,
name : "Widget",
tags: [
{color : "blue"},
{size : 10},
{foo : "bar"}
]
}
Run Code Online (Sandbox Code Playgroud)
然后,您可以在tags数组上创建索引,并为每个项目编制索引.因此,要查找所有蓝色的产品,您可以这样查询:
db.Products.find({tags : {color : "blue"}});
Run Code Online (Sandbox Code Playgroud)
关于这一点的好处是每个项目都可以有一组完全不同的标签"属性",查询将能够使用索引 - 有些可能有颜色和大小,有些可能有重量和高度.
关于缓存,在MongoDB中,有足够的RAM来保存你的工作集在内存中是很重要的(足以保存所有访问的数据和索引).这样,数据将保留在内存中,使查询非常快速.所以你可能不需要顶部的缓存技术.
| 归档时间: |
|
| 查看次数: |
1012 次 |
| 最近记录: |