Ada batasan teoretis, seperti yang akan saya tunjukkan di bawah, tetapi bahkan batas bawahnya cantik tinggi. Tidak mudah menghitung batas dengan benar, tetapi urutan besarnya harus cukup.
mmapv1
Batas sebenarnya tergantung pada beberapa hal seperti panjang nama pecahan dan sejenisnya (yang diringkas jika Anda memiliki beberapa ratus ribu dari mereka), tetapi ini adalah perhitungan kasar dengan data kehidupan nyata.
Setiap pecahan memerlukan beberapa ruang di config db, yang dibatasi seperti basis data lain hingga 32 TB pada satu mesin atau dalam set replika. Di server yang saya kelola, ukuran rata-rata entri di config.shards
adalah 112 byte. Selanjutnya, setiap potongan membutuhkan sekitar 250 byte informasi metadata. Mari kita asumsikan ukuran potongan optimal mendekati 64MB.
Kami dapat memiliki maksimal 500.000 potongan per server. 500.000 * 250byte sama dengan 125MB untuk informasi potongan per pecahan. Jadi, per shard, kami memiliki 125.000112 MB per shard jika kami memaksimalkan semuanya. Membagi 32 TB dengan nilai tersebut menunjukkan bahwa kami dapat memiliki maksimum sedikit di bawah 256.000 shard dalam sebuah cluster.
Setiap pecahan pada gilirannya dapat menyimpan data senilai 32TB. 256.000 * 32 TB adalah 8.19200 exabytes atau 8.192.000 terabyte. Itu akan menjadi batas untuk contoh kita.
Katakanlah itu 8 exabytes. Sampai sekarang, ini dapat dengan mudah diterjemahkan menjadi "Cukup untuk semua tujuan praktis". Untuk memberi Anda kesan:Semua data yang disimpan oleh Library of Congress (bisa dibilang salah satu perpustakaan terbesar di dunia dalam hal ukuran koleksi) memiliki perkiraan ukuran data sekitar 20TB termasuk materi audio, video, dan digital. Anda dapat memasukkannya ke dalam klaster MongoDB teoretis kami sekitar 400.000 kali. Perhatikan bahwa ini adalah batas bawah dari ukuran maksimum, menggunakan nilai konservatif.
WiredTiger
Sekarang bagian baiknya:Mesin penyimpanan WiredTiger tidak memiliki batasan ini:Ukuran basis data tidak terbatas (karena tidak ada batasan berapa banyak file data yang dapat digunakan), jadi kita dapat memiliki jumlah pecahan yang tidak terbatas. Bahkan ketika pecahan tersebut berjalan di mmapv1 dan hanya server konfigurasi kami di WT, ukuran a menjadi hampir tidak terbatas – batasan hingga 16,8 juta TB RAM pada sistem 64 bit dapat menyebabkan masalah di suatu tempat dan menyebabkan indeks config.shard
koleksi untuk ditukar ke disk, menghentikan sistem. Saya hanya bisa menebak, karena kalkulator saya menolak untuk bekerja dengan angka di area itu (dan saya terlalu malas untuk melakukannya dengan tangan), tetapi saya memperkirakan batas di sini di area dua digit yottabyte (dan ruang yang dibutuhkan untuk menyimpannya di suatu tempat seukuran Texas).
Kesimpulan
Jangan khawatir tentang ukuran data maksimum di lingkungan sharding. Tidak peduli apa, itu cukup jauh, bahkan dengan pendekatan yang paling konservatif. Gunakan sharding, dan Anda selesai. Btw:bahkan 32TB adalah data yang sangat banyak:Sebagian besar cluster yang saya tahu menyimpan lebih sedikit data dan shard karena penggunaan IOPS dan RAM melebihi kapasitas node tunggal.