Jika MongoDB memiliki kelemahan, itu adalah fakta bahwa MongoDB hanya mendukung penulisan single-threaded dan single-threaded-map-reduces.
Seperti biasa, ada trade-off di sini. Penulisan utas tunggal adalah cara paling sederhana untuk menghindari masalah penguncian dan meminimalkan overhead. Dengan cara yang sama, pengurangan peta multi-utas adalah cara yang bagus untuk mengunci data Anda. Jadi pengurangan peta satu utas pada sistem produksi mungkin lebih mudah dan lebih aman.
Namun, Anda bukan tanpa alat di sini. MongoDB akan menyediakan satu utas tulis untuk setiap instance. Jadi jika Anda shard MongoDB, maka Anda akan mendapatkan satu utas tulis untuk setiap shard.
Jika Anda ingin beberapa indeks pada 2 miliar baris, Anda tetap ingin melihat sharding. Beberapa matematika cepat di sini:MongoID adalah 12 byte. Indeks pada MongoID akan menjadi 2B * 12 byte =22GB+. Jika sekarang Anda ingin menambahkan dua indeks lagi (bahkan hanya dua bilangan bulat 4-byte), kita berbicara tentang 7,5 GB untuk masing-masing indeks.
Jadi pada baris 2B, Anda berbicara tentang memiliki indeks lebih dari 37GB (minimum ). Pada sebagian besar server 8-core, itu berarti Anda bahkan tidak akan dapat menyimpan indeks Anda di memori, apalagi data apa pun.
Jadi jika Anda menginginkan kinerja yang serius di sini, Anda harus mulai melihat sharding. Hanya berdasarkan angka umum. FWIW, MySQL tidak akan lagi mahir menangani dokumen 2B. Dengan data sebanyak itu, Anda benar-benar akan menginginkan beberapa server untuk mengikuti beban.