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

Pengantar Server Percona untuk MongoDB 4.2

Saat memilih teknologi basis data NoSQL, pertimbangan penting harus dipertimbangkan, seperti kinerja, ketahanan, keandalan, dan keamanan. Faktor-faktor kunci ini juga harus diselaraskan dengan pencapaian tujuan bisnis, setidaknya sejauh menyangkut database.

Banyak teknologi yang berperan untuk meningkatkan aspek ini, dan disarankan bagi organisasi untuk meningkatkan opsi yang menonjol dan mencoba mengintegrasikannya ke dalam sistem basis data.

Teknologi baru harus memastikan kinerja maksimum untuk meningkatkan pencapaian tujuan bisnis dengan biaya pengoperasian yang terjangkau tetapi dengan fitur yang lebih manipulatif seperti deteksi kesalahan dan sistem peringatan.

Dalam blog ini kita akan membahas MongoDB versi Percona dan bagaimana ia mengembangkan kekuatan MongoDB dalam berbagai cara.

Apa itu Server Percona untuk MongoDB?

Agar database bekerja dengan baik, harus ada server dasar yang ditetapkan secara optimal untuk meningkatkan transaksi baca dan tulis. Server Percona untuk MongoDB adalah pengganti drop-in sumber terbuka gratis untuk Edisi Komunitas MongoDB, tetapi dengan fungsionalitas tingkat perusahaan tambahan. Ini dirancang dengan beberapa peningkatan besar pada pengaturan server MongoDB default.

Ini memberikan kinerja tinggi, keamanan yang ditingkatkan, dan keandalan untuk kinerja optimal dengan pengurangan pengeluaran untuk hubungan vendor perangkat lunak berpemilik.

Server Percona untuk Fitur Penting MongoDB

Edisi Komunitas MongoDB adalah inti dari server Percona mengingat bahwa itu sudah merupakan fitur penting seperti skema fleksibel, transaksi terdistribusi, keakraban dokumen JSON dan ketersediaan tinggi asli. Selain itu, Server Percona untuk MongoDB mengintegrasikan fitur-fitur penting berikut yang memungkinkannya memenuhi aspek-aspek yang telah kami sebutkan di atas:

  • Cadangan Panas
  • Enkripsi data saat istirahat
  • Pembukuan Audit
  • Mesin Memori Percona
  • Otentikasi LDAP Eksternal dengan SASL
  • Integrasi Vault HashiCorp
  • Pembuatan profil kueri yang disempurnakan

Cadangan Terbaru 

Server Percona untuk MongoDB membuat cadangan data fisik pada server yang berjalan di latar belakang tanpa penurunan operasi yang nyata. Ini dapat dicapai dengan menjalankan perintah createBackup sebagai administrator pada database admin dan menentukan direktori cadangan.

> use admin

switched to db admin

> db.runCommand({createBackup: 1, backupDir: "/my/backup/data/path"})

{ "ok" : 1 }

Bila Anda menerima { "ok" :1 } maka pencadangan berhasil. Jika tidak, jika misalnya Anda menentukan jalur direktori cadangan kosong, Anda mungkin menerima respons kesalahan yaitu:

{ "ok" : 0, "errmsg" : "Destination path must be absolute" }

Memulihkan cadangan mengharuskan seseorang untuk menghentikan instance mongod terlebih dahulu, membersihkan direktori data, menyalin file dari direktori, lalu memulai kembali layanan mongod. Ini dapat dilakukan dengan menjalankan perintah di bawah ini

