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

Performa Pengurangan Peta di MongoDb 2.2, 2.4, dan 2.6

Berikut adalah status fungsionalitas saat ini untuk Map/Reduce di MongoDB

1) Sebagian besar batasan kinerja untuk Map/Reduce masih ada di MongoDB versi 2.2. Mesin Peta/Kurangi masih mengharuskan setiap catatan dikonversi dari BSON ke JSON, perhitungan sebenarnya dilakukan menggunakan mesin JavaScript tertanam (yang lambat), dan masih ada satu kunci JavaScript global, yang hanya mengizinkan satu utas JavaScript untuk dijalankan pada satu waktu.

Ada beberapa peningkatan bertahap pada Map/Reduce untuk sharded cluster. Yang paling menonjol, operasi Reduce terakhir sekarang didistribusikan ke beberapa shard, dan outputnya juga di-sharding secara paralel.

Saya tidak akan merekomendasikan Map/Reduce untuk agregasi real-time di MongoDB versi 2.2

2) Dimulai dengan MongoDB 2.2, sekarang ada Kerangka Agregasi baru. Ini adalah implementasi baru dari operasi agregasi, yang ditulis dalam C++, dan terintegrasi erat ke dalam kerangka kerja MongoDB.

Sebagian besar pekerjaan Peta/Kurangi dapat ditulis ulang untuk menggunakan Kerangka Agregasi. Mereka biasanya berjalan lebih cepat (peningkatan kecepatan 20x vs. Peta/Pengurangan umum di versi 2.2), mereka memanfaatkan sepenuhnya mesin kueri yang ada, dan Anda dapat menjalankan beberapa perintah Agregasi secara paralel.

Jika Anda memiliki persyaratan agregasi waktu nyata, tempat pertama untuk memulai adalah dengan Kerangka Agregasi. Untuk informasi lebih lanjut tentang kerangka kerja agregasi, lihat tautan berikut:

  • http://www.10gen.com/presentations/mongonyc-2012/new-aggregation-framework
  • http://docs.mongodb.org/manual/reference/aggregation/

3) Ada peningkatan signifikan dalam Map/Reduce di MongoDB versi 2.4. Mesin JavaScript SpiderMonkey telah digantikan oleh mesin JavaScript V8, dan tidak ada lagi kunci JavaScript global, yang berarti bahwa beberapa utas Peta/Kurangi dapat berjalan secara bersamaan.

Mesin Peta/Kurangi masih jauh lebih lambat daripada kerangka kerja agregasi, karena dua alasan utama:

  • Mesin JavaScript diinterpretasikan, sedangkan Agregasi Frameworkruns mengkompilasi kode C++

  • Mesin JavaScript masih mengharuskan setiap dokumen yang diperiksa dikonversi dari BSON ke JSON; jika Anda menyimpan output dalam koleksi, kumpulan hasil kemudian harus dikonversi dari JSON kembali ke BSON

Tidak ada perubahan signifikan di Map/Reduce antara 2.4 dan 2.6.

Saya masih tidak menyarankan penggunaan Peta/Pengurangan untuk agregasi waktu nyata di MongoDB versi 2.4 atau 2.6.

4) Jika Anda benar-benar membutuhkan Map/Reduce, Anda juga dapat melihat Hadoop Adapter. Ada informasi lebih lanjut di sini:

  • http://www.10gen.com/presentations/webinar/mongodb-hadoop-taming-elephant-room
  • http://api.mongodb.org/hadoop/MongoDB%2BHadoop+Connector.html
  • http://www.mongodb.org/display/DOCS/Hadoop+Quick+Start



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Menyiapkan koneksi tunggal dengan node.js dan mongo

  2. Mencoba mendapatkan daftar koleksi dari luwak

  3. Agregasi MongoDB dengan $lookup hanya menyertakan (atau memproyeksikan) beberapa bidang untuk dikembalikan dari kueri

  4. .NET praktik terbaik untuk koneksi MongoDB?

  5. Grup Pengemudi MongoDB .NET Berdasarkan Rentang Waktu