15%

Hemat 15% di Semua Layanan Hosting

Uji kemampuanmu dan dapatkan Diskon pada paket hosting apa saja

Gunakan kode:

Skills
Memulai
01.11.2024
2 +1

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

FiturMongoDB (NoSQL)SQL Tradisional
Model DataDokumen fleksibel (BSON)Schema tetap (tabel/baris)
SkalabilitasHorizontal (sharding)Terutama vertikal
Perubahan SchemaTanpa schema, dinamisMemerlukan migrasi
Bahasa QueryMQL kaya + aggregationSQL
Terbaik UntukData dinamis, tidak terstrukturData terstruktur, relasional
Performa pada Skala BesarSangat baik dengan shardingDapat 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(), dan skip()
  • 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 update

Langkah 4: Instal MongoDB

Instal versi stabil terbaru MongoDB dengan semua komponen yang diperlukan:

sudo apt install -y mongodb-org

Ini menginstal paket berikut:

  • mongod — daemon database MongoDB
  • mongos — router sharding MongoDB
  • mongosh — shell MongoDB (pengganti modern untuk shell mongo legacy)
  • Tools dan library MongoDB

Langkah 5: Mulai dan Aktifkan Layanan MongoDB

Mulai layanan MongoDB segera:

sudo systemctl start mongod

Aktifkan MongoDB untuk memulai secara otomatis saat boot sistem:

sudo systemctl enable mongod

Verifikasi bahwa MongoDB berjalan dengan benar:

sudo systemctl status mongod

Anda 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:

mongosh

Di 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.conf

Temukan bagian security dan tambahkan:

security:
  authorization: enabled

Restart MongoDB untuk menerapkan perubahan:

sudo systemctl restart mongod

Mulai 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:

mongosh

Jika autentikasi diaktifkan, hubungkan dengan kredensial:

mongosh -u adminUser -p YourStrongPasswordHere --authenticationDatabase admin

Langkah 2: Operasi Database

Daftar semua database:

show dbs

Buat 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:

db

Hapus database:

db.dropDatabase()

Langkah 3: Operasi Koleksi

Buat koleksi secara eksplisit:

db.createCollection("users")

Daftar semua koleksi dalam database saat ini:

show collections

Hapus 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 })  // Descending

Batasi 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

  1. Alokasikan RAM yang cukup — Engine penyimpanan WiredTiger MongoDB menggunakan cache in-memory. Atur cacheSizeGB ke sekitar 50% dari RAM sistem yang tersedia.
  2. Gunakan index yang sesuai — Analisis query lambat dengan db.collection.explain("executionStats") dan buat index sesuai kebutuhan.
  3. Monitor dengan MongoDB Atlas atau mongostat — Gunakan tool command-line mongostat dan mongotop untuk memonitor performa real-time.
  4. Aktifkan journaling — Journaling diaktifkan secara default dan menyediakan crash recovery; jangan nonaktifkan di produksi.
  5. Gunakan connection pooling — Konfigurasi driver MongoDB aplikasi Anda untuk menggunakan connection pooling guna mengurangi overhead koneksi.
  6. 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 -e

Tambahkan 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>&1

Memilih Paket AlexHost yang Tepat untuk MongoDB

Paket hosting yang tepat tergantung pada skala aplikasi Anda, traffic, dan persyaratan data:

Kasus PenggunaanPaket yang DirekomendasikanMengapa
Development / TestingVPS HostingCost-effective, kontrol penuh, setup mudah
Produksi Kecil hingga MenengahVPS HostingSumber daya scalable, penyimpanan SSD, akses root
Produksi Traffic TinggiDedicated ServersPerforma bare-metal, tanpa sharing sumber daya
ML/AI dengan MongoDBGPU HostingAkselerasi GPU untuk workload pemrosesan data
Web App + MongoDBVPS dengan cPanelInterface 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

15%

Hemat 15% di Semua Layanan Hosting

Uji kemampuanmu dan dapatkan Diskon pada paket hosting apa saja

Gunakan kode:

Skills
Memulai