Sepertinya database sharding sangat bagus jika saya memiliki koleksi besar. Bagaimana jika saya memiliki banyak koleksi berukuran cukup? Katakanlah untuk 1 koleksi 100 000 000 dokumen (komentar yang tidak terlalu besar) sharding efektif. Apakah ini juga efektif untuk 10.000 koleksi dengan masing-masing 10.000 dokumen?
(Saya pikir pertanyaan ini masih berlaku untuk database berorientasi tabel jika Anda mengganti koleksi dengan tabel dan dokumen dengan baris. Jika mungkin, saya ingin mengetahui jawaban teoretis serta jawaban dalam skenario MongoDB tertentu, jika berbeda dari teori menjawab.)
foo
danbar
dengan struktur data yang sama, Anda dapat menggabungkan mereka ke dalambaz
koleksi dan menimpa_ids
(dalam kode):{ _id: "foo123" }, { _id: "bar123" }
. Anda memiliki indeks yang lebih besar, tetapi Anda hanya memiliki satu indeks yang menyertakan jenisnya. Bukan keharusan, hanya "makanan untuk dipikirkan".Karya pecahan MongoDB dengan memecah koleksi menjadi 'bongkahan' yang lebih kecil dan mendistribusikannya secara merata di sejumlah mesin. Ukuran chunk default, yang umumnya paling efisien, adalah 200MB. Jadi, kecuali koleksi tumbuh lebih besar dari 200MB, ia tidak akan terpecah menjadi beberapa bagian, dan karena itu tidak akan memenuhi syarat untuk sharding, jadi tidak akan ada manfaatnya.
Dalam kasus umum, membagikan data melalui beberapa mesin adalah cara yang sangat efektif untuk menskala membaca, menulis, dan query. Anda mendapatkan manfaat dari banyak CPU, hard disk, dan penyimpanan memori, bekerja secara paralel untuk membaca, menulis, dan memproses data. Memilah memori sangat penting untuk MongoDB, di mana kinerja tinggi sangat sensitif terhadap pemasangan data dalam memori.
sumber