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

Koleksi sharding MongoDB tidak menyeimbangkan kembali

Di MongoDB ketika Anda pergi ke sistem sharded dan Anda tidak melihat penyeimbangan apa pun, itu bisa menjadi salah satu dari beberapa hal.

  1. Anda mungkin tidak memiliki cukup data untuk memicu penyeimbangan. Itu jelas bukan situasi Anda, tetapi beberapa orang mungkin tidak menyadari bahwa dengan ukuran chunk default 64MB, mungkin perlu beberapa saat untuk memasukkan data sebelum cukup untuk membagi dan menyeimbangkan sebagian ke potongan lain.

  2. Penyeimbang mungkin belum berjalan - karena koleksi Anda yang lain menjadi seimbang yang tidak mungkin terjadi dalam kasus Anda kecuali jika koleksi ini dipecah terakhir setelah penyeimbang dihentikan karena alasan tertentu.

  3. Potongan dalam koleksi Anda tidak dapat dipindahkan. Ini bisa terjadi ketika kunci pecahan tidak cukup granular untuk membagi data menjadi potongan yang cukup kecil. Ternyata ini adalah kasus Anda karena kunci pecahan Anda ternyata tidak cukup granular untuk koleksi besar ini - Anda memiliki 105 potongan (yang mungkin sesuai dengan jumlah nilai job_id unik) dan lebih dari 30GB data. Jika bongkahan terlalu besar dan penyeimbang tidak dapat memindahkannya, ia akan menandainya sebagai "jumbo" (sehingga tidak akan memutar rodanya saat mencoba memindahkannya).

Bagaimana memulihkan dari pilihan kunci pecahan yang buruk? Biasanya sangat sulit untuk mengubah kunci shard - karena kunci shard tidak dapat diubah, Anda harus melakukan yang setara dengan migrasi data lengkap untuk memasukkannya ke dalam koleksi dengan kunci shard lain. Namun, dalam kasus Anda, semua koleksi masih dalam satu pecahan, jadi seharusnya relatif mudah untuk "membuka pecahan" koleksi dan menyusun ulang dengan kunci pecahan baru. Karena jumlah job_id relatif kecil, saya akan merekomendasikan menggunakan indeks biasa untuk melakukan shard pada job_id,customer_code karena Anda mungkin menanyakan hal itu dan saya rasa itu selalu disetel pada waktu pembuatan dokumen.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Cara melintasi dokumen bersarang secara rekursif di MongoDB

  2. Cara membaca koleksi yang bergantung pada koleksi lain di Meteor

  3. Bagaimana menangani pembagian dengan nol dalam kerangka agregasi MongoDB

  4. MongoDB - Kesalahan:perintah getMore gagal:Kursor tidak ditemukan

  5. Menggunakan operator posisi MongoDB $ dalam kueri dokumen yang sangat bersarang