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

Как мога да подобря груповата производителност на MongoDB?

Изпращайте операциите за групово вмъкване на партиди, тъй като това води до по-малко трафик към сървъра и по този начин извършва ефективни телени транзакции, като не изпраща всичко в отделни отчети, а по-скоро се разделя на управляеми парчета за ангажиране на сървъра. Освен това има по-малко време за изчакване на отговора при обратното извикване с този подход.

Много по-добър подход при това би бил използването на async модул, така че дори зациклянето на входния списък е неблокираща операция. Изборът на размера на пакета може да варира, но избирането на операции за пакетно вмъкване на 1000 записа би направило безопасно оставането под твърдия лимит от 16MB BSON, тъй като цялата „заявка“ е равна на един BSON документ.

Следното демонстрира използването на async module's while за итерация през масива и многократно извикване на функцията итератор, докато test връща true. Извиква обратно извикване, когато е спряно или когато възникне грешка.

var bulk = col.initializeOrderedBulkOp(),
    counter = 0,
    len = array.length,
    buildModel = function(index){   
        return {
            "data": array[index],
            "metaData": {
                "hash": hash,
                "date": timestamp,
                "name": name
            }
        }
    };

async.whilst(
    // Iterator condition
    function() { return counter < len },

    // Do this in the iterator
    function (callback) {
        counter++;
        var model = buildModel(counter);
        bulk.insert(model);

        if (counter % 1000 == 0) {
            bulk.execute(function(err, result) {
                bulk = col.initializeOrderedBulkOp();
                callback(err);
            });
        } else {
            callback();
        }
    },

    // When all is done
    function(err) {
        if (counter % 1000 != 0) {
            bulk.execute(function(err, result) {
                console.log("More inserts.");
            }); 
        }           
        console.log("All done now!");
    }
);



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Какъв е новият начин за настройка на DateTimeSerializationOptions.Defaults в mongodb c# драйвер?

  2. Как се сортират нулевите стойности в MongoDB индекс?

  3. MongoDb:добавете елемент към масива, ако не съществува

  4. mongodb:съхраняване на йерархична дървовидна структура?

  5. Компресиране на индексен префикс в MongoDB 3.0 WiredTiger