MongoDB 7.0 mempromosikan sejumlah fitur pratinjau ke status General Availability (GA) serta memperkenalkan kemampuan baru dalam sharding, enkripsi, dan agregasi. Halaman ini mencakup sorotan utama bagi pengguna ApsaraDB for MongoDB.
Untuk changelog lengkap dari upstream, lihat Release Notes for MongoDB 7.0.
Apa yang baru sekilas
| Kategori | Fitur atau perubahan |
|---|---|
| Fitur baru | Queryable Encryption (GA) |
Pemeriksaan konsistensi metadata shard (checkMetadataConsistency) | |
Analisis kunci shard (analyzeShardKey) | |
| AutoMerger | |
| Sharding | rangeDeleterHighPriority; metrik resharding; pembaruan kebijakan balancer |
| Keamanan | Key Management Interoperability Protocol (KMIP) V1.0 dan V1.1; OpenSSL 3.0 dan OpenSSL FIPS |
| Agregasi | Operator bitwise; $median; $percentile |
| Time series | Relaksasi pembatasan DELETE; dukungan COMPACT |
| Lainnya | Indeks wildcard majemuk; $changeStreamSplitLargeEvent; peningkatan performa Slot-Based Execution (SBE) |
Queryable encryption
Queryable Encryption, yang sebelumnya berstatus pratinjau di MongoDB 6.0, kini tersedia secara umum (generally available) di MongoDB 7.0.
Untuk detail implementasi, lihat Queryable Encryption.
Pemeriksaan konsistensi metadata shard
Ketidakkonsistenan metadata di seluruh shard dapat menyebabkan kesalahan routing yang sulit didiagnosis setelah terjadi. Perintah checkMetadataConsistency, yang ditambahkan di MongoDB 7.0, memungkinkan Anda mendeteksi ketidakkonsistenan tersebut secara proaktif sebelum memengaruhi lalu lintas produksi.
Jalankan perintah ini pada tingkat database:
// Periksa konsistensi metadata untuk database saat ini
db.runCommand({
checkMetadataConsistency: 1,
checkIndexes: true
})Atau gunakan helper mongosh untuk memeriksa pada cakupan berbeda:
// Periksa database saat ini
db.checkMetadataConsistency()
// Periksa koleksi tertentu
db.collection.checkMetadataConsistency()
// Periksa semua database dalam kluster sharded
sh.checkMetadataConsistency()Sertakan pemeriksaan ini dalam jadwal operasi dan maintenance (O&M) rutin Anda untuk menangkap ketidakkonsistenan sedini mungkin. Untuk referensi lengkap perintah, lihat checkMetadataConsistency.
Analis kunci shard (analyzeShardKey)
Pemilihan kunci shard yang salah dapat menyebabkan hotspots, distribusi data tidak merata, dan penurunan performa kueri—masalah yang mahal untuk diperbaiki setelah sebuah koleksi di-shard. Perintah analyzeShardKey mengevaluasi kandidat kunci shard terhadap sampel kueri dunia nyata sehingga Anda dapat membuat keputusan yang tepat sebelum menerapkannya.
db.adminCommand({
analyzeShardKey: "<db>.<koleksi>",
key: <kunciShard>,
keyCharacteristics: <bool>,
readWriteDistribution: <bool>,
sampleRate: <double>,
sampleSize: <int>
})| Parameter | Deskripsi |
|---|---|
analyzeShardKey | Namespace koleksi yang akan dianalisis, dalam format <db>.<koleksi>. |
key | Kandidat kunci shard yang akan dievaluasi. |
keyCharacteristics | Jika true, melaporkan kardinalitas dan distribusi frekuensi kunci shard. |
readWriteDistribution | Jika true, melaporkan bagaimana operasi baca dan tulis didistribusikan di seluruh shard. |
sampleRate | Proporsi dokumen yang diambil sampelnya, sebagai nilai antara 0 dan 1. |
sampleSize | Jumlah dokumen yang diambil sampelnya. |
Perintah ini tidak memblokir operasi baca atau tulis pada koleksi. Untuk meminimalkan dampak pada beban kerja produksi, gunakan dengan preferensi baca secondary atau secondaryPreferred. Pada kluster sharded, mongos secara otomatis mengatur preferensi baca ke secondaryPreferred.
Untuk mengonfigurasi pengambilan sampel kueri sebelum menjalankan analisis, lihat configureQueryAnalyzer. Untuk referensi lengkap perintah, lihat analyzeShardKey.
AutoMerger
Saat kluster sharded berkembang—melalui migrasi data, penghapusan rentang, dan penulisan berkelanjutan—jumlah chunk dapat tumbuh melebihi kebutuhan, menyebabkan distribusi data tidak merata dan memperlambat balancer. AutoMerger, yang diperkenalkan di MongoDB 7.0, mengatasi hal ini dengan secara otomatis menggabungkan chunk ketika distribusi data atau indeks tidak seimbang, jumlah chunk berlebihan, atau selama migrasi data.
AutoMerger diaktifkan secara default di MongoDB 7.0. Perintah configureCollectionBalancing, yang diperkenalkan di versi MongoDB sebelumnya untuk mengonfigurasi pengaturan balancer pada koleksi sharded, juga mendukung AutoMerger:
db.adminCommand({
configureCollectionBalancing: "<db>.<koleksi>",
chunkSize: <num>,
defragmentCollection: <bool>,
enableAutoMerger: <bool>
})Untuk memicu secara manual penggabungan semua chunk yang dapat digabung pada shard tertentu, jalankan:
db.adminCommand({ mergeAllChunksOnShard: "db.coll", shard: "Shard0" })Optimalisasi sharding
Selain AutoMerger, MongoDB 7.0 mencakup perubahan sharding berikut:
Parameter `rangeDeleterHighPriority`: Mengontrol apakah penghapusan dokumen yatim (orphan documents) memiliki prioritas lebih tinggi daripada operasi hapus bisnis. Nilai default-nya adalah
false, artinya operasi bisnis memiliki prioritas lebih tinggi.Dokumen `operationsBlockedByRefresh` dihapus: Dokumen
operationsBlockedByRefreshtelah dihapus dariserverStatus. Penghitung tersebut sebelumnya bertambah pada nodemongosuntuk setiap operasi yang menggunakan informasi routing koleksi, bahkan ketika tidak terjadi penyegaran cache katalog, sehingga metrik tersebut menyesatkan.Metrik resharding: Metrik pemantauan baru untuk operasi resharding telah ditambahkan.
Perintah `addShard`: Opsi
maxSizetidak lagi didukung.Validasi ukuran chunk: Saat Anda menyesuaikan ukuran chunk dalam koleksi
config.settings, MongoDB kini memvalidasi bahwa nilainya berada dalam rentang yang didukung, yaitu 1 hingga 1.024.Pembaruan kebijakan balancer (dari MongoDB 6.0.3): Balancer kini mendistribusikan data berdasarkan volume data, bukan jumlah chunk. Partisi dilakukan berdasarkan rentang, bukan berdasarkan chunk, dan pemisahan otomatis hanya terjadi ketika data dimigrasikan antar shard.
Keamanan
Dukungan KMIP: Key Management Interoperability Protocol (KMIP) V1.0 dan V1.1 kini didukung untuk manajemen kunci eksternal.
OpenSSL: OpenSSL 3.0 dan OpenSSL FIPS kini didukung.
Agregasi
MongoDB 7.0 menambahkan enam operator agregasi baru.
Operator bitwise
Empat operator melakukan operasi aritmetika bitwise pada nilai int dan long:
| Operator | Deskripsi |
|---|---|
$bitAnd | Bitwise AND |
$bitNot | Bitwise NOT (invers bitwise) |
$bitOr | Bitwise OR |
$bitXor | Bitwise XOR |
Operator persentil
Dua operator menghitung persentil statistik dari nilai-nilai yang dikelompokkan:
| Operator | Deskripsi |
|---|---|
$median | Mengembalikan persentil ke-50 (median perkiraan). |
$percentile | Mengembalikan persentil yang ditentukan. |
Contoh — hitung median dan persentil ke-90 per kategori:
db.sales.aggregate([
{
$group: {
_id: "$category",
medianRevenue: { $median: { input: "$revenue", method: "approximate" } },
p90Revenue: { $percentile: { input: "$revenue", p: [0.90], method: "approximate" } }
}
}
])Koleksi time series
Relaksasi pembatasan DELETE: Perintah
DELETEkini dapat digunakan pada koleksi time series tanpa sebagian besar pembatasan yang berlaku di versi sebelumnya. Satu-satunya pembatasan yang tersisa adalah bahwaDELETEtidak dapat digunakan dalam transaksi multi-dokumen.Dukungan COMPACT: Perintah
COMPACTkini berfungsi dengan koleksi time series.
Perubahan lainnya
Field log kueri lambat: Field baru, termasuk
catalogCacheIndexLookupDurationMillis, telah ditambahkan ke entri log kueri lambat. Lihat Logging slow operations.Konkurensi mesin penyimpanan otomatis: Konkurensi transaksi untuk mesin penyimpanan WiredTiger kini disesuaikan secara otomatis. Nilai default sebelum penyetelan otomatis adalah 128 tiket. Lihat Concurrent storage engine transactions (read and write tickets).
Metrik pengambilan sampel kueri dalam `currentOp`: Field yang terkait dengan pengambilan sampel kueri kini disertakan dalam output
currentOp. Lihat currentOp metrics.Indeks wildcard majemuk: MongoDB 7.0 mendukung indeks wildcard majemuk, yang menggabungkan field wildcard dengan satu atau lebih field standar. Lihat Compound wildcard indexes.
Operator `$changeStreamSplitLargeEvent`: Memecah event change stream yang melebihi batas dokumen BSON 16 MB menjadi beberapa event yang lebih kecil. Lihat Large change stream events.
Peningkatan mesin Slot-Based Execution (SBE): Mesin eksekusi kueri SBE telah dioptimalkan untuk performa kueri yang lebih baik.
Metrik migrasi chunk: Statistik sharding baru untuk migrasi chunk telah ditambahkan. Lihat New sharding statistics for chunk migrations.
Variabel sistem `USER_ROLES`: Mengembalikan peran yang ditetapkan untuk pengguna saat ini.
Parameter global baru: Parameter untuk
analyzeShardKey,balancer, danqueryAnalyzerstelah ditambahkan.Perubahan output `serverStatus`: Field tambahan telah ditambahkan ke output
serverStatus. Lihat serverStatus output change.