MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Apa yang Baru di MongoDB 4.4

MongoDB 4.4 (saat ini dalam versi beta) sedang diluncurkan dengan agenda utama menangani saran pengembang dari komunitas MongoDB . Versi ini telah dirilis untuk meningkatkan kemampuan database untuk beroperasi pada skala yang nyaman dan dapat diandalkan, oleh karena itu dikembangkan di bawah prinsip "rekayasa yang digerakkan pengguna" untuk memungkinkannya memberikan banyak fitur yang ditingkatkan.

Fitur yang Disempurnakan di MongoDB 4.4

Pembacaan Lindung Nilai

Router kueri MongoDB mengeluarkan permintaan baca secara paralel ke beberapa set replika dan hasil data dari node paling efisien dikembalikan, sehingga mengurangi latensi aplikasi.

Kunci Bersama yang Dapat Didefinisikan

Menambahkan akhiran ke shard key setelah memodifikasi distribusi data selama proses penskalaan.

Bacaan yang Dicerminkan

Ini adalah fitur yang menghangatkan cache replika sekunder terlebih dahulu untuk mengurangi dampak pemilihan primer yang mungkin diakibatkan oleh pemeliharaan atau pemadaman yang direncanakan.

Peningkatan Agregasi

Peningkatan agregasi memiliki berbagai peningkatan, termasuk mendefinisikan dan menyesuaikan Ekspresi Agregasi, menggabungkan data dari beberapa koleksi mongo ke dalam satu kumpulan hasil, manipulasi string, dan operator baru dalam penanganan larik. Berikut adalah beberapa peningkatannya:

$keluar

Operasi $out telah ditingkatkan untuk menampilkan hasil pengumpulan ke database yang berbeda sebagai lawan dari versi sebelumnya yang hanya dapat menampilkan koleksi dalam database yang sama dengan agresi.

$indexStats

$indexStats memiliki keluaran bidang baru di MongoDB 4.4 yang mencakup bidang :

bangunan

Ini adalah Bendera Boolean, yang menunjukkan indeks sedang dibangun.

spek

Dokumen spesifikasi untuk setiap indeks

pecahan

Nama spesifik pecahan jika diperlukan

$merge

Di MongoDB 4.4 $merge telah ditingkatkan ke keluaran pada koleksi yang sama yang sedang ditingkatkan. Selain itu, seseorang juga dapat menampilkan koleksi yang muncul di saluran seperti $lookup.

Perubahan $planCacheStats

$planCacheStats state telah ditingkatkan untuk menjalankan instance mongod dan mongos di MongoDB 4.4. Selain itu, $planCacheSTats memiliki bidang baru yang dikenal sebagai bidang host saat menjalankan mongo. PlanCache.list() adalah pembungkus untuk tahap agregasi $planCacheStats.

$collStats Perubahan

$collStats telah dibuat untuk menerima query exec stats selama dokumentasi augment. Selain itu, Koleksi Memindai sebagai bidang dengan deskripsi berikut;

Nama Bidang

Deskripsi

nonTailble

Ini adalah bilangan bulat 64-bit yang melakukan pemindaian koleksi pada beberapa kueri yang tidak menggunakan kursor yang dapat disesuaikan.

total

Total adalah kumpulan kueri yang dilakukan pemindaian koleksi yang tidak menggunakan kursor ekor.

$unionDengan Agregasi

MongoDB telah menambahkan $unionWith, sebuah fitur yang menyatukan kumpulan kumpulan, yaitu, menyatukan hasil pipeline dari beberapa kumpulan menjadi satu kumpulan.

$unionDengan Sintaks

$unionWith memiliki sintaks umum berikut:

cd{ $unionWith: { coll: "<collection>", pipeline: [ <stage1>, ... ] } }

$unionWith memiliki versi sintaks yang disederhanakan yang digunakan untuk memasukkan semua dokumen dari koleksi:

{ $unionWith: "<collection>" }  // include all documents from the specified collection

$agregasi akumulator

$accumulator adalah fitur baru lainnya di MongoDB 4.4 yang menentukan operator akumulator khusus. Akumulator adalah operator yang tidak mengubah status saat dokumen membuat kemajuan di sepanjang jalur pipa. Anda dapat menggunakan operator $accumulator untuk menjalankan fungsi JavaScript yang tidak didukung oleh MongoDB. $accumulator ditemukan dalam tiga tahap pipeline berikut:

  1. $bucket stage:Hanya mengeluarkan dokumen yang berisi tidak kurang dari satu masukan dokumen.
  2. $group stage:Memasukkan dokumen dengan _id tertentu dan mengeluarkan dokumen untuk setiap pengelompokan tertentu
  3. $bucketAuto stage:Ini mengurutkan entri dokumen ke dalam nomor grup tertentu yang dikenal sebagai bucket.

Sintaks

Sintaks untuk $accumulator adalah sebagai berikut:

