Panduan Lengkap MongoDB: Instalasi, Fitur & Praktik Terbaik di VPS
MongoDB adalah salah satu database NoSQL paling powerful dan banyak diadopsi di dunia — dan ada alasan bagusnya. Arsitektur yang fleksibel dan berorientasi dokumen menjadikannya pilihan utama bagi developer yang membangun aplikasi modern yang intensif data dan perlu scale dengan cepat. Baik Anda menjalankan startup MVP atau mengelola infrastruktur tingkat enterprise, MongoDB yang dipasangkan dengan lingkungan hosting berkinerja tinggi memberikan kecepatan, fleksibilitas, dan keandalan yang aplikasi Anda butuhkan.
Dalam panduan komprehensif ini, Anda akan mempelajari apa itu MongoDB, mengapa MongoDB menonjol dari database relasional tradisional, cara menginstalnya di Ubuntu, dan cara melakukan operasi penting menggunakan shell MongoDB.
Apa Itu MongoDB dan Mengapa Anda Harus Menggunakannya?
MongoDB adalah database NoSQL open-source yang berorientasi dokumen dan menyimpan data dalam dokumen yang fleksibel dan mirip JSON yang disebut BSON (Binary JSON). Tidak seperti database relasional tradisional yang mengandalkan struktur tabel-baris-kolom yang kaku, MongoDB memungkinkan setiap dokumen dalam koleksi memiliki struktur uniknya sendiri. Ini membuatnya sangat cocok untuk aplikasi dengan model data yang berkembang atau tidak dapat diprediksi.
Keuntungan Utama MongoDB Dibandingkan Database SQL Tradisional
| Fitur | MongoDB (NoSQL) | SQL Tradisional |
|---|---|---|
| Model Data | Dokumen fleksibel (BSON) | Schema tetap (tabel/baris) |
| Skalabilitas | Horizontal (sharding) | Terutama vertikal |
| Perubahan Schema | Tanpa schema, dinamis | Memerlukan migrasi |
| Bahasa Query | MQL kaya + aggregation | SQL |
| Terbaik Untuk | Data dinamis, tidak terstruktur | Data terstruktur, relasional |
| Performa pada Skala Besar | Sangat baik dengan sharding | Dapat menurun tanpa tuning |
MongoDB ideal untuk berbagai kasus penggunaan termasuk analitik real-time, sistem manajemen konten, platform e-commerce, penyerapan data IoT, backend mobile, dan aplikasi apa pun di mana struktur data kemungkinan berubah seiring waktu.
Mengapa Hosting MongoDB di VPS?
Hosting MongoDB di server virtual pribadi yang dedicated memberikan tingkat kontrol, performa, dan keamanan yang lingkungan bersama tidak dapat sediakan. Dengan paket VPS Hosting dari AlexHost, Anda mendapatkan:
- Akses root penuh untuk mengonfigurasi MongoDB persis seperti yang aplikasi Anda butuhkan
- Sumber daya RAM dan CPU dedicated untuk menangani workload baca/tulis yang menuntut
- Lingkungan terisolasi yang menghilangkan masalah “noisy neighbor” yang umum di shared hosting
- Skalabilitas vertikal dan horizontal yang seamless seiring data Anda tumbuh
- Aturan firewall dan jaringan custom untuk mengunci akses database
Untuk aplikasi dengan persyaratan throughput yang sangat tinggi, Dedicated Servers AlexHost menawarkan performa bare-metal dengan isolasi hardware penuh — standar emas untuk deployment MongoDB produksi.
Bagian 1: Memahami Arsitektur Inti MongoDB
Sebelum terjun ke instalasi, penting untuk memahami bagaimana MongoDB mengorganisir dan mengelola data.
Dokumen
Unit data fundamental dalam MongoDB adalah dokumen — objek mirip JSON yang dapat berisi field bersarang, array, dan tipe data campuran. Sebagai contoh:
{
"_id": ObjectId("64b1f2c3e4b0a1d2e3f4a5b6"),
"name": "Alice",
"age": 30,
"email": "alice@example.com",
"address": {
"city": "New York",
"zip": "10001"
},
"tags": ["developer", "mongodb", "nodejs"]
}Koleksi
Koleksi mengelompokkan dokumen, yang analog dengan tabel dalam database SQL. Namun, tidak seperti tabel SQL, koleksi tidak memberlakukan schema tetap — dokumen dalam koleksi yang sama dapat memiliki field yang sama sekali berbeda.
Database
Server MongoDB dapat hosting beberapa database, masing-masing berisi set koleksi sendiri. Ini memudahkan untuk mengisolasi data untuk aplikasi atau lingkungan berbeda (misalnya, development, staging, production) pada instance server tunggal.
Bagian 2: Fitur Utama MongoDB
2.1 Penyimpanan Berorientasi Dokumen
Model dokumen MongoDB adalah salah satu fitur paling powerful-nya. Karena setiap dokumen dapat memiliki struktur berbeda, developer dapat mengembangkan schema database secara organik seiring persyaratan aplikasi berubah — tanpa menjalankan migrasi ALTER TABLE yang kompleks atau mengalami downtime.
Fleksibilitas ini sangat berharga dalam lingkungan pengembangan agile di mana persyaratan bergeser sering, atau dalam aplikasi yang mengagregasi data dari berbagai sumber heterogen.
2.2 Skalabilitas Horizontal dengan Sharding
Salah satu kemampuan yang mendefinisikan MongoDB adalah dukungan native-nya untuk skalabilitas horizontal melalui sharding. Sharding mendistribusikan data di beberapa server (disebut shards), memungkinkan MongoDB menangani dataset dan tingkat throughput yang akan membanjiri mesin tunggal.
Setiap shard memegang subset data total, dan router mongos mengarahkan query ke shard yang sesuai berdasarkan shard key yang dapat dikonfigurasi. Arsitektur ini memungkinkan skalabilitas hampir linear seiring volume data dan beban query Anda tumbuh.
Untuk lingkungan produksi traffic tinggi, hosting MongoDB di Dedicated Servers AlexHost memastikan bahwa setiap shard memiliki akses ke sumber daya hardware berkinerja tinggi yang terisolasi.
2.3 Ketersediaan Tinggi dengan Replica Sets
MongoDB menyediakan fault tolerance built-in melalui replica sets — grup instance MongoDB yang mempertahankan salinan identik dari data yang sama. Replica set terdiri dari:
- Satu node primary yang menerima semua operasi write
- Satu atau lebih node secondary yang mereplikasi data dari primary
- Arbiter opsional yang berpartisipasi dalam pemilihan tanpa menyimpan data
Jika node primary gagal, replica set secara otomatis memilih primary baru dari secondary yang tersedia, meminimalkan downtime dan memastikan durabilitas data.
2.4 Bahasa Query Powerful dan Aggregation Framework
MongoDB Query Language (MQL) MongoDB mendukung set operasi kaya termasuk:
- Penyaringan level field dengan operator perbandingan, logis, dan elemen
- Proyeksi untuk mengembalikan hanya field spesifik
- Pengurutan dan pagination dengan
sort(),limit(), danskip() - Pencarian teks dengan full-text indexes
- Query geospatial untuk aplikasi berbasis lokasi
Aggregation Framework menyediakan pendekatan berbasis pipeline untuk transformasi dan analisis data, mendukung operasi seperti $match, $group, $sort, $project, $lookup (joins), $unwind, dan banyak lagi — menawarkan fungsionalitas sebanding dengan operasi SQL GROUP BY dan JOIN yang kompleks.
2.5 Indexing Fleksibel
MongoDB mendukung berbagai tipe index untuk mengoptimalkan performa query:
- Index single-field untuk query sederhana
- Index compound untuk query multi-field
- Index multikey untuk field array
- Index teks untuk pencarian full-text
- Index geospatial untuk query lokasi
- Index TTL untuk kedaluwarsa dokumen otomatis (berguna untuk data session atau log)
Bagian 3: Menginstal MongoDB di Ubuntu (Langkah demi Langkah)
Bagian ini memandu Anda melalui instalasi MongoDB lengkap di Ubuntu 20.04 LTS (Focal Fossa). Langkah-langkah ini dioptimalkan untuk lingkungan VPS AlexHost dengan akses root atau sudo.
Prasyarat
- Server Ubuntu 20.04 LTS
- Akun pengguna dengan privilege
sudo - Keakraban dasar dengan command line Linux
Jika Anda belum memiliki server, Anda dapat memutar VPS Ubuntu yang fully configured dalam hitungan menit dengan AlexHost VPS Hosting.
Langkah 1: Impor Kunci Publik GPG MongoDB
Paket MongoDB ditandatangani dengan kunci GPG untuk memverifikasi keasliannya. Impor kunci dengan perintah berikut:
wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | sudo apt-key add -Anda harus melihat OK sebagai output, mengkonfirmasi kunci berhasil diimpor.
Langkah 2: Tambahkan Repository MongoDB
Buat file list untuk menambahkan repository MongoDB resmi ke sumber paket sistem Anda:
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list> Catatan: Perintah ini menambahkan repository MongoDB 6.0. Sesuaikan nomor versi jika Anda memerlukan rilis berbeda.
Langkah 3: Perbarui Database Paket
Refresh indeks paket lokal Anda untuk menyertakan repository MongoDB yang baru ditambahkan:
sudo apt updateLangkah 4: Instal MongoDB
Instal versi stabil terbaru MongoDB dengan semua komponen yang diperlukan:
sudo apt install -y mongodb-orgIni menginstal paket berikut:
mongod— daemon database MongoDBmongos— router sharding MongoDBmongosh— shell MongoDB (pengganti modern untuk shellmongolegacy)- Tools dan library MongoDB
Langkah 5: Mulai dan Aktifkan Layanan MongoDB
Mulai layanan MongoDB segera:
sudo systemctl start mongodAktifkan MongoDB untuk memulai secara otomatis saat boot sistem:
sudo systemctl enable mongodVerifikasi bahwa MongoDB berjalan dengan benar:
sudo systemctl status mongodAnda harus melihat output yang menunjukkan bahwa layanan adalah active (running). Jika MongoDB berhasil dimulai, Anda juga akan melihat baris yang mengkonfirmasi bahwa layanan mendengarkan di port 27017.
Langkah 6: Amankan Instalasi MongoDB Anda (Direkomendasikan)
Sebelum menggunakan MongoDB di lingkungan produksi atau yang menghadap internet, sangat penting untuk mengaktifkan autentikasi. Secara default, MongoDB tidak memerlukan username atau password.
Buat pengguna administratif:
mongoshDi dalam shell MongoDB:
use admin
db.createUser({
user: "adminUser",
pwd: "YourStrongPasswordHere",
roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ]
})Aktifkan autentikasi dengan mengedit file konfigurasi MongoDB:
sudo nano /etc/mongod.confTemukan bagian security dan tambahkan:
security:
authorization: enabledRestart MongoDB untuk menerapkan perubahan:
sudo systemctl restart mongodMulai saat ini, semua koneksi ke MongoDB akan memerlukan kredensial yang valid.
Bagian 4: Menggunakan MongoDB — Perintah dan Operasi Penting
Dengan MongoDB terinstal dan aman, mari kita jelajahi operasi paling penting yang akan Anda gunakan sehari-hari.
Langkah 1: Akses Shell MongoDB
Hubungkan ke instance MongoDB Anda menggunakan shell mongosh modern:
mongoshJika autentikasi diaktifkan, hubungkan dengan kredensial:
mongosh -u adminUser -p YourStrongPasswordHere --authenticationDatabase adminLangkah 2: Operasi Database
Daftar semua database:
show dbsBuat atau beralih ke database:
use mydatabase> MongoDB membuat database secara otomatis saat Anda pertama kali menyisipkan data ke dalamnya.
Periksa database yang saat ini dipilih:
dbHapus database:
db.dropDatabase()Langkah 3: Operasi Koleksi
Buat koleksi secara eksplisit:
db.createCollection("users")Daftar semua koleksi dalam database saat ini:
show collectionsHapus koleksi:
db.users.drop()Langkah 4: Operasi CRUD Dokumen
#### Sisipkan Dokumen
Sisipkan satu dokumen:
db.users.insertOne({
name: "Alice",
age: 30,
email: "alice@example.com",
role: "developer"
})Sisipkan beberapa dokumen sekaligus:
db.users.insertMany([
{ name: "Bob", age: 25, email: "bob@example.com", role: "designer" },
{ name: "Carol", age: 35, email: "carol@example.com", role: "manager" },
{ name: "Dave", age: 28, email: "dave@example.com", role: "developer" }
])#### Baca Dokumen
Temukan semua dokumen dalam koleksi:
db.users.find()Temukan dokumen dengan kondisi spesifik:
db.users.find({ role: "developer" })Temukan dokumen dengan beberapa kondisi:
db.users.find({ role: "developer", age: { $gte: 28 } })Kembalikan hanya field spesifik (proyeksi):
db.users.find({ role: "developer" }, { name: 1, email: 1, _id: 0 })Temukan satu dokumen:
db.users.findOne({ name: "Alice" })Urutkan hasil:
db.users.find().sort({ age: 1 }) // Ascending
db.users.find().sort({ age: -1 }) // DescendingBatasi dan paginate hasil:
db.users.find().limit(10).skip(20) // Page 3 with 10 results per page#### Perbarui Dokumen
Perbarui satu dokumen:
db.users.updateOne(
{ name: "Alice" },
{ $set: { age: 31, role: "senior developer" } }
)Perbarui beberapa dokumen:
db.users.updateMany(
{ role: "developer" },
{ $set: { department: "Engineering" } }
)Tingkatkan field numerik:
db.users.updateOne(
{ name: "Bob" },
{ $inc: { age: 1 } }
)#### Hapus Dokumen
Hapus satu dokumen:
db.users.deleteOne({ name: "Dave" })Hapus beberapa dokumen yang cocok dengan kondisi:
db.users.deleteMany({ role: "designer" })Langkah 5: Indexing untuk Performa
Membuat index pada field yang sering di-query secara dramatis meningkatkan performa query.
Buat index single-field:
db.users.createIndex({ email: 1 })Buat index compound:
db.users.createIndex({ role: 1, age: -1 })Buat index unik:
db.users.createIndex({ email: 1 }, { unique: true })Daftar semua index pada koleksi:
db.users.getIndexes()Langkah 6: Aggregation Pipeline
Framework aggregation memungkinkan Anda melakukan analisis data kompleks langsung dalam MongoDB.
Contoh: Hitung pengguna berdasarkan role dan urutkan berdasarkan count:
db.users.aggregate([
{ $group: { _id: "$role", count: { $sum: 1 } } },
{ $sort: { count: -1 } }
])Contoh: Filter, group, dan hitung rata-rata usia berdasarkan role:
db.users.aggregate([
{ $match: { department: "Engineering" } },
{ $group: { _id: "$role", avgAge: { $avg: "$age" }, total: { $sum: 1 } } },
{ $sort: { avgAge: 1 } }
])Bagian 5: Konfigurasi MongoDB dan Performance Tuning
Mengonfigurasi mongod.conf
File konfigurasi utama MongoDB terletak di /etc/mongod.conf. Pengaturan utama untuk ditinjau dan dioptimalkan:
# Network settings
net:
port: 27017
bindIp: 127.0.0.1 # Restrict to localhost for security; use server IP for remote access
# Storage settings
storage:
dbPath: /var/lib/mongodb
journal:
enabled: true
wiredTiger:
engineConfig:
cacheSizeGB: 2 # Set to ~50% of available RAM
# Logging
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log
# Security
security:
authorization: enabled
# Replication (for replica sets)
replication:
replSetName: "rs0"Best Practices Performa
- Alokasikan RAM yang cukup — Engine penyimpanan WiredTiger MongoDB menggunakan cache in-memory. Atur
cacheSizeGBke sekitar 50% dari RAM sistem yang tersedia. - Gunakan index yang sesuai — Analisis query lambat dengan
db.collection.explain("executionStats")dan buat index sesuai kebutuhan. - Monitor dengan MongoDB Atlas atau mongostat — Gunakan tool command-line
mongostatdanmongotopuntuk memonitor performa real-time. - Aktifkan journaling — Journaling diaktifkan secara default dan menyediakan crash recovery; jangan nonaktifkan di produksi.
- Gunakan connection pooling — Konfigurasi driver MongoDB aplikasi Anda untuk menggunakan connection pooling guna mengurangi overhead koneksi.
- Compact koleksi secara teratur — Gunakan
db.runCommand({ compact: "collectionName" })untuk membebaskan ruang disk setelah penghapusan besar.
Bagian 6: Backup dan Restore MongoDB
Backup reguler sangat penting untuk database produksi apa pun. MongoDB menyediakan tool built-in untuk tujuan ini.
Buat Backup dengan mongodump
mongodump --uri="mongodb://adminUser:password@localhost:27017" --out=/backup/mongodb/$(date +%Y%m%d)Restore dari Backup dengan mongorestore
mongorestore --uri="mongodb://adminUser:password@localhost:27017" /backup/mongodb/20240115/Otomatisasi Backup dengan Cron
Tambahkan cron job untuk menjalankan backup secara otomatis setiap hari:
sudo crontab -eTambahkan baris berikut untuk menjalankan backup setiap hari pada pukul 2:00 AM:
0 2 * * * mongodump --uri="mongodb://adminUser:password@localhost:27017" --out=/backup/mongodb/$(date +%Y%m%d) >> /var/log/mongodb-backup.log 2>&1Memilih Paket AlexHost yang Tepat untuk MongoDB
Paket hosting yang tepat tergantung pada skala aplikasi Anda, traffic, dan persyaratan data:
| Kasus Penggunaan | Paket yang Direkomendasikan | Mengapa |
|---|---|---|
| Development / Testing | VPS Hosting | Cost-effective, kontrol penuh, setup mudah |
| Produksi Kecil hingga Menengah | VPS Hosting | Sumber daya scalable, penyimpanan SSD, akses root |
| Produksi Traffic Tinggi | Dedicated Servers | Performa bare-metal, tanpa sharing sumber daya |
| ML/AI dengan MongoDB | GPU Hosting | Akselerasi GPU untuk workload pemrosesan data |
| Web App + MongoDB | VPS dengan cPanel | Interface manajemen mudah bersama database Anda |
Untuk aplikasi yang juga memerlukan frontend web, notifikasi email, atau koneksi yang aman SSL, AlexHost menawarkan SSL Certificates dan Email Hosting untuk melengkapi stack infrastruktur Anda.
Pertanyaan yang Sering Diajukan
T: Apakah MongoDB gratis untuk digunakan?
Ya. MongoDB Community Edition gratis dan open-source di bawah Server Side Public License (SSPL). MongoDB Enterprise dan MongoDB Atlas (cloud) menawarkan fitur tambahan dengan basis berbayar.
T: Port apa yang digunakan MongoDB secara default?
MongoDB mendengarkan di port 27017 secara default. Anda dapat mengubah ini di /etc/mongod.conf.
T: Bisakah saya menjalankan MongoDB di paket shared hosting?
MongoDB memerlukan akses root atau administratif untuk menginstal dan mengonfigurasi dengan benar, yang tidak tersedia di shared hosting standar. VPS atau dedicated server diperlukan. Shared Web Hosting AlexHost lebih cocok untuk aplikasi PHP/MySQL, sementara deployment MongoDB harus menggunakan VPS atau dedicated server.
T: Bagaimana cara
