1. Ikhtisar
Seringkali, kami merasa sulit untuk memutuskan database non-relasional sebagai penyimpanan data utama untuk aplikasi kami.
Dalam artikel ini, kita akan menjelajahi dua database non-relasional yang populer, Redis dan MongoDB.
Pertama, kita akan melihat sekilas fitur yang ditawarkan oleh Redis dan MongoDB. Kemudian, kita akan membahas kapan harus menggunakan Redis atau MongoDB dengan membandingkannya satu sama lain.
2. Redis
Redis adalah penyimpanan struktur data dalam memori yang menawarkan serangkaian fitur yang kaya. Ini berguna sebagai cache, perantara pesan, dan antrian .
2.1. Fitur
- Antarmuka baris perintah khusus – redis-cli
- Menyimpan pasangan nilai kunci dan mendukung struktur data seperti daftar, kumpulan, dan hash
- Dapat menyimpan nilai hingga ukuran 512MB
- Memungkinkan untuk memublikasikan dan berlangganan pesan menggunakan antrean pub/sub pesan
- Dukungan geospasial dengan memberikan perintah khusus untuk mengelola data geospasial waktu nyata
- Mengizinkan eksekusi skrip LUA
- Menawarkan berbagai klien untuk teknologi populer
- Mendukung IoT dan perangkat yang disematkan
- Dukungan Data Musim Semi
- Dukungan Spring Cache menggunakan klien Java seperti Redisson
2.2. Pemasangan
Kami dapat mengunduh server Redis terbaru dari situs web resmi dan menginstalnya:
$ wget http://download.redis.io/releases/redis-6.0.9.tar.gz
$ tar xzf redis-6.0.9.tar.gz
$ cd redis-6.0.9
$ make
3. MongoDB
MongoDB adalah database dokumen NoSQL yang menyimpan informasi dalam struktur dokumen mirip JSON. Ini berguna sebagai penyimpanan data tanpa skema untuk aplikasi yang berubah dengan cepat, pembuatan prototipe, dan startup dalam fase desain dan implementasi .
3.1. Fitur
- Menawarkan antarmuka baris perintah interaktif MongoDB Shell (mongosh ) untuk melakukan operasi administratif dan meminta/memperbarui data
- Struktur kueri berbasis JSON dengan dukungan gabungan
- Mendukung berbagai jenis penelusuran seperti penelusuran berbasis geografis, penelusuran grafik, dan penelusuran teks
- Mendukung transaksi ACID multi-dokumen
- Dukungan Data Musim Semi
- Tersedia dalam edisi komunitas, perusahaan, dan cloud (MongoDB Atlas)
- Berbagai driver untuk teknologi utama seperti C++, Java, Go, Python, Rust, dan Scala
- Menyediakan GUI untuk menjelajahi dan memanipulasi data melalui Kompas MongoDB
- Menawarkan representasi visual data menggunakan Bagan MongoDB
- Konektor MongoDB BI menyediakan koneksi ke BI dan platform analitik
3.2. Pemasangan
Kita dapat mendownload server MongoDB terbaru atau, jika menggunakan macOS, kita dapat menginstal edisi komunitas secara langsung menggunakan Homebrew:
brew tap mongodb/brew
brew install [email protected]
4. Kapan Menggunakan Redis?
4.1. Caching
Redis memberikan kinerja caching terbaik di kelasnya dengan memberikan waktu respons sub-milidetik pada item yang sering diminta .
Selain itu, ini memungkinkan pengaturan waktu kedaluwarsa pada tombol menggunakan perintah seperti EXPIRE , MATI , dan PEXPIRE .
Pada saat yang sama, kita dapat menggunakan PERSIST perintah untuk menghapus batas waktu dan mempertahankan pasangan nilai kunci, menjadikannya ideal untuk cache.
4.2. Penyimpanan Data Fleksibel
Redis menyediakan berbagai struktur data seperti string, list, set, dan hash untuk memutuskan bagaimana menyimpan dan mengatur data kita. Oleh karena itu, Redis memberi kita kebebasan penuh atas implementasi struktur database.
Namun, mungkin juga memerlukan waktu lama untuk memikirkan desain DB. Demikian pula, membangun dan memelihara struktur bagian dalam skema menggunakan Redis dapat menjadi tantangan.
4.3. Penyimpanan Data Kompleks
Demikian pula, dengan kombinasi daftar, kumpulan, dan hash, kita dapat mengimplementasikan struktur data yang kompleks seperti antrian, larik, kumpulan yang diurutkan, dan grafik untuk penyimpanan kami.
4.4. Obrolan, Antrian, dan Perantara Pesan
Redis dapat memublikasikan dan berlangganan pesan menggunakan antrean pesan pub/sub dengan pencocokan pola . Dengan demikian, Redis dapat mendukung aplikasi obrolan dan umpan media sosial secara real-time.
Demikian pula, kita dapat menerapkan antrian ringan menggunakan struktur data daftar . Selain itu, daftar Redis mendukung operasi atom dan menawarkan kemampuan pemblokiran, sehingga cocok untuk menerapkan perantara pesan.
4.5. Penyimpanan Sesi
Redis menyediakan penyimpanan data dalam memori dengan kemampuan persistensi, menjadikannya kandidat yang baik untuk menyimpan dan mengelola sesi untuk aplikasi web/seluler.
4.6. IoT dan Sistem Tertanam
Sesuai dengan dokumentasi resmi Redis, versi yang lebih baru mulai dari 4 dan 5 mendukung prosesor ARM dan Raspberry Pi .
Selain itu, ini berjalan di Android, dan ada upaya untuk memasukkan Android sebagai platform yang didukung secara resmi.
Jadi, Redis terlihat ideal untuk IoT dan sistem tertanam, diuntungkan oleh jejak memorinya yang kecil dan persyaratan CPU yang rendah.
4.7. Pemrosesan Waktu Nyata
Sebagai struktur data dalam memori yang sangat cepat, kami dapat menggunakannya untuk aplikasi pemrosesan waktu nyata.
Misalnya, Redis dapat secara efisien melayani aplikasi yang menawarkan fitur seperti peringatan harga saham, papan peringkat, dan analitik waktu nyata.
4.8. Aplikasi Geospasial
Redis menawarkan struktur data dalam memori yang dibuat khusus, Geo Set – dibangun di atas set yang diurutkan – untuk mengelola indeks geospasial. Juga, ia menyediakan perintah geo tertentu seperti GEOADD , GEOPOS , dan GEORADIUS untuk menambahkan, membaca, dan menganalisis data geospasial.
Oleh karena itu, kami dapat membangun aplikasi geospasial waktu nyata dengan fitur berbasis lokasi seperti waktu berkendara dan jarak tempuh menggunakan Redis .
5. Kapan Menggunakan MongoDB?
5.1. Kueri Dinamis
MongoDB menawarkan seperangkat alat kueri yang kuat. Selain itu, ia menyediakan berbagai skema kueri fleksibel seperti penelusuran berbasis geografis, penelusuran grafik, dan penelusuran teks untuk pengambilan data yang efisien.
Pada saat yang sama, dengan dukungan kueri terstruktur JSON, MongoDB tampaknya menjadi pilihan yang lebih baik untuk skenario di mana pencarian data dan analitik adalah aktivitas sehari-hari.
5.2. Skema yang Berubah dengan Cepat
MongoDB dapat membantu dalam desain dan fase implementasi awal, di mana kami memerlukan perubahan cepat pada skema kami. Pada saat yang sama, tidak membuat asumsi pada data yang mendasarinya, dan mengoptimalkan dirinya sendiri tanpa memerlukan skema.
5.3. Pembuatan Prototipe dan Hackathon
Dengan mengikuti struktur dokumen mirip JSON, MongoDB memungkinkan pembuatan prototipe cepat, integrasi cepat dengan saluran front-end, dan hackathon .
Pada saat yang sama, ini dapat berguna untuk tim junior yang tidak ingin berurusan dengan kerumitan RDBMS.
5.4. Katalog
Dengan menyediakan skema dinamis yang menggambarkan dirinya sendiri, MongoDB mempermudah penambahan produk, fitur, dan rekomendasi untuk katalog seperti e-niaga, pengelolaan aset, dan inventaris.
Kami juga dapat menggunakan kueri ekspresif di MongoDB untuk fitur seperti penelusuran dan analitik lanjutan dengan mengindeks bidang atau kumpulan bidang dokumen terstruktur JSON.
5.5. Aplikasi Seluler
Struktur dokumen JSON MongoDB memungkinkan penyimpanan berbagai jenis data dari berbagai perangkat bersama dengan indeks geospasial.
Selain itu, skalabilitas horizontal dengan sharding asli memungkinkan penskalaan aplikasi seluler dengan mudah. Oleh karena itu, MongoDB dapat melayani banyak pengguna, memproses petabyte data, dan mendukung ratusan ribu operasi per detik, menjadikannya pilihan yang layak untuk mendukung aplikasi seluler.
5.6. Aplikasi Kaya Konten
Tidak mudah untuk menggabungkan berbagai konten dalam RDBMS untuk aplikasi kaya konten modern. Di sisi lain, MongoDB memungkinkan penyimpanan dan penyajian konten yang kaya seperti teks, audio, dan video .
Selain itu, kita dapat dengan mudah menyimpan file yang lebih besar dari 16MB secara efisien menggunakan MongoDB GridFS . Ini memungkinkan mengakses sebagian file besar tanpa memuat seluruh file ke dalam memori.
Selain itu, secara otomatis menyinkronkan file dan metadata kami di semua server. Akibatnya, MongoDB tampaknya menjadi pilihan yang lebih cocok untuk mendukung aplikasi kaya konten.
5.7. Aplikasi Game
Mirip dengan aplikasi seluler dan kaya konten, game juga membutuhkan penskalaan besar-besaran dan struktur data dinamis. Dengan demikian, MongoDB dapat menjadi pilihan yang menjanjikan untuk aplikasi game.
5.8. Layanan Database Cloud Global
MongoDB Atlas tersedia di beberapa layanan cloud seperti AWS, Google Cloud, dan Azure . Selain itu, dengan mekanisme replikasi dan failover bawaan, ia menawarkan sistem terdistribusi yang sangat tersedia. Oleh karena itu, kami dapat dengan cepat menyebarkan dan mengelola database dan menggunakannya sebagai layanan database cloud global.