{ $accumulator:{

init: <code>,

initArgs: <array expression>,    // Optional

accumulate: <code>,

accumulateArgs: <array expression>,

merge: <code>,

finalize: <code>, // Optional

lang: <string>

  }}

$function Aggregation

$function aggregation mendefinisikan fungsi agregasi dalam JavaScript.

$operator fungsi dapat digunakan untuk mendefinisikan fungsi untuk menggunakan perilaku yang tidak didukung oleh MongoDB

Sintaks untuk $function adalah sebagai berikut:

{

  $function: {

body: <code>,

args: <array expression>,

lang: "js"

  }

}

Fitur lain yang disertakan dalam versi MongoDB 4.4 terbaru adalah:masalah penulisan, pembacaan global, replikasi aliran, sinkronisasi awal yang dapat dilanjutkan, dan pecahan gabungan gabungan.

Apa yang Baru Dengan Kumpulan Replika MongoDB?

Sinkronisasi Awal yang Dapat Dilanjutkan

MongoDB 4.4 memiliki fitur yang mencoba melanjutkan proses sinkronisasi yang terputus.

Replikasi Streaming

Di MongoDB versi sebelumnya, sekunder mengumpulkan kumpulan oplog berdasarkan permintaan yang dikeluarkan untuk menyinkronkan dari sumbernya. Dengan MongoDB 4.4, sumber formulir proses sinkronisasi akan mengirimkan aliran entri oplog yang berkelanjutan ke proses sinkronisasi sekunder.

Direktori Kembalikan

Dari MongoDB 4.4 pada rollback, direktori koleksi diberi nama sesuai dengan UUID koleksi dan namespace koleksi.

Periode Retensi Oplog Minimum

Mulai dari MongoDB 4.4, dimungkinkan untuk menentukan jumlah jam paling sedikit yang Anda inginkan untuk mempertahankan entri oplog.

Perubahan Konfigurasi Ulang Kumpulan Replika

MongoDB 4.4 memiliki perintah yang disebut replSetReconfig yang memungkinkan penambahan atau penghapusan tidak lebih dari satu pemilih sekaligus. Fitur baru lainnya di MongoDB 4.4 adalah perubahan pada replSetGetConfig. MongoDB 4.4 replSetConfig dapat menetapkan status komitmen opsi baru.

Kunci Shard yang Digabungkan dengan Hash

Mulai di MongoDB 4.4, Anda dapat memecahkan koleksi menggunakan kunci pecahan gabungan dengan satu bidang hash. Sebelum 4.4, MongoDB tidak mendukung kunci shard majemuk dengan bidang hash. Pecahan hash gabungan mendukung fitur seperti pembagian zona, di mana awalan (yaitu, pertama) bidang non-hash atau bidang mendukung rentang zona sementara bidang hash mendukung lebih banyak distribusi data pecahan. Misalnya, operasi berikut memecah koleksi pada kunci pecahan gabungan yang mendukung pecahan berzona:

sh.shardCollection(

  "examples.compoundHashedCollection",

  { "fieldA" : 1, "fieldB" : 1, "fieldC" : "hashed" }

)

Peningkatan Umum Cluster Sharded

Pemeriksaan Konsistensi Indeks

Di MongoDB 4.4, server konfigurasi pada dasarnya, secara default, memeriksa ketidakteraturan file di atas pecahan untuk koleksi pecahan. ServerStatus perintah mengembalikan bidang shardedIndexConsistency untuk melaporkan ketidakteraturan file saat dijalankan di server konfigurasi penting. Di MongoDB 4.4, Anda akan memiliki lebih dari satu operasi removeShard terlebih dahulu. Dalam adaptasi  sebelumnya, removeShard menampilkan kesalahan dengan kemungkinan bahwa operasi removeShard lain dilakukan terlebih dahulu.

Batas Kunci Pecahan

Mulai dalam bentuk 4.4, MongoDB menghilangkan batasan 512-byte pada estimasi kunci shard. Untuk MongoDB 4.2 dan sebelumnya, kunci pecahan tidak boleh melebihi 512 byte.

Peningkatan Penyegaran Cache Katalog

Di MongoDB 4.4, jika ada bongkahan lama, cache katalog akan menghidupkannya kembali untuk mendapatkan  pecahan yang memiliki potongan tersebut.

MongoDB 4.4 memiliki enableFinerGrainedCatalogCacheRefresh yang merupakan parameter untuk mengganggu pemulihan cache katalog. enableFinerGrainedCatalogCacheRefresh berfokus pada shard dan memanfaatkan perilaku menghidupkan kembali cache katalog yang lebih berpengalaman.

Parameter enableFinerGrainedCatalogCacheRefresh default ke true.

Peningkatan Kueri dan Sharding di MongoDB 4.4

MongoDB memiliki tradisi penskalaan terus-menerus melalui distribusi data ke beberapa node atau melalui sharding. Kunci pecahan menyimpan dokumen karena kunci pecahan dokumen yang diberikan hanya dapat diubah sebelum tugas dan bukan setelah tugas.

