Topik ini menjelaskan fitur-fitur utama yang diperkenalkan dalam MongoDB 5.0.
Informasi latar belakang
MongoDB 5.0 menandai awal siklus rilis baru untuk menyediakan fitur-fitur terbaru kepada pengguna lebih cepat. Fitur seperti Versioned API dan live resharding menyederhanakan peningkatan database di masa depan serta mendukung kebutuhan bisnis yang terus berkembang. Platform data time series native memperluas kemampuan MongoDB dalam menangani berbagai jenis beban kerja dan kasus penggunaan, sementara MongoDB Shell yang baru meningkatkan pengalaman pengguna.
Platform time series native
MongoDB 5.0 memperluas platform data aplikasi serba guna untuk menyederhanakan pengelolaan data time series, sehingga memperluas penerapannya di bidang seperti IoT, analitik keuangan, dan logistik.
Koleksi time series MongoDB secara otomatis menyimpan data time series dalam format yang sangat dioptimalkan dan terkompresi, mengurangi ukuran penyimpanan dan I/O demi kinerja serta skalabilitas yang lebih baik. Hal ini mempercepat siklus pengembangan dan memungkinkan Anda membangun model yang dioptimalkan untuk aplikasi time series dengan cepat.
db.createCollection("collection_name",{ timeseries: { timeField: "timestamp" } } )MongoDB dapat secara mulus menyesuaikan frekuensi ingestion dan secara otomatis menangani pengukuran yang tidak urut berdasarkan partisi waktu yang dihasilkan secara dinamis. MongoDB Connector terbaru untuk Apache Kafka menyediakan dukungan native untuk time series. Anda dapat secara otomatis membuat koleksi time series langsung dari pesan topik Kafka, yang memungkinkan Anda memproses dan mengagregasi data saat melakukan ingestion sebelum menuliskan data tersebut ke koleksi time series MongoDB.
Koleksi time series secara otomatis membuat clustered index yang terurut berdasarkan waktu, sehingga mengurangi latensi kueri. API kueri MongoDB juga diperluas dengan window function, memungkinkan Anda menjalankan kueri analitik seperti moving average dan cumulative sum. Dalam sistem database relasional, fungsi-fungsi ini sering disebut sebagai SQL analytical function dan mendukung jendela yang ditentukan berdasarkan baris (misalnya, moving average tiga baris). MongoDB melangkah lebih jauh dengan menambahkan fungsi time series yang lebih canggih seperti exponential moving average (EMA), derivatives, dan integrals, yang mendukung jendela yang ditentukan berdasarkan waktu (misalnya, moving average 15 menit). Anda dapat menggunakan window function untuk mengkueri baik koleksi time series maupun koleksi MongoDB biasa, memberikan kemampuan analitik baru untuk berbagai jenis aplikasi. Selain itu, MongoDB 5.0 menyediakan operator tanggal baru, termasuk $dateAdd, $dateSubtract, $dateDiff, dan $dateTrunc, untuk mengagregasi dan mengkueri data dalam jendela waktu kustom.
Anda dapat menempatkan koleksi time series dalam database yang sama dengan koleksi MongoDB biasa. Anda tidak perlu memilih database time series khusus—yang tidak dapat melayani jenis aplikasi lain—atau menerapkan integrasi kompleks untuk mencampur data time series dengan data lainnya. Dengan menyediakan platform terpadu, MongoDB memungkinkan Anda membangun aplikasi time series berkinerja tinggi dan efisien sekaligus mendukung kasus penggunaan atau beban kerja lainnya. Hal ini menghilangkan biaya dan kompleksitas integrasi serta pengoperasian beberapa database yang berbeda.
Live resharding
| Versi database | Fitur | Metode implementasi |
| Sebelum MongoDB 5.0 | Sebelum MongoDB 5.0, resharding merupakan proses manual yang kompleks. |
|
| MongoDB 5.0 dan seterusnya |
|
reshardCollectionAnda dapat mengubah kunci shard koleksi sesuai kebutuhan seiring pertumbuhan bisnis Anda, tanpa downtime database atau migrasi data yang kompleks. Anda hanya perlu menjalankan perintah di MongoDB Shell, memilih database dan koleksi yang akan direshard, lalu menentukan kunci shard yang baru.
Catatan
|
Versioned API
- Kompatibilitas aplikasi
Mulai MongoDB 5.0, Versioned API mendefinisikan kumpulan perintah dan parameter stabil yang paling umum, yang tetap tidak berubah baik di Major Release tahunan maupun Rapid Release triwulanan. Dengan memisahkan siklus hidup aplikasi dan database, Anda dapat mengaitkan driver ke versi tertentu dari API MongoDB. Hal ini memastikan aplikasi Anda dapat berjalan selama bertahun-tahun tanpa perubahan kode, bahkan saat terjadi peningkatan database.
- Fleksibilitas untuk menambahkan fitur dan peningkatan baru
Versioned API memungkinkan MongoDB secara fleksibel menambahkan fitur dan peningkatan baru pada setiap rilis sambil tetap menjaga kompatibilitas mundur. Saat Anda perlu mengubah API, Anda dapat memperkenalkan versi API baru yang berjalan di server yang sama bersama versi API sebelumnya. Seiring percepatan jadwal rilis MongoDB, Versioned API memungkinkan Anda mengadopsi fitur MongoDB terbaru lebih cepat dan lebih mudah.
Write Concern default ke level Majority
majority. Operasi tulis hanya diakui berhasil setelah diterapkan ke node primary dan dipertahankan di journal mayoritas node secondary, sehingga memberikan jaminan ketahanan data yang lebih kuat secara langsung.Optimisasi manajemen koneksi
Secara default, setiap koneksi klien berkorespondensi dengan satu thread di server backend MongoDB saat Anda mengonfigurasi net.serviceExecutor sebagai synchronous. Membuat, mengganti, dan menghapus thread merupakan operasi yang intensif sumber daya. Ketika jumlah koneksi terlalu tinggi, thread akan mengonsumsi sumber daya server secara signifikan.
Connection storm adalah lonjakan jumlah koneksi atau laju pembuatan koneksi yang tidak terkendali. Masalah ini dapat disebabkan oleh berbagai faktor dan sering terjadi ketika kinerja layanan sudah menurun.
- Membatasi jumlah koneksi yang dapat dibuat driver sekaligus, memberikan cara sederhana dan efektif untuk mencegah overload server database.
- Mengurangi frekuensi pemeriksaan connection pool oleh driver, memberi waktu bagi node server yang tidak responsif atau kelebihan beban untuk pulih.
- Driver mengarahkan beban kerja ke server yang lebih cepat dengan connection pool yang lebih sehat, bukan memilih server secara acak dari daftar yang tersedia.
Langkah-langkah ini, dikombinasikan dengan peningkatan pada lapisan routing kueri mongos dari versi sebelumnya, semakin meningkatkan kemampuan MongoDB dalam menangani beban kerja konkurensi tinggi.
Kueri snapshot berdurasi panjang
Kueri snapshot berdurasi panjang meningkatkan fleksibilitas dan ketahanan aplikasi. Anda dapat menjalankan kueri dengan durasi default 5 menit (atau menyesuaikannya ke durasi kustom) sambil mempertahankan isolasi snapshot yang konsisten dengan database transaksional aktif. Anda juga dapat menjalankan kueri snapshot pada node secondary, yang memungkinkan Anda menjalankan beban kerja berbeda pada satu kluster dan menskalanya di berbagai shard.
MongoDB mengimplementasikan kueri snapshot berdurasi panjang melalui fitur pada mesin penyimpanan dasar bernama Durable History, yang diperkenalkan di MongoDB 4.4. Durable History menyimpan snapshot semua nilai bidang yang berubah sejak kueri dimulai. Dengan memanfaatkan Durable History, kueri dapat mempertahankan isolasi snapshot meskipun data berubah. Durable History juga membantu mengurangi tekanan cache pada mesin penyimpanan, sehingga meningkatkan throughput kueri dalam skenario dengan beban tulis tinggi.
MongoDB Shell baru
Untuk memberikan pengalaman pengguna yang lebih baik, MongoDB 5.0 memperkenalkan MongoDB Shell (mongosh) yang didesain ulang sepenuhnya. Shell ini menawarkan pengalaman command-line modern, fitur kegunaan yang ditingkatkan, serta lingkungan skrip yang tangguh. MongoDB Shell baru kini menjadi shell default untuk platform MongoDB. Fitur-fiturnya mencakup syntax highlighting, autocompletion cerdas, bantuan kontekstual, dan pesan error yang informatif untuk pengalaman interaktif yang intuitif.
- Pengalaman pengguna yang ditingkatkan
- Menulis kueri dan agregasi lebih mudah, serta mendapatkan hasil yang lebih mudah dibaca.
MongoDB Shell baru mendukung syntax highlighting, sehingga mempermudah pembedaan antara bidang, nilai, dan tipe data untuk menghindari kesalahan sintaksis. Jika terjadi error, MongoDB Shell baru akan menunjukkan lokasi masalah dan memberikan saran solusi.
- Memasukkan kueri dan perintah lebih cepat.
MongoDB Shell baru mendukung autocompletion cerdas. Shell ini memberikan saran untuk metode, perintah, dan ekspresi MQL berdasarkan versi MongoDB yang Anda gunakan.
Contoh: Jika Anda lupa sintaksis suatu perintah, Anda dapat langsung mencarinya dari MongoDB Shell.secondary [direct: secondary] sample_mflix → db.movies.createIndex db.movies.createIndexes db.movies.createIndex secondary [direct: secondary] sample_mflix → db.movies.createIndex.help() db.coll.createIndex({ category: 1 }, { name: 'index-1' }): Creates one index on a collection For more information on usage: https://docs.mongodb.com/manual/reference/method/db.collection.createIndex secondary [direct: secondary] sample_mflix →
- Menulis kueri dan agregasi lebih mudah, serta mendapatkan hasil yang lebih mudah dibaca.
- Lingkungan skrip lanjutan
Lingkungan skrip MongoDB Shell baru dibangun di atas Node.js REPL (Read-Eval-Print Loop). Anda dapat menggunakan semua API Node.js dan modul apa pun dari npm dalam skrip Anda. Anda juga dapat memuat dan menjalankan skrip dari sistem file, serta tetap dapat menggunakan
load()daneval()untuk mengeksekusi skrip seperti pada shell lama. - Ekstensibilitas dan plugin
MongoDB Shell baru sangat ekstensibel, memungkinkan Anda memanfaatkan semua fitur MongoDB untuk meningkatkan produktivitas.
Di MongoDB Shell baru, Anda dapat menginstal plugin Snippets. Shell dapat memuat Snippets secara otomatis serta menggunakan semua API Node.js dan paket npm. MongoDB juga menyediakan repositori Snippets yang berisi fitur-fitur berguna, seperti plugin untuk menganalisis skema koleksi tertentu. Anda juga dapat mengonfigurasi MongoDB Shell untuk menggunakan plugin pilihan Anda.Catatan Plugin saat ini merupakan fitur eksperimental di MongoDB Shell.
PyMongoArrow dan ilmu data
Dengan API PyMongoArrow yang baru, Anda dapat menggunakan Python untuk menjalankan analitik kompleks dan pembelajaran mesin pada MongoDB. PyMongoArrow dapat dengan cepat mengonversi hasil kueri MongoDB sederhana ke format data populer, seperti Pandas DataFrame atau NumPy array, guna menyederhanakan alur kerja ilmu data Anda.
Penyempurnaan validasi skema
Validasi skema merupakan cara untuk menerapkan kontrol tata kelola data di MongoDB. Di MongoDB 5.0, validasi skema menjadi lebih sederhana dan ramah pengguna. Saat suatu operasi gagal divalidasi, MongoDB menghasilkan pesan error deskriptif. Pesan ini membantu Anda memahami dokumen mana yang tidak sesuai dengan aturan validator koleksi dan alasannya, sehingga Anda dapat dengan cepat mengidentifikasi serta memperbaiki kode yang melanggar aturan tersebut.
Pembuatan indeks yang dapat dilanjutkan
Di MongoDB 5.0, pembuatan indeks yang sedang berlangsung secara otomatis dilanjutkan dari titik terakhir setelah restart node. Hal ini mengurangi dampak bisnis dari tindakan maintenance terencana. Misalnya, saat Anda me-restart atau meningkatkan versi node database, Anda tidak perlu lagi khawatir pembuatan indeks yang sedang berjalan pada koleksi besar akan gagal.
Perubahan model rilis
Karena MongoDB mendukung banyak versi dan platform, setiap rilis harus divalidasi di lebih dari 20 platform yang didukung. Validasi ekstensif ini memperlambat pengiriman fitur baru. Oleh karena itu, mulai MongoDB 5.0, rilis dibagi menjadi Major Release dan Rapid Release. Rapid Release tersedia untuk diunduh untuk tujuan pengembangan dan pengujian, tetapi tidak direkomendasikan untuk lingkungan produksi.
Fitur lainnya
Untuk informasi lebih lanjut tentang fitur-fitur MongoDB 5.0, lihat Catatan rilis MongoDB 5.0.