Iam*_*mIC 11 hierarchical-data mongodb mongodb-.net-driver
我有一个特定的数据操作要求,我已经解决了如何在SQL Server和PostgreSQL中做.但是,我对速度不太满意,所以我正在调查MongoDB.
描述查询的最佳方法如下.描绘美国的分层数据:国家,州,县,市.假设一个特定的供应商可以为整个加州服务.另一个可能只服务于洛杉矶.可能有数十万个供应商,他们都可以从这个层次结构中的某些点进行服务.我并没有把它与Geo混淆 - 我用它来说明需要.
使用递归查询,可以很容易地获得可以为特定用户提供服务的所有供应商的列表.如果他是在说帕萨迪纳,美国加利福尼亚州洛杉矶,我们会走到层次得到应用的ID,然后查询回落,找到供应商.
我知道这可以优化.同样,这只是一个简单的查询示例.
我知道MongoDB是一个文档存储.这非常适合我的其他需求.问题是它对我描述的查询类型有多适合?(我知道它没有连接 - 这些是模拟的).
我知道这是一个"一段字符串多长时间"的问题.我只是想知道是否有任何人有使用MongoDB做这种事情的经验.从0到测试可能需要一段时间,如果MongoDB不适合这个,我希望节省时间.
例
当地的电影商店"A"可以在斯普林菲尔德供应Blu-Rays.具有全州分布的连锁店"B"可以向所有IL提供Blu-Rays.按需下载商店"C"可以供应给所有美国用户.
如果我们想要获得伊利诺斯州斯普林菲尔德的所有适用电影供应商,那么答案将是[A,B,C].
换句话说,在层次结构上有许多不同级别的供应商.
我意识到这个问题是在近一年前提出的,但从那时起MongoDB就有了这个问题的正式支持解决方案,我只是使用了他们的解决方案.请参阅他们的文档:http://www.mongodb.org/display/DOCS/Trees+in+MongoDB
与您的问题最相关的部分位于页面的"部分路径"部分下.
虽然嵌入祖先数据可能会有点沉重; 这种方法是解决MongoDB问题的最合适方法.我到目前为止遇到的唯一陷阱是,如果你将所有这些存储在一个文档中,那么在处理足够的数据时,你可以达到16MB的文档大小限制(尽管,我只能看到这种情况发生,如果你使用这种结构来跟踪用户推荐[可能达到数百万]而不是美国城市[根据最新的美国人口普查,这超过26,000].
参考文献:
http://www.mongodb.org/display/DOCS/Schema+Design
http://www.census.gov/geo/www/gazetteer/places2k.html
| 归档时间: |
|
| 查看次数: |
9430 次 |
| 最近记录: |