MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Bagaimana saya bisa meningkatkan kinerja massal MongoDB?

Kirim operasi penyisipan massal dalam batch karena ini menghasilkan lebih sedikit lalu lintas ke server dan dengan demikian melakukan transaksi kawat yang efisien dengan tidak mengirimkan semuanya dalam pernyataan individual, melainkan memecah menjadi potongan yang dapat dikelola untuk komitmen server. Ada juga lebih sedikit waktu menunggu respons dalam panggilan balik dengan pendekatan ini.

Pendekatan yang jauh lebih baik dengan ini adalah menggunakan async modul sehingga bahkan mengulang daftar input adalah operasi non-pemblokiran. Memilih ukuran batch dapat bervariasi, tetapi memilih operasi penyisipan batch per 1000 entri akan membuatnya aman untuk tetap berada di bawah batas keras BSON 16MB, karena keseluruhan "permintaan" sama dengan satu dokumen BSON.

Berikut ini menunjukkan penggunaan async modul sementara untuk beralih melalui array dan berulang kali memanggil fungsi iterator, sementara tes mengembalikan nilai true. Memanggil callback saat dihentikan, atau saat terjadi kesalahan.

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. Ubah kueri MongoDB menjadi sintaks Spring MongoDB

  2. mongodb mongoTemplate mendapatkan bidang yang berbeda dengan beberapa kriteria

  3. $lookup array bersarang di mongodb

  4. Skema Tanggal Luwak

  5. Menemukan perbedaan dari koleksi di mongodb