Topik ini menjelaskan versi MongoDB dan mesin penyimpanan yang didukung oleh ApsaraDB for MongoDB serta hubungan di antara keduanya. Informasi ini dapat membantu Anda memilih instans yang paling sesuai dengan kebutuhan Anda.
Versi yang didukung
ApsaraDB for MongoDB mendukung versi berikut:
Anda dapat melakukan peningkatan versi database secara manual selama instans sedang berjalan. Namun, Anda tidak dapat menurunkan spesifikasi versi database setelah peningkatan. Untuk informasi selengkapnya, lihat Peningkatan versi utama instans.
MongoDB 3.2
MongoDB 3.2 telah tidak didukung lagi. Untuk informasi selengkapnya, lihat [Pemberitahuan] ApsaraDB for MongoDB menghentikan dukungan untuk versi 3.2 dan meluncurkan versi 4.2 pada 4 Februari.
Mesin penyimpanan
Mesin penyimpanan | Skenario | Deskripsi |
WiredTiger | Mesin penyimpanan default. Cocok untuk sebagian besar skenario bisnis. | Mengorganisasi data berdasarkan struktur Pohon-B (B-tree). Dibandingkan dengan mesin penyimpanan MMAPv1 versi sebelumnya dari MongoDB, WiredTiger secara signifikan meningkatkan performa. Mesin ini juga mendukung kompresi data, yang menurunkan biaya penyimpanan. |
Hubungan antara versi MongoDB dan mesin penyimpanan
Mesin penyimpanan | Versi 4.4 atau lebih baru | Versi 4.2 | Versi 4.0 | Versi 3.4 (Tidak Didukung Lagi) |
WiredTiger |
|
|
|
|
MongoDB 8.0
MongoDB 8.0 memperkenalkan fitur-fitur baru seperti TCMalloc yang ditingkatkan, performa replikasi yang dioptimalkan, dan performa resharding yang dioptimalkan. Versi ini juga meningkatkan dan mengoptimalkan sharding, logging, agregasi, dan keamanan.
TCMalloc yang ditingkatkan
TCMalloc yang ditingkatkan menggunakan cache masing-masing CPU alih-alih cache masing-masing thread untuk mengurangi fragmentasi memori dan membuat database lebih adaptif terhadap beban kerja bertekanan tinggi. TCMalloc yang ditingkatkan juga membuat thread latar belakang yang mencoba melepaskan memori kembali ke sistem operasi setiap detik.
Performa replikasi
Mulai dari MongoDB 8.0, ketika
writeConcerndiatur kemajority, MongoDB mengembalikan oplog setelah ditulis ke sebagian besar anggota replica set, bukan menunggu perubahan diterapkan terlebih dahulu. Hal ini meningkatkan performa penulisan dalam modemajority.Node secondary menulis dan menerapkan setiap batch oplog secara paralel. Saat thread Writer membaca entri oplog baru dari node primary dan menuliskannya ke oplog lokal, thread Applier menerapkan perubahan tersebut ke database lokal secara asinkron. Hal ini meningkatkan throughput replikasi node secondary.
Performa resharding
MongoDB 8.0 mendukung opsi `forceRedistribution`, yang memungkinkan Anda melakukan resharding koleksi menggunakan kunci sharding yang sama dan mendistribusikan ulang data ke shard baru. Proses ini jauh lebih cepat daripada migrasi chunk berdasarkan rentang. Anda juga dapat menggunakan opsi ini bersama opsi `zones` untuk memigrasikan data ke wilayah tertentu.
Sharding
Sharding hash membuat 1 chunk untuk setiap shard secara default. Sebelum MongoDB 8.0, 2 chunk dibuat secara default.
Perintah
dbhashdapat dijalankan pada shard.Perintah
findAndModifydandeleteOnedapat menggunakan kunci shard parsial sebagai predikat kueri.Saat menggunakan perintah
updateOnedenganupsertdiatur ketruepada koleksi sharded, Anda dapat mengecualikan semua kunci shard dalam predikat kueri.Anda dapat menggunakan perintah
unshardCollectionatau metodesh.unshardCollection()untuk membatalkan operasi sharding pada koleksi yang sudah ada. Hal ini memindahkan semua dokumen dalam koleksi ke shard tertentu atau shard dengan jumlah data paling sedikit.Anda dapat menggunakan perintah
moveCollectionuntuk memindahkan koleksi non-sharded ke shard tertentu, tanpa dibatasi oleh shard utama. Namun, koleksi deret waktu dan koleksi terenkripsi yang dapat dikueri tidak dapat dipindahkan, dan blokir penulisan koleksi berlangsung sekitar 2 detik.Perintah database dan fungsi pembantu mongosh berikut didukung.
Perintah
Fungsi pembantu mongosh
Deskripsi
moveCollection
sh.moveCollection()
Memindahkan koleksi non-sharded ke shard tertentu.
unshardCollection
sh.unshardCollection()
Membatalkan operasi sharding pada koleksi sharded yang sudah ada dan memindahkan data koleksi ke shard tertentu.
abortMoveCollection
sh.abortMoveCollection()
Menghentikan operasi
moveCollectionyang sedang berlangsung.abortUnshardCollection
sh.abortUnshardCollection()
Menghentikan operasi
unshardCollectionyang sedang berlangsung.None
sh.shardAndDistributeCollection()
Menjadikan koleksi sebagai sharded dan langsung mendistribusikan ulang data dengan kunci shard yang sudah ada.
Mempercepat migrasi data. Fungsi pembantu ini memberikan hasil yang sama seperti
shardCollectiondiikuti denganreshardCollection.
Logging
Field
workingMillisditambahkan ke log kueri lambat untuk menunjukkan waktu yang dibutuhkan untuk operasi aktual.Berbeda dengan opsi
durationMillisyang menunjukkan latensi total operasi,workingMillistidak mencakup waktu yang dikonsumsi oleh faktor seperti tunggu lock atau throttling traffic.Agregasi
Konversi binData
Anda dapat menggunakan operator $convert untuk melakukan konversi berikut:
Mengonversi nilai string ke nilai binData.
Mengonversi nilai binData ke nilai string.
Selain itu, ekspresi $toUUID menyediakan sintaks yang disederhanakan untuk mengonversi nilai string ke nilai UUID.
$queryStats
Tahap $queryStats mengembalikan statistik untuk kueri yang direkam dan mengoptimalkan pelacakan serta pelaporan metrik dalam change stream.
Keamanan
Enkripsi yang dapat dikueri
MongoDB 8.0 mendukung kueri rentang pada field terenkripsi menggunakan
$lt,$lte,$gt, dan$gte.Antrian Ingress
MongoDB 8.0 memperkenalkan antrian baru untuk kontrol akses masuk (
ingressAdmissionControllerTicketPoolSize), yang menunjukkan bahwa operasi yang dikirim ke database dari jaringan memasuki antrian masuk.Antrian masuk tidak dibatasi secara default. Anda dapat menyesuaikan nilai maksimum antrian untuk mengizinkan permintaan masuk ke dalam antrian.
Optimasi lainnya
Query Shape baru diperkenalkan. Query shape sebelumnya disebut plan cache query shape. Pengoptimal kueri menggunakan pengaturan kueri sebagai informasi input tambahan, yang memengaruhi pemilihan rencana kueri akhir.
setQuerySettings mencakup pengaturan kueri:
Menentukan pemilihan indeks. MongoDB 8.0 tidak mengizinkan Anda menggunakan
planCacheSetFilteruntuk mengaturindex filter.Menentukan pengaturan throttling traffic. Anda dapat menggunakan opsi
rejectuntuk menolak Query Shape tertentu.
removeQuerySettingsdigunakan untuk menghapus pengaturan kueri.$querySettingsdigunakan untuk melihat pengaturan kueri.
Perintah
explain()mencakup waktu yang dihabiskan untuk optimasi rencana kueri dalamqueryPlanner.optimizationTimeMillis, diukur dalam milidetik.Parameter baru
defaultMaxTimeMSmenentukan batas waktu default untuk menyelesaikan satu operasi baca, diukur dalam milidetik.Operasi yang berlaku:
findaggregate(tidak termasuk tahap$mergedan$out)countdistinctdbHash
Jika klien menentukan
maxTimeMS,defaultMaxTimeMStidak berlaku lagi untuk operasi ini.
Perintah baru
bulkWritedapat melakukan beberapa operasi insert, update, dan delete pada beberapa koleksi dalam satu permintaan.updateOnemendukung pengurutan dengan opsisort.Indeks TTL dapat dibuat pada koleksi capped.
Insert massal non-transaksional tidak lagi menghasilkan oplog terpisah tetapi diproses secara batch dalam satu oplog. Semua dokumen yang dimasukkan memiliki
clusterTimeyang sama dalam event change stream. Hal ini meningkatkan performa insert massal dan menghindari latensi replikasi yang mungkin disebabkan oleh pemutaran ulang beberapa oplog dari node secondary.Operasi DDL konkuren dapat dilakukan pada koleksi berbeda dalam database yang sama.
Penambahan atau penghapusan shard diblokir saat operasi DDL dilakukan pada kluster sharded, seperti
reshardCollectionyang memodifikasi koleksi. Anda hanya dapat melakukan tindakan ini setelah operasi DDL selesai.Pembuatan indeks ditingkatkan dengan pelaporan error yang lebih cepat dan kemampuan pemulihan bencana yang lebih kuat.
Aksi
MongoDB 8.0
Sebelum MongoDB 8.0
Situasi untuk menghentikan pembuatan indeks setelah mendeteksi error
Error indeks yang terdeteksi selama fase pemindaian koleksi (kecuali error kunci duplikat) dikembalikan segera, lalu pembuatan indeks dihentikan.
MongoDB 8.0 membantu Anda melakukan diagnostik error indeks dengan cepat. Misalnya, jika ditemukan format nilai indeks yang tidak kompatibel, error ini dikembalikan segera.
Sebelum MongoDB 8.0, error indeks yang terdeteksi selama fase pemindaian koleksi dikembalikan pada fase commit, yang terjadi di akhir pembuatan indeks.
Dibandingkan dengan MongoDB 8.0, versi sebelumnya mungkin memerlukan waktu lebih lama untuk mengembalikan error pembuatan indeks karena error dikembalikan di akhir proses pada fase commit.
Deployment tangguh
Ketangguhan deployment ditingkatkan. Jika terjadi error pembuatan indeks, anggota secondary dapat meminta anggota primary untuk menghentikan pembuatan indeks, dan tidak crash.
Permintaan untuk menghentikan pembuatan indeks tidak selalu memungkinkan. Jika anggota telah memberikan suara untuk melakukan commit indeks, anggota secondary tidak dapat meminta penghentian pembuatan indeks, dan akan crash. Situasi ini mirip dengan MongoDB 7.0 dan versi sebelumnya.
Error pembuatan indeks dapat menyebabkan anggota secondary crash.
Disk space
Manajemen disk space untuk pembuatan indeks dioptimalkan. Jika ruang disk yang tersedia kurang dari nilai minimum yang ditentukan dalam parameter
indexBuildMinAvailableDiskSpaceMB, pembuatan indeks dapat dihentikan secara otomatis.Jika anggota telah memberikan suara untuk melakukan commit indeks, pembuatan indeks tidak dihentikan.
Pembuatan indeks juga dihentikan ketika ruang disk yang tersedia tidak mencukupi.
MongoDB 7.0
MongoDB 7.0 memperkenalkan fitur-fitur baru seperti Enkripsi yang Dapat Dikueri, verifikasi konsistensi metadata sharded, kueri sampel dan analisis kunci sharding (analyzeShardKey), serta AutoMerger. Versi ini juga meningkatkan dan mengoptimalkan sharding, koleksi deret waktu, agregasi, dan keamanan.
Enkripsi yang dapat dikueri
Pada MongoDB 6.0, fitur enkripsi yang dapat dikueri berada dalam status pratinjau. Pada MongoDB 7.0, fitur ini tersedia secara umum. Untuk informasi selengkapnya, lihat Enkripsi yang Dapat Dikueri.
Verifikasi konsistensi metadata sharded
MongoDB 7.0 menambahkan perintah checkMetadataConsistency untuk memeriksa inkonsistensi metadata di berbagai shard. Anda dapat menambahkan pemeriksaan ini ke operasi dan pemeliharaan rutin (O&M) untuk mengidentifikasi potensi risiko inkonsistensi sedini mungkin. Untuk informasi selengkapnya, lihat checkMetadataConsistency.
Kueri sampel dan analisis kunci sharding
Anda dapat menganalisis apakah kunci sharding koleksi sesuai berdasarkan hasil kueri sampel. Hal ini membantu Anda merancang skema dan kunci sharding dengan lebih baik serta menggunakan arsitektur sharding secara lebih efektif. Untuk informasi selengkapnya, lihat analyzeShardKey dan configureQueryAnalyzer.
AutoMerger
MongoDB 7.0 memperkenalkan fitur baru bernama AutoMerger untuk balancer. Ketika distribusi data atau indeks tidak merata, terdapat shard berlebihan, atau data dimigrasikan, AutoMerger menggabungkan chunk untuk menyeimbangkan distribusi data dan meningkatkan performa database. Secara default, AutoMerger diaktifkan di MongoDB 7.0. Anda juga dapat mengonfigurasi jendela aktif untuk balancer agar AutoMerger diaktifkan.
Sharding
Parameter
rangeDeleterHighPrioritydapat digunakan untuk menentukan apakah penghapusan dokumen yatim memiliki prioritas tinggi. Secara default, parameter ini diatur ke false, yang berarti MongoDB memprioritaskan operasi hapus terkait bisnis dibandingkan penghapusan dokumen yatim.MongoDB 7.0 menghapus dokumen
operationsBlockedByRefreshyang berisi statistik tentang operasi yang diblokir oleh refresh cache katalog. Hal ini karena counter operationsBlockedByRefresh meningkat pada node mongos untuk setiap operasi yang menggunakan informasi routing koleksi, bahkan jika operasi tersebut tidak diblokir oleh aktivitas refresh katalog.Metrik pemantauan terkait resharding ditambahkan.
Opsi
maxSizetidak lagi didukung untuk perintah addShard.Saat ukuran chunk koleksi
config.settingsdisesuaikan, pemeriksaan validitas dilakukan untuk memastikan nilai baru berada dalam rentang wajar antara 1 hingga 1.024.Mulai dari MongoDB 6.0.3, beberapa penyesuaian dilakukan pada kebijakan balancer.
Balancer mendistribusikan data secara merata berdasarkan perbedaan volume data, bukan jumlah chunk antar shard.
Pemartisian dilakukan berdasarkan rentang, bukan berdasarkan chunk.
Pemisahan otomatis hanya berlaku saat data dimigrasikan antar shard.
Koleksi deret waktu
Batasan yang diberlakukan pada versi sebelumnya terkait penggunaan perintah DELETE untuk koleksi deret waktu dihapus. Satu-satunya batasan pada perintah DELETE saat ini adalah perintah tersebut tidak dapat digunakan dalam transaksi multi-dokumen.
Koleksi deret waktu didukung untuk perintah COMPACT.
Agregasi
MongoDB 7.0 menambahkan operator berikut untuk mendukung perhitungan bitwise dan persentil:
Operator
Deskripsi
$bitAndMengembalikan hasil operasi AND bitwise pada nilai numerik tipe INT atau LONG.
$bitNotMengembalikan hasil operasi invers bitwise pada nilai numerik tipe INT atau LONG.
$bitOrMengembalikan hasil operasi OR bitwise pada nilai numerik tipe INT atau LONG.
$bitXorMengembalikan hasil operasi XOR bitwise pada nilai numerik tipe INT atau LONG.
$medianMengembalikan median perkiraan, yang setara dengan persentil ke-50.
$percentileMengembalikan persentil yang ditentukan.
Keamanan
Protokol Interoperabilitas Manajemen Kunci (KMIP) V1.0 dan V1.1 didukung.
OpenSSL 3.0 dan OpenSSL FIPS didukung.
Optimasi lainnya
Field seperti
catalogCacheIndexLookupDurationMillisditambahkan ke log kueri lambat. Untuk informasi selengkapnya, lihat Logging Operasi Lambat.Konkurensi transaksi mesin penyimpanan dapat disesuaikan secara dinamis. Konkurensi default sebelum penyesuaian adalah 128. Mulai dari MongoDB 7.0, konkurensi transaksi disesuaikan secara otomatis. Untuk informasi selengkapnya, lihat Transaksi Mesin Penyimpanan Konkuren (Tiket Baca dan Tulis).
Field terkait pengambilan sampel kueri ditambahkan ke perintah currentOp. Untuk informasi selengkapnya, lihat Metrik currentOp.
Indeks wildcard gabungan didukung. Untuk informasi selengkapnya, lihat Indeks Wildcard Gabungan.
Operator
$changeStreamSplitLargeEventditambahkan untuk memungkinkan Anda membagi event perubahan besar yang melebihi ukuran 16 MB. Untuk informasi selengkapnya, lihat Event Change Stream Besar.Performa mesin eksekusi kueri berbasis slot dioptimalkan.
Metrik terkait migrasi chunk ditambahkan. Untuk informasi selengkapnya, lihat Statistik Sharding Baru untuk Migrasi Chunk.
Variabel sistem
USER_ROLESdapat digunakan untuk mendapatkan role pengguna saat ini.Parameter global terkait
analyzeShardKey,balancer, danqueryAnalyzersditambahkan.Lebih banyak field ditambahkan ke hasil yang dikembalikan untuk serverStatus. Untuk informasi selengkapnya, lihat Perubahan Output serverStatus.
MongoDB 6.0
MongoDB 6.0 memperkenalkan fitur seperti Enkripsi yang Dapat Dikueri dan Sinkronisasi Kluster-ke-Kluster. MongoDB 6.0 juga mengoptimalkan koleksi deret waktu, change stream, agregasi, kueri, elastisitas, dan keamanan.
Enkripsi yang dapat dikueri
Enkripsi yang Dapat Dikueri memungkinkan Anda mengenkripsi data sensitif dari sisi klien, menyimpan data tersebut sebagai data terenkripsi yang sepenuhnya teracak di server database, dan menjalankan kueri ekspresif pada data terenkripsi tersebut.
Enkripsi yang dapat dikueri hanya memungkinkan klien melihat teks biasa dari data sensitif. Saat kueri mencapai server, kueri tersebut menyertakan kunci enkripsi yang diperoleh dari Key Management Service (KMS). Server kemudian memproses kueri pada ciphertext dan mengembalikan respons terenkripsi. Akhirnya, klien mendekripsi respons menggunakan kunci tersebut dan menampilkannya dalam bentuk teks biasa.
Sinkronisasi Kluster-ke-Kluster
Sinkronisasi Kluster-ke-Kluster memperkenalkan tool baru mongosync, yang mendukung sinkronisasi data kontinu dan unidireksional antara dua instans MongoDB di lingkungan apa pun, termasuk hybrid, Atlas, on-premises, dan edge. Anda juga dapat mengontrol dan memantau seluruh proses sinkronisasi secara real-time serta memulai, menghentikan, melanjutkan, atau bahkan membalikkan arah sinkronisasi sesuai kebutuhan.
Koleksi deret waktu
MongoDB 6.0 meningkatkan koleksi deret waktu dalam hal pengindeksan, kueri, dan pengurutan.
Memperkenalkan indeks sekunder dan indeks gabungan untuk meningkatkan performa baca.
Memperkenalkan Geo-Indexing untuk data spatio-temporal. Hal ini menambahkan informasi geografis ke data deret waktu, yang membantu analisis dalam skenario yang melibatkan jarak dan lokasi.
Contoh skenario termasuk melacak perubahan suhu kendaraan transportasi rantai dingin di musim panas dan memantau konsumsi bahan bakar kapal kargo pada rute tertentu.
Mengoptimalkan kueri
last pointpada data deret waktu. Anda tidak perlu lagi memindai seluruh koleksi untuk mengkueri titik data terakhir.Mengoptimalkan pengurutan data deret waktu. Operasi pengurutan diselesaikan lebih efisien menggunakan indeks clustered dan sekunder pada field waktu dan metadata.
Change stream
Rilis ini memperkenalkan fitur dan optimasi baru berikut:
Mendukung melihat pre-image perubahan.
CatatanVersi sebelum MongoDB 6.0 hanya mendukung melihat post-image. Mulai dari MongoDB 6.0, Anda dapat melihat pre-image dan post-image. Untuk informasi selengkapnya tentang pre-image dan post-image, lihat Change Stream dengan Pre- dan Post-Image Dokumen.
Mendukung pernyataan DDL seperti
create,createIndexes,modify, danshardCollection. Untuk informasi selengkapnya, lihat Event Perubahan.Menambahkan field
wallTimeke Event Perubahan. Timestamp mendukung beberapa operator konversi dan tampilan, termasuk$toDate,$tsSeconds, dantsIncrement, untuk memfasilitasi konsumsi bisnis.
Agregasi
Rilis ini mencakup fitur dan optimasi baru berikut:
Instansi kluster sharded mendukung
$lookupdan$graphLookup.Meningkatkan dukungan untuk JOINS di
$lookup.Meningkatkan dukungan untuk traversal graf di
$graphLookup.Meningkatkan performa
$lookup, dengan peningkatan hingga seratus kali lipat dalam beberapa skenario.
CatatanUntuk informasi selengkapnya tentang
$lookupdan$graphLookup, lihat $lookup (agregasi) dan $graphLookup (agregasi).Kueri
MongoDB 6.0 menambahkan operator seperti
$maxN,$topN,$minN,$bottomN,$lastN, dan$sortArray. Operator-operator ini memungkinkan Anda memindahkan lebih banyak komputasi dari lapisan bisnis ke database, sehingga lapisan bisnis menjadi lebih ringan.CatatanUntuk informasi selengkapnya tentang operator-operator tersebut, lihat Operator Pipeline Agregasi.
Elastisitas
Fitur dan optimasi baru berikut kini tersedia:
Ukuran default chunk data ditingkatkan dari 64 MB menjadi 128 MB. Hal ini mengurangi frekuensi migrasi data dan menurunkan overhead lapisan jaringan dan routing.
Mendukung perintah
configureCollectionBalancing. Perintah ini mendukung fitur berikut:Anda dapat mengatur ukuran chunk berbeda untuk tabel sharded yang berbeda.
Contoh: Untuk tabel sharded yang sangat besar, Anda dapat mengatur ukuran chunk menjadi 256 MB. Untuk tabel sharded yang relatif kecil di mana Anda menginginkan distribusi yang lebih merata di seluruh shard, Anda dapat mengatur ukuran chunk menjadi 64 MB atau 32 MB.
Anda dapat melakukan defragmentasi koleksi secara aktif.
Dibandingkan dengan perintah
compact, perintahconfigureCollectionBalancingmenyediakan layanan defragmentasi yang lebih baik, yang secara efektif mengurangi penggunaan ruang disk.
CatatanUntuk informasi selengkapnya tentang perintah
configureCollectionBalancing, lihat configureCollectionBalancing.Keamanan
MongoDB 6.0 mengoptimalkan fitur Client-Side Field-Level Encryption (CSFLE). CSFLE kini mendukung penyedia manajemen kunci apa pun yang mematuhi Protokol Interoperabilitas Manajemen Kunci (KMIP). Artinya, selain manajemen kunci lokal berbasis KeyFile, MongoDB dapat berintegrasi dengan perangkat manajemen kunci pihak ketiga menggunakan KMIP, yang memberikan keamanan yang lebih tinggi kepada pengguna.
CatatanFitur CSFLE banyak digunakan dalam mengelola data sensitif, terutama dalam skenario migrasi data.
MongoDB 5.0
Siklus rilis baru memungkinkan pengiriman fitur baru kepada pengguna lebih cepat.
Platform deret waktu native
Dengan mendukung seluruh siklus hidup data deret waktu secara native—mulai dari ingestion, penyimpanan, kueri, hingga analisis real-time, visualisasi, dan pengarsipan online atau kedaluwarsa otomatis seiring penuaan data—membangun dan menjalankan aplikasi deret waktu menjadi lebih cepat dan hemat biaya. Dengan rilis MongoDB 5.0, MongoDB memperluas platform data aplikasi universalnya, yang memudahkan developer menangani data deret waktu dan memperluas skenario penggunaannya di bidang seperti Internet of Things (IoT), analitik keuangan, dan logistik.
Resharding langsung
Anda dapat mengubah kunci sharding koleksi sesuai kebutuhan saat bisnis berjalan dan data bertambah, tanpa downtime database atau migrasi kompleks dalam pengumpulan data. Untuk melakukannya, Anda dapat menjalankan perintah reshardCollection di MongoDB Shell, memilih database dan koleksi yang ingin direshard, lalu menentukan kunci sharding baru.
reshardCollection: "<database>.<collection>", key: <shardkey>Catatan<database>: Nama database yang akan direshard.
<collection>: Nama koleksi yang akan direshard.
<shardkey>: Nama kunci sharding.
Saat Anda memanggil perintah reshardCollection, MongoDB mengkloning koleksi yang ada, menerapkan semua entri oplog dari koleksi yang ada ke koleksi baru, lalu secara otomatis beralih ke koleksi baru setelah semua entri oplog diterapkan. Koleksi lama dihapus di latar belakang.
API Versi
API Versi memungkinkan MongoDB menambahkan fitur dan peningkatan baru ke database secara fleksibel di setiap rilis, dan versi baru kompatibel dengan versi sebelumnya. Saat Anda perlu mengubah API, Anda dapat menambahkan versi baru API dan menjalankannya secara bersamaan dengan API versi yang sudah ada di server yang sama. Seiring percepatan rilis MongoDB, API Versi memungkinkan Anda menggunakan fitur MongoDB terbaru lebih cepat dan mudah.
API Versi mendefinisikan serangkaian perintah dan parameter yang paling umum digunakan oleh aplikasi, yang tetap tidak berubah baik saat database berada dalam rilis utama tahunan maupun rilis cepat triwulanan. Dengan menguraikan keterkaitan antara siklus hidup aplikasi dan siklus hidup database, Anda dapat mengunci driver ke versi tertentu dari API MongoDB. Hal ini memungkinkan aplikasi Anda terus berjalan selama bertahun-tahun tanpa modifikasi kode, meskipun database ditingkatkan dan diperbaiki.
Write Concern Mayoritas Default
Mulai dari MongoDB 5.0, tingkat write concern default adalah `majority`. Operasi tulis dikomit dan respons sukses dikembalikan hanya ketika tulisan tersebut telah diterapkan ke node primary dan dipertahankan di log sebagian besar node replica. Hal ini memberikan jaminan keandalan data yang lebih kuat secara default.
Kueri snapshot berdurasi panjang
Kueri Snapshot Berdurasi Panjang meningkatkan keserbagunaan dan ketangguhan aplikasi. Anda dapat menggunakan fitur ini untuk menjalankan kueri dengan durasi default 5 menit (yang dapat disesuaikan) sambil mempertahankan isolasi snapshot yang konsisten dengan database transaksional real-time. Anda juga dapat menjalankan kueri snapshot pada node secondary, yang memungkinkan Anda menjalankan beban kerja berbeda dalam satu kluster dan menskalakannya di berbagai shard.
MongoDB Shell baru
Untuk memberikan pengalaman pengguna yang lebih baik, MongoDB 5.0 mendesain ulang MongoDB Shell (mongosh) dari awal. Shell ini menawarkan pengalaman command-line modern, fitur kegunaan yang ditingkatkan, dan lingkungan skrip yang kuat. MongoDB Shell baru adalah shell default untuk platform MongoDB. Shell ini memperkenalkan syntax highlighting, auto-completion cerdas, bantuan kontekstual, dan pesan error yang berguna untuk menciptakan pengalaman yang intuitif dan interaktif.
Penyesuaian rilis versi
Mulai dari MongoDB 5.0, rilis MongoDB dibagi menjadi Rilis Utama dan Rilis Cepat. Rilis Cepat disediakan sebagai versi pengembangan untuk diunduh dan diuji, tetapi tidak disarankan untuk lingkungan produksi.
MongoDB 4.4
Versi ini mengatasi masalah utama pengguna dari versi sebelumnya.
Indeks Tersembunyi
Anda dapat menyembunyikan indeks yang ada untuk memastikan indeks tersebut tidak digunakan dalam kueri selanjutnya. Hal ini memungkinkan Anda mengamati apakah penghapusan indeks tidak efisien tertentu menyebabkan fluktuasi performa bisnis. Jika tidak berdampak, Anda dapat menghapus indeks tidak efisien tersebut dengan aman.
Kunci Shard yang Dapat Disempurnakan
Anda dapat menambahkan satu atau beberapa field sufiks untuk meningkatkan distribusi dokumen yang ada pada chunk. Hal ini menghindari konsentrasi semua akses pada satu shard dan mendistribusikan beban server.
Kunci Shard Hashed Gabungan
Anda dapat menentukan satu field hashed dalam indeks gabungan, yang sangat menyederhanakan logika bisnis.
Pembacaan Hedged
Untuk instansi kluster sharded, permintaan baca dapat dikirim ke dua anggota replica set dari satu shard secara bersamaan. Hasil dari anggota yang merespons paling cepat dikembalikan ke klien, yang mengurangi latensi permintaan.
Replikasi Streaming
Entri oplog dari database primary dialirkan secara aktif ke database secondary. Dibandingkan dengan metode polling pada versi sebelumnya, hal ini menghemat hampir separuh waktu round-trip dan meningkatkan performa replikasi primary-secondary.
Pengindeksan Simultan
Pembuatan indeks pada database primary dan secondary dilakukan secara sinkron. Hal ini secara signifikan mengurangi latensi pembuatan indeks dan memastikan database secondary dapat segera mengakses data terbaru.
Pembacaan Cermin
Node primary mereplikasi proporsi tertentu dari traffic baca ke database secondary untuk dieksekusi. Hal ini memastikan node secondary menangani sebagian traffic baca, yang mengurangi latensi akses bisnis.
Sinkronisasi Awal yang Dapat Dilanjutkan
Sinkronisasi Awal yang Dapat Dilanjutkan menyediakan fitur transfer yang dapat dilanjutkan selama sinkronisasi penuh antara database primary dan secondary. Hal ini mencegah proses sinkronisasi penuh dimulai ulang dari awal akibat putusnya jaringan.
Retensi Oplog Berbasis Waktu
Retensi Oplog Berbasis Waktu mendukung penyesuaian periode retensi untuk entri oplog guna mencegah entri tersebut dihapus dari database primary, yang dapat memicu sinkronisasi penuh.
Union
MongoDB 4.4 menambahkan tahap $unionWith untuk mengimplementasikan fungsionalitas serupa dengan
union allSQL, yang meningkatkan kemampuan kueri MongoDB.Ekspresi Agregasi Kustom
MongoDB 4.4 menambahkan $accumulator dan $function untuk mengimplementasikan Ekspresi Agregasi Kustom, yang meningkatkan keseragaman antarmuka dan pengalaman pengguna.
Untuk informasi selengkapnya tentang fitur baru MongoDB 4.4, lihat Ikhtisar fitur MongoDB 4.4.
MongoDB 4.2
MongoDB 4.2 menggunakan metode commit dua fase untuk memastikan sifat atomicity, consistency, isolation, dan durability (ACID) transaksi dalam kluster sharded, yang sangat memperluas skenario bisnis yang dapat diterapkannya.
Transaksi terdistribusi
Transaksi terdistribusi menggunakan metode commit dua fase untuk memastikan sifat ACID transaksi dalam kluster sharded. Hal ini sangat memperluas skenario bisnis MongoDB dan menandai lompatan dari NoSQL ke NewSQL.
Pembacaan yang dapat diulang
Pembacaan yang dapat diulang menyediakan kemampuan pengulangan otomatis di lingkungan jaringan lemah. Hal ini mengurangi kompleksitas logika di sisi bisnis dan memastikan kelangsungan bisnis.
Indeks wildcard
Untuk field yang tidak ditentukan sebelumnya, Anda dapat membuat indeks wildcard untuk mencakup beberapa field fitur di bawah satu dokumen. Hal ini memudahkan pengelolaan dan fleksibel digunakan.
Enkripsi tingkat field
Enkripsi tingkat field didukung di level driver. Anda dapat mengenkripsi informasi sensitif tertentu, seperti nama akun, kata sandi, harga, dan nomor telepon, secara individual. Hal ini menghindari enkripsi seluruh database dan meningkatkan fleksibilitas serta keamanan bisnis.
Tampilan materialisasi
Tampilan materialisasi dapat menyimpan hasil perhitungan untuk menghindari perhitungan berulang, meningkatkan efisiensi operasional, dan mengurangi kompleksitas logika.
MongoDB 4.0
MongoDB 4.0 lebih cocok untuk skenario seperti keuangan yang mengandalkan transaksi dan menggunakan fitur NoSQL.
Dukungan transaksi lintas dokumen
MongoDB 4.0 adalah database cloud NoSQL pertama yang mendukung transaksi lintas dokumen. MongoDB menggabungkan kecepatan, fleksibilitas, dan fungsionalitas model dokumen dengan jaminan ACID.
Kecepatan migrasi 40% lebih cepat
Pembacaan dan penulisan konkuren memungkinkan node shard yang baru ditambahkan menyelesaikan migrasi data lebih cepat untuk menangani beban kerja bisnis.
Performa baca yang sangat diperluas
Dengan fitur transaksi, node secondary tidak lagi memblokir permintaan baca karena sinkronisasi log. Alibaba Cloud juga mendukung fitur ekstensi multi-node di semua versi, yang secara signifikan meningkatkan kemampuan baca bisnis Anda.
MongoDB 3.4 (tidak didukung lagi)
MongoDB 3.4 menawarkan berbagai peningkatan dalam performa dan keamanan dibandingkan versi 3.2.
MongoDB 3.2 telah tidak didukung lagi. Untuk informasi selengkapnya, lihat [Pemberitahuan] ApsaraDB for MongoDB menghentikan dukungan untuk versi 3.2 dan meluncurkan versi 4.2 pada 4 Februari.
Sinkronisasi primary-secondary lebih cepat
Semua indeks dibangun saat data sedang disinkronkan. Versi sebelumnya hanya membangun indeks _id. Selain itu, selama fase sinkronisasi data, node secondary terus membaca informasi oplog baru untuk memastikan database lokal pada node secondary memiliki cukup ruang penyimpanan untuk data sementara.
Penyeimbangan beban lebih efisien
Pada versi 3.2 dan sebelumnya, penyeimbangan beban untuk kluster sharded ditangani oleh node Mongos. Beberapa node Mongos akan bersaing untuk mendapatkan kunci terdistribusi. Node Mongos yang berhasil mendapatkan kunci akan melakukan tugas penyeimbangan beban dan memigrasikan chunk antar node shard. Pada versi 3.4, penyeimbangan beban ditangani oleh node primary di ConfigServer, yang sangat meningkatkan konkurensi dan efisiensi penyeimbangan beban.
Operasi agregasi yang lebih kaya
Versi 3.4 memperkenalkan beberapa operator agregasi untuk meningkatkan kemampuan analitik data. Misalnya,
bucketmenyederhanakan kategorisasi data,$graphLookupmendukung operasi relasi yang lebih kompleks dibandingkan operator$lookupdari versi 3.2, dan$addFieldsmemungkinkan operasi dokumen yang lebih canggih, seperti menjumlahkan field tertentu dan menyimpan hasilnya sebagai field baru.Dukungan untuk Zona Sharding
Konsep Zona diperkenalkan dalam kluster sharded, terutama untuk menggantikan mekanisme sharding sadar tag. Fitur ini dapat menetapkan data tertentu ke satu atau beberapa node shard yang ditentukan. Fitur ini sangat memudahkan penerapan kluster sharding lintas pusat data.
Dukungan untuk Collation
Pada versi sebelumnya, string yang disimpan dalam dokumen selalu dibandingkan byte demi byte, terlepas dari bahasa atau huruf besar/kecil. Dengan diperkenalkannya Collation, konten string dapat diinterpretasikan dan dibandingkan sesuai dengan locale. Perbandingan tanpa membedakan huruf besar/kecil juga didukung.
Dukungan untuk tampilan read-only
Versi 3.4 menambahkan dukungan untuk tampilan read-only. Data dalam koleksi yang memenuhi kondisi kueri tertentu dapat divirtualisasi menjadi koleksi khusus, di mana pengguna dapat melakukan operasi kueri lebih lanjut.