MongoDB adalah database Berorientasi Objek Dokumen yang termasuk dalam kategori database NoSQL. Ini memungkinkan manipulasi objek terstruktur dalam format BSON (binary JSON) tanpa skema yang telah ditentukan sebelumnya
Anda memerlukan MongoDB saat membangun sistem yang perlu mendukung sejumlah besar pembaca di database;
Pada 2019, MongoDB memiliki pangsa pasar 24. 6% dalam basis data
Kami berada di tahun 2022, dan ini adalah database NoSQL yang paling banyak digunakan. Perusahaan seperti Barclays, Uber, Lyft, Accenture, CircleCI, dan Segmen menggunakannya untuk menangani aplikasi mereka yang paling menuntut di area seperti IoT, Game, Logistik, Perbankan, e-Commerce, dan Manajemen Konten
Instalasi
MongoDB memiliki dua edisi. Edisi Komunitas dan edisi Server
Edisi komunitas menyediakan fitur yang cukup untuk aplikasi kecil dan menengah
Di antara fitur-fitur ini, kami dapat mencantumkan yang berikut ini
- Model dokumen yang fleksibel
- Pengindeksan untuk membuat kueri kami lebih cepat
- Agregasi real-time memberikan cara ampuh untuk mengakses dan menganalisis data Anda
- Replikasi bermanfaat bagi mereka yang bekerja dalam sistem terdistribusi
- Skalabilitas horizontal dengan sharding asli
Edisi Perusahaan memiliki semua fitur edisi komunitas plus
- Audit memungkinkan administrator dan pengguna melacak aktivitas sistem untuk penyebaran dengan beberapa pengguna dan aplikasi. Dengan kata lain, Anda dapat memiliki riwayat operasi CRUD, perubahan skema, Otentikasi, dan Otorisasi
- Mesin Penyimpanan Dalam Memori
- Autentikasi Proksi LDAP dan Otorisasi LDAP
- Otentikasi Kerberos
Saat saya menulis artikel ini, kami berada di versi 6. 0, dan kami akan menggunakan edisi komunitas yang gratis dan cukup untuk kasus penggunaan kami
Ikuti tutorial instalasi di website MongoDB sesuai dengan sistem operasi Anda. Setelah selesai, kita dapat melanjutkan dengan langkah-langkah di bawah ini
Untuk pengguna mac dengan prosesor Intel, berikut adalah perintah untuk dijalankan
# Install XCode Command Line Tools xcode-select --install # download the official Homebrew formulae for MongoDB and Database tools brew tap mongodb/brew # Verify that your system meets all the installation prerequisites brew tap | grep mongodb # Install MongoDB brew install mongodb-community@6.0 # Start MongoDB as a MacOS service brew services start mongodb/brew/mongodb-community # Start Mongo Shell to make sure everything works mongos --versionFile konfigurasi terletak di. /usr/local/etc/mongod.conf
Buat pengguna dan basis data
Kami menggunakan shell MongoDB untuk terhubung ke database. Otentikasi dinonaktifkan, dan Anda dapat terhubung dengan pengguna root
Jalankan perintah di bawah ini untuk terhubung ke MongoDB menggunakan Mongo Shell
mongosh _Berikut adalah beberapa perintah yang dapat Anda jalankan
- Lihat semua database. mongosh _0
- Pilih basis data. mongosh _1
- Lihat koleksi database. mongosh _2
Bekerja tanpa autentikasi tidak apa-apa untuk lingkungan pengembangan atau pengujian. Namun, saat Anda dalam produksi dengan data pelanggan disimpan di dalamnya, Anda wajib membatasi akses ke database
- Mengidentifikasi semua pengguna yang terhubung ke database;
- Batasi tindakan yang dapat dilakukan oleh pengguna yang diautentikasi dalam database;
Peran bawaan
MongoDB hadir dengan peran bawaan yang akan membantu menentukan batasan di seluruh basis data. Gambar di bawah menunjukkan peran yang tersedia
Anda dapat membatasi penggunaan peran ini, misalnya
- Peran baca untuk Ilmuwan Data yang perlu membaca data untuk menghasilkan statistik
- ReadAnyDatabase untuk ilmuwan Data yang perlu mengumpulkan data dari banyak database untuk menghasilkan statistik
- readWrite dan dbAdmin untuk backend aplikasi web dengan satu database. DBAdmin berguna saat Anda menggunakan ORM yang membuat koleksi dalam database dari model kelas/entitas Anda
💡
Peran yang disebutkan di atas dibuat dengan menggabungkan peran lain yang juga dapat diberikan kepada pengguna
Kasus penggunaan
Bayangkan kita memiliki seorang pekerja yang akan melakukan backup database kita secara berkala
Menurut tabel peran di atas, kita perlu membuat pengguna dengan root peran agar pekerja dapat mencadangkan dan memulihkan DB kita, tetapi itu terlalu banyak karena kita juga memberikan semua akses ke pengguna ini
Untuk menghindarinya, Anda hanya dapat memberikan peran
mongosh
3 dan
mongosh
4 kepada pengguna ini
Ingatlah hal ini saat Anda perlu memberikan peran khusus kepada pengguna
Anda juga dapat membuat peran khusus dengan menggabungkan banyak peran bawaan
Aktifkan autentikasi
Sebelum itu, kita perlu membuat user dengan password;
Di dalam shell Mongo, jalankan perintah di bawah ini
use admin db.createUser({ user: "rootUser", pwd: "rootUserPwd", roles: ["root"]})Kami memilih database mongosh _5 dan kami membuat pengguna bernama rootUser dengan kata sandi mongosh 6 dan akhirnya, memberinya peran mongosh 7
Keluar dari Mongo Shell dengan mengetik mongosh 8
Untuk mengaktifkan otentikasi, buka file konfigurasi /usr/local/etc/mongod.conf, cari properti use admin db.createUser({ user: "rootUser", pwd: "rootUserPwd", roles: ["root"]}) 0 dan atur nilainya menjadi use admin db.createUser({ user: "rootUser", pwd: "rootUserPwd", roles: ["root"]}) 1
security: authorization: enabledSimpan file, lalu keluar dan mulai ulang server MongoDB
brew services restart mongodb-communitySeperti yang ditunjukkan gambar, kami mendapatkan kesalahan jika kami membuat pengguna dengan peran
Autentikasi pengguna
Berikut adalah perintah untuk terhubung dengan pengguna di instance MongoDB
mongosh --host localhost --port 27017 --username "rootUser" --password "rootUserPwd" --authenticationDatabase "admin"Anda juga dapat menggunakan string koneksi untuk mengautentikasi
mongosh "mongodb://rootUser:rootUserPwd@localhost:27017/admin"Sekarang kita akan membuat pengguna dan memberinya peran use admin db.createUser({ user: "rootUser", pwd: "rootUserPwd", roles: ["root"]}) 2 dan use admin db.createUser({ user: "rootUser", pwd: "rootUserPwd", roles: ["root"]}) 3 pada database baru bernama use admin db.createUser({ user: "rootUser", pwd: "rootUserPwd", roles: ["root"]}) 4
Kami akan terhubung dengan pengguna ini dan membuat koleksi bernama use admin db.createUser({ user: "rootUser", pwd: "rootUserPwd", roles: ["root"]}) 5 dan memastikan kami dapat menulis dan membaca data
use blog db.createUser({ user: "blogUser", pwd: "blogUserPwd", roles: [{ role: "dbAdmin", db: "blog" }, { role: "readWrite", db: "blog" } ]}) exitPengguna sekarang dibuat. Mari kita lanjutkan dengan langkah-langkah berikut
mongosh "mongodb://blogUser:blogUserPwd@localhost:27017/blog" use blog db.createCollection("posts") show collections db.posts.insertOne({ title: "Mongo Auth", readCount: 0, tags: ["nosql", "db"] }) db.posts.find() db.posts.deleteMany({ "title" : "Mongo Auth" }) db.posts.find()Kami mendapatkan output berikut
Bungkus
MongoDB tersedia di sistem operasi utama. Muncul dengan banyak peran bawaan yang dapat Anda gunakan untuk membatasi tindakan yang dapat dilakukan pengguna di database. Otentikasi dinonaktifkan secara default, dan Anda dapat mengaktifkannya dengan mengedit file konfigurasi
Saya merekomendasikan untuk mengaktifkan autentikasi, bahkan di lingkungan pengembangan dan pengujian
Ikuti saya di Twitter atau berlangganan buletin saya untuk menghindari ketinggalan posting yang akan datang dan tip dan trik yang sesekali saya bagikan