mongoDB выполняет запросы так же, как SQL! - PullRequest
2 голосов
/ 22 января 2011
    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: 172 мс
SQL: 185 мс.
но, как я знаю, mongoDB должен быть намного быстрее, чем SQL, верно!?!

1 Ответ

7 голосов
/ 22 января 2011

MongoDB не обязательно о быстродействии SQL-сервера в таком простом запросе; Преимущество в скорости приходит, когда у вас есть вспомогательные данные. Я не знаю, как выглядит ваш домен, но типичным примером является блог. В базе данных SQL у вас будет таблица сообщений, таблица комментариев, таблица авторов и т. Д. Ваш запрос на получение всех данных, необходимых для отображения одного сообщения в блоге, будет включать несколько объединений или несколько запросов (в любом случае производительность немного). В базе данных NoSQL может быть одна таблица Posts. Один запрос без объединений возвращает все необходимые данные.

Вот хороший пост в блоге, рассказывающий о различных подходах между хранилищем типов NoSQL и реляционным хранилищем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...