$ service mongod stop && rm -rf /var/lib/mongodb/* && cp --recursive /my/backup/data/path /var/lib/mongodb/ && service mongod start

Anda juga dapat menyimpan cadangan dalam format arsip jika menggunakan server Percona untuk MongoDB 4.2.1-1 

> use admin

> db.runCommand({createBackup: 1, archive: "path/to/archive.tar" })

Anda juga dapat mencadangkan langsung ke AWS S3 menggunakan pengaturan default atau dengan lebih banyak konfigurasi. Untuk cadangan bucket S3 default:

> db.runCommand({createBackup:1,  s3:{bucket:"backup", path:"newBackup"}})

Enkripsi Data saat Istirahat

MongoDB versi 3.2 memperkenalkan enkripsi data saat tidak digunakan untuk mesin penyimpanan WiredTiger guna memastikan bahwa file data dapat didekripsi dan dibaca oleh pihak-pihak dengan kunci dekripsi saja. Enkripsi data saat istirahat di Percona Server untuk MongoDB diperkenalkan di versi 3.6 untuk berjalan seiring dengan enkripsi data saat antarmuka istirahat di MongoDB. Namun versi terbaru tidak menyertakan dukungan untuk Amazon AWS dan layanan manajemen kunci KIMP.

Enkripsi juga dapat diterapkan ke file rollback saat data saat istirahat diaktifkan. Server Percona untuk MongoDB menggunakan opsi EncryptionCipherMode dengan 2 mode cipher selektif:

  1. AES256-CBC (mode sandi default)
  2. AES256-GCM

Anda dapat mengenkripsi data dengan perintah di bawah

$ mongod ... --encryptionCipherMode or 

$ mongod ... --encryptionCipherMode AES256-GCM

Kami menggunakan opsi --ecryptionKeyFile untuk menentukan jalur ke file yang berisi kunci enkripsi.

$ mongod ... --enableEncryption --encryptionKeyFile <fileName>

Pembukuan Audit

Untuk setiap sistem basis data, administrator memiliki mandat untuk melacak aktivitas yang sedang berlangsung. Di Server Percona untuk MongoDB, saat audit diaktifkan, server menghasilkan file log audit daripada yang merupakan informasi tentang berbagai aktivitas pengguna seperti otorisasi dan otentikasi. Namun, memulai server dengan pengauditan diaktifkan, log tidak akan ditampilkan secara dinamis selama runtime.

Audit Logging di MongoDB Community Edition dapat mengambil dua format data yaitu, JSON dan BSON. Namun, untuk Server Percona untuk MongoDB, logging audit terbatas pada file JSON saja. Server juga hanya mencatat perintah penting yang bertentangan dengan MongoDB yang mencatat semuanya. Karena prosedur pemfilteran di Percona sangat tidak jelas dalam hal sintaks pemfilteran, mengaktifkan log audit tanpa pemfilteran akan menawarkan lebih banyak entri yang dapat dipersempit menjadi spesifikasi sendiri.

Mesin Memori Percona

Ini adalah konfigurasi khusus mesin penyimpanan WiredTiger yang tidak menyimpan data pengguna di disk. Data sepenuhnya berada dan tersedia di memori utama kecuali untuk data diagnostik yang ditulis ke disk. Ini membuat pemrosesan data lebih cepat tetapi dengan pertimbangan bahwa Anda harus memastikan ada cukup memori untuk menyimpan kumpulan data dan server tidak boleh dimatikan. Seseorang dapat memilih mesin penyimpanan yang akan digunakan dengan perintah  --storageEngine. Data yang dibuat untuk satu mesin penyimpanan tidak dapat kompatibel dengan mesin penyimpanan lainnya karena setiap mesin penyimpanan memiliki model datanya sendiri. Misalnya untuk memilih mesin penyimpanan dalam memori. Anda pertama-tama menghentikan instance mongod yang sedang berjalan dan kemudian mengeluarkan perintah:

$ service mongod stop

$ mongod --storageEngine inMemory --dbpath <newDataDir>

Jika Anda sudah memiliki beberapa data dengan edisi Komunitas MongoDB default dan Anda ingin bermigrasi ke Percona Memory Engine, cukup gunakan utilitas mongodumb dan mongorestore dengan mengeluarkan perintah:

$ mongodump --out <dumpDir>

$ service mongod stop

$ rm -rf /var/lib/mongodb/*

$ sed -i '/engine: .*inMemory/s/#//g' /etc/mongod.conf

$ service mongod start

$ mongorestore <dumpDir>

Otentikasi LDAP Eksternal Dengan SASL

Setiap kali klien membuat permintaan baca atau tulis ke instance mongod MongoDB, mereka harus melakukan autentikasi terhadap database pengguna server MongoDB terlebih dahulu. Otentikasi eksternal memungkinkan server MongoDB untuk memverifikasi kredensial klien (nama pengguna dan kata sandi) terhadap layanan terpisah. Arsitektur otentikasi eksternal melibatkan:

  1. Server LDAP yang menyimpan semua kredensial pengguna dari jarak jauh
  2. Daemon SASL yang digunakan sebagai proxy lokal server MongoDB untuk layanan LDAP jarak jauh.
  3. Pustaka SASL:membuat data autentikasi yang diperlukan untuk klien dan server MongoDB.

Urutan sesi otentikasi

  • Klien terhubung ke instance mongod yang sedang berjalan dan membuat permintaan autentikasi PLAIN menggunakan pustaka SASL.
  • Permintaan auth kemudian dikirim ke server sebagai perintah Mongo khusus yang kemudian diterima oleh server mongod dengan payload permintaannya.
  • Server membuat beberapa sesi SASL yang diturunkan dengan kredensial klien menggunakan referensinya sendiri ke pustaka SASL.
  • Server mongod meneruskan muatan auth ke pustaka SASL yang menyerahkannya ke daemon saslauthd. Daemon meneruskannya ke LDAP dan menunggu respons YA atau TIDAK atas permintaan autentikasi dengan memeriksa apakah pengguna itu ada dan kata sandi yang dikirimkan sudah benar.
  • Saslauthd meneruskan respons ini ke server mongod melalui pustaka SASL yang kemudian mengautentikasi atau menolak permintaan tersebut.

 Berikut adalah ilustrasi untuk proses ini:

Untuk menambahkan pengguna eksternal ke server mongod:

> db.getSiblingDB("$external").createUser( {user : username, roles: [ {role: "read", db: "test"} ]} );

Namun, pengguna eksternal tidak dapat memiliki peran yang ditetapkan dalam database admin.

Integrasi Vault HashiCorp

HashCorp Vault adalah produk yang dirancang untuk mengelola rahasia dan melindungi data sensitif dengan menyimpan secara aman dan mengontrol akses ke informasi rahasia secara ketat. Dengan versi Percona sebelumnya, kunci enkripsi data saat istirahat disimpan secara lokal di server di dalam file kunci. Integrasi dengan HashCorp Vault mengamankan kunci enkripsi jauh lebih baik.

Profil Kueri yang Disempurnakan

Pembuatan profil berdampak pada penurunan performa database, terutama jika ada begitu banyak kueri yang dikeluarkan. Server Percona untuk MongoDB hadir dengan membatasi jumlah kueri yang dikumpulkan oleh profiler basis data sehingga mengurangi dampaknya terhadap kinerja.

Kesimpulan

Percona Server for MongoDB adalah open source yang disempurnakan dan database yang sangat skalabel yang dapat bertindak sebagai pengganti drop-in yang kompatibel untuk MongoDB Community Edition tetapi dengan sintaks dan konfigurasi yang serupa. Hal ini meningkatkan keamanan data yang ekstensif terutama satu saat istirahat dan kinerja database ditingkatkan melalui penyediaan mesin Server Percona, membatasi tingkat profil di antara fitur-fitur lainnya.

Server Percona untuk MongoDB didukung penuh oleh ClusterControl sebagai opsi untuk penerapan.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Antarmuka mongo

  2. Luwak tidak menyimpan objek bersarang

  3. Memasukkan data ke array bersarang di mongodb

  4. Proyeksikan item pertama dalam larik ke bidang baru (agregasi MongoDB)

  5. Cara menulis kueri gabungan di mongoDB