2011-01-24 4 views
3

Possible en double:
mongoDB run queries just like as SQL !!!SQL Server Vs MongoDB: test de vitesse?

MongoDB:

var x = nosql.GetRecords<Event>(p => p._Data == "rawhix", 0, 12222); 
// ICursor<T> GetRecords<T>(expression, skip, limit); 

SQL:

SqlDataReader dr = SqlHelper.ExecuteReader("Select Top(12222)* From NewsFeed WHERE _Data = 'dddd'"); 

le MongoDB contient 1000000 rec ord qui sont les mêmes dans le SQL.
les données stockées sous la forme suivante:

Id = 1 , _Data = 1abc 
Id = 2 , _Data = 2bc 
... etc 

Event Classe:

Class Event => int Id => string _Data 

quand je lance le code le résultat est:
Mongo: 580ms
SQL: 102ms

Dois-je faire quelque chose pour résoudre ce problème !! parce que le mongo était toujours plus rapide sauf ce test!?!
Merci

+1

En supposant que vous ayez un index approprié sur la colonne _Data, je m'attendrais à ce que toute base de données relationnelle soit rapide à ce type de requête. Sérieusement - ce type de benchmark ne prouve rien. –

+0

Est-ce un repos? Aussi, hier, vos résultats étaient "Mongo: 172ms SQL: 185ms." - n'est-ce pas la même question? alors qu'est-ce qui a changé? –

+0

c'est un autre test. – Rawhi

Répondre

5

Vous avez besoin d'un index. Exécuter ce dans la console mongo:

db.Events.ensureIndex({_Data:1}); 

ou vous pouvez l'appeler via le pilote C#:

MongoDatabase db = server.GetDatabase("your_db_name"); 
MongoCollection<Event> events = hr.GetCollection<Event>("events"); 
employees.EnsureIndex("_Data"); 

Vous ne voudriez pas le faire à chaque appel, bien que depuis il est un autre appel à la DB et aura un très faible impact sur les performances. Pourquoi pensez-vous que MongoDB serait plus rapide que SQL Server pour ce type de requête simple?

+0

oui c'est dans la console mongo, mais qu'en est-il du pilote C# !! – Rawhi

+0

Ajouté comment le faire via le pilote C# - bien que vous ayez seulement besoin de le faire une fois par base de données, donc je ne l'appellerais pas à chaque fois. –

+0

@Rawhi: alors quelles étaient vos statistiques après ensureIndex()? – Storm