Evolusi MongoDB telah membuatnya sulit untuk mengkalibrasi ulang pecahan konten yang disediakan di MongoDB. Untuk mengaktifkan penyeimbangan ulang, rilis MongoDB 4.4 telah memperkenalkan kunci shard yang dapat diperbaiki yang mengizinkan kunci sharded dokumen untuk dimodifikasi.

Kunci shard yang dapat diperbaiki memungkinkan perubahan dalam kunci shard dokumen diubah dengan mengaktifkan dokumen yang tergabung dalam shard untuk mengubah persyaratannya dan karenanya menjadi diseimbangkan kembali secara dinamis.

Penyeimbangan ulang dapat dilakukan secara terprogram atau agresif, bergantung pada cara pengguna melihatnya dari waktu ke waktu.

Peningkatan Lainnya

Agregasi koleksi MongoDB ketika kumpulan data yang berbeda mengizinkan kueri melalui Serikat. Kemampuan seperti itu memungkinkan perlakuan data secara berbeda dan bukan sebagai ETL yang terpisah.

Data dapat dipindahkan dan digabungkan di server dan diteruskan ke klien, dan prosesnya tidak memerlukan beberapa perjalanan untuk mengelola hasil yang lengkap.

$fungsi adalah di antara Agregasi berkostum yang memungkinkan eksekusi agregasi yang lebih kompleks di sisi server dan meningkatkan proses pemrosesan data.

Berbagai versi prosedur berkostum muncul di MongoDB 4.4 yang dirilis. Fitur berkostum telah dikaitkan dengan peningkatan kinerja versi beta. Meskipun demikian, $function hanya dipanggil ketika fitur kostum dan fitur bawaan lainnya tidak mencukupi dalam proses yang sedang berlangsung.

Bahasa dan Driver Kueri MongoDB

  1. Tampilan Agregasi Kustom memiliki fungsi pemilik yang memperluas MongoDB sebagai bagian dari alur eksekusi agregasi.
  2. Union Aggregation memiliki analisis dan eksplorasi yang lebih mendalam dengan memadukan data dari beberapa koleksi ke dalam pipeline Union Aggregation.
  3. Tulis masalah dan Baca Global untuk menulis daya tahan dan mengonfigurasi isolasi baca cluster.
  4. Driver cepat dan Karat Baru
  5. Fleksibilitas dan kinerja yang ditingkatkan
  6. Replikasi Streaming dan Pengindeksan Simultan mengurangi jeda replika untuk menyajikan data kepada pengguna di MongoDB 4.4.
  7. Hasil dikembalikan sesegera mungkin karena Pembacaan yang Dilindung Nilai meminimalkan latensi p65 dan p99 dengan mengirimkan permintaan baca ke beberapa replika data di MongoDB.
  8. Mempertahankan lokalitas data sebagai kunci Gabungan Hash didistribusikan secara merata di berbagai shard dengan kunci shardnya.
  9. Tidak ada sistem di pusat kota saat mendefinisikan dan menyempurnakan kunci shard pada waktu tertentu.

Ketahanan dan Keamanan

  1. Autentikasi di MongoDB 4.4 beta di atas 50% lebih cepat dan TLS 1.3.
  2. Koneksi ke MongoDB Atlas memerlukan AWS IASM Authentication, yang menyederhanakan keamanan cloud-native dengan menggunakan kembali kredensial Amazon IAM sementara dan reguler yang ada.
  3.  Memulihkan node dengan Sinkronisasi awal yang Dapat Dilanjutkan yang memudahkan proses penskalaan dengan menambahkan replika baru. Mengurangi dampak pemilihan primer oleh Mirrored Reads menghangatkan cache sekunder setelah pemeliharaan atau pemadaman yang direncanakan.

Kesimpulan

MongoDB 4.4 telah menghadirkan pengalaman yang lebih baik dalam database berbasis dokumen non-relasional dengan meningkatkan fitur kinerja dalam sistemnya. Peningkatan tersebut telah memungkinkan aplikasi analitis, operasional, dan transaksional yang lebih cepat dengan MongoDB 4.4.

MongoDB 4.4 juga memungkinkan Fleksibilitas saat mendefinisikan distribusi data sebagai persyaratan perubahan operasi. Peningkatan yang dilakukan pada MongoDB 4.4 membuatnya lebih andal dalam hal latensi, kecanggihan, dan kontrol keamanan saat menggunakan Mongo Atlas, yang merupakan cloud.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Penurunan kinerja yang parah dengan Aliran Perubahan MongoDB

  2. Nama bidang FieldPath tidak boleh berisi '.' di $grup

  3. Menginstal MongoDB dengan Homebrew

  4. luwak unik:benar tidak berfungsi

  5. Tidak dapat terhubung ke mongodb errno:61 Koneksi ditolak