MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

mongodb groupby бавно дори след добавяне на индекс

Както можете да видите от заявката, която сте написали, този тип агрегиране във 2.0 изисква да стартирате Map/Reduce. Map/Reduce на MongoDB има някои наказания за производителност, които бяха разгледани на SO преди - основно, освен ако не сте в състояние да паралелизирате в клъстер, вие ще изпълнявате еднонишков javascript чрез Spidermonkey - не е бързо предложение. Индексът, тъй като не сте избирателни, не помага наистина - просто трябва да сканирате целия индекс, както и евентуално документа.

С предстоящото издание на 2.2 (в момента в rc1 към момента на писане на това) все пак имате някои опции. рамка за агрегиране (което е естествено, а не базирано на JS Map/Reduce), въведено във 2.2, има вграден групов оператор и е създаден специално за ускоряване на този вид операции в MongoDB.

Бих препоръчал да опитате 2.2 и да видите дали ефективността ви при групирането се подобрява. Мисля, че ще изглежда така (забележка:не е тествано):

db.alarm.aggregate(
    { $group : {
        _id : "$serverName",
        count : { $sum : 1 }
    }}
);


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Не може да стартира MongoDB като услуга

  2. Полета за избор на Mongoose (вложени)

  3. Mongoose Virtuals в MongoDB Aggregate

  4. Как да се гарантира, че асинхронно повикване се изпълнява, преди да се върнете от функция в Mongoose?

  5. Mongodb:вземете само листа от дърво