【问题标题】:mongoDB run queries just like as SQL !mongoDB 像 SQL 一样运行查询!
【发布时间】:2011-01-22 19:23:37
【问题描述】:
    public IQueryable<T> GetRecords<T>(System.Linq.Expressions.Expression<Func<T, bool>> expression, int from, int first) where T : class, new()
    {
        first = first == 0 ? 30 : first;
        return _db.GetCollection<T>(collectionName).Linq().Where(expression).Skip(from).Take(first);
    }
    var x = GetRecords<Event>(p => true, 0, 12222);
    string eventJson = new JavaScriptSerializer().Serialize(x);

这个函数从 mongoDB 中获取数据。

    SqlDataReader dr = SqlHelper.ExecuteReader("Select Top(12222)* From NewsFeed");
    string eventJson = new JavaScriptSerializer().Serialize(dr);

这来自 SQL Server 。

我试图测量它们每个的执行时间,结果是:
Mongo : 172ms
SQL:185毫秒。
但据我所知,mongoDB 应该比 SQL 快太多了,对吧!?!

【问题讨论】:

  • 为什么你认为它应该更快?
  • 为什么我认为 mongo 应该比 SQL 更快!?!
  • 你也应该意识到你的很多开销可能不在数据层,它可能来自数据的迭代和反序列化。并非总是在所有用例中都使用 MongoDB >> SQL。

标签: c# linq performance mongodb


【解决方案1】:

MongoDB 不一定要在这样的简单查询中胜过 SQL 服务器;当您拥有辅助数据时,速度优势就会出现。我不知道您的域是什么样的,但一个常见的例子是博客。在 SQL 数据库中,您将有一个帖子表、一个 cmets 表、一个作者表等。您检索单个博客帖子显示所需的所有数据的查询将包括几个连接或多个查询(任何一种方式都会影响表现有点)。在 NoSQL 数据库中,可能只有一个表 Posts。一个没有连接的查询将拉回所有需要的数据。

Here's a nice blog post talking about the different approaches between a NoSQL type store and a relational store.

【讨论】:

  • 很好,但如果我有 1000000 个用户,他们按下了 reload 。会发生什么:D !!
  • 我真的不确定你在这里问我什么;一百万用户同时重新加载一个页面,无论是使用 SQL 还是 MongoDB,都可能会失败,除非您在优化/缓存和非常好的硬件环境上投入了大量精力。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-09-13
  • 1970-01-01
  • 2017-08-15
  • 2012-08-11
  • 1970-01-01
  • 2015-10-17
  • 1970-01-01
相关资源
最近更新 更多