MongoDB - GridFS: Panduan untuk Pemula dalam Menyimpan Berkas Besar

Hai, para pemrogram yang sedang berkembang! Hari ini, kita akan memulai perjalanan menarik ke dunia MongoDB dan fitur yang kuatnya, GridFS. Jangan khawatir jika Anda baru dalam pemrograman – saya akan menjadi panduan teman baik Anda, menjelaskan segala sesuatunya secara langkah demi langkah. mari kita masuk ke dalam!

MongoDB - GridFS

Apa Itu GridFS dan Mengapa Anda Harus Peduli?

Imaginasi Anda sedang mengatur perpustakaan besar. Anda punya buku dalam berbagai ukuran – beberapa buku cetak kecil, beberapa ensiklopedia berat. Sekarang, bagaimana jika Anda harus menyimpan gulungan besar yang terlalu besar untuk rak manapun? Itu di mana GridFS memainkan perannya di dunia basis data.

GridFS adalah solusi MongoDB untuk menyimpan dan mengambil kembali berkas besar seperti gambar, file audio, atau video. Itu seperti memiliki ruangan khusus di perpustakaan kita untuk item yang berukuran besar.

Magi di Balik GridFS

GridFS bekerja dengan membagi berkas besar menjadi potongan kecil. Pahami ini seperti memotong gulungan panjang menjadi bagian yang dapat dikelola. Setiap potongan berukuran 255KB secara default (itu sekitar ukuran buku pendek). Potongan ini kemudian disimpan sebagai dokumen terpisah di dua koleksi:

  1. fs.files: Menyimpan metadata tentang berkas (seperti namanya, ukurannya, dll.)
  2. fs.chunks: Menyimpan konten berkas itu sendiri dalam bagian

Memulai dengan GridFS

Sebelum kita mulai menambahkan berkas ke GridFS, kita perlu mengatur lingkungan MongoDB kita. Jangan khawatir; saya akan memandu Anda!

Langkah 1: Install MongoDB

Pertama, unduh dan instal MongoDB dari situs web resmi. Itu seperti mengatur gedung perpustakaan kita sebelum kita dapat mulai menyimpan buku.

Langkah 2: Install Driver MongoDB

Kita akan menggunakan Python untuk berinteraksi dengan MongoDB. Instal driver PyMongo menggunakan pip:

pip install pymongo

Itu seperti mempekerjakan petugas perpustakaan yang bisa berbicara dalam bahasa Python dan MongoDB!

Menambahkan Berkas ke GridFS

Sekarang kita sudah mengatur perpustakaan kita, mari kita mulai menambahkan beberapa buku – atau dalam kasus kita, berkas!

Unggah Berkas Dasar

Ini adalah skrip sederhana untuk mengunggah berkas ke GridFS:

from pymongo import MongoClient
import gridfs

# Hubungkan ke MongoDB
client = MongoClient('mongodb://localhost:27017')
db = client['mydatabase']

# Buat instance GridFS
fs = gridfs.GridFS(db)

# Buka dan baca berkas
with open('my_image.jpg', 'rb') as f:
contents = f.read()

# Simpan berkas di GridFS
file_id = fs.put(contents, filename='my_image.jpg')

print(f"Berkas diunggah dengan id: {file_id}")

mari kitauraikan ini:

  1. Kita import library yang diperlukan dan menghubungkan ke basis data MongoDB kita.
  2. Kita membuat instance GridFS, yang seperti membuka pintu ke ruangan penyimpanan khusus kita.
  3. Kita membuka dan membaca berkas ('my_image.jpg' dalam kasus ini).
  4. Kita menggunakan fs.put() untuk menyimpan berkas di GridFS. Ini mengembalikan ID unik untuk berkas kita.

Menambahkan Metadata

kadang-kadang, kita ingin menambahkan informasi lebih banyak tentang berkas kita. Itu seperti menambahkan kartu deskripsi detil ke buku perpustakaan kita. Ini adalah cara kita bisa melakukannya:

file_id = fs.put(contents,
filename='my_image.jpg',
content_type='image/jpeg',
author='Jane Doe',
date_taken='2023-06-15')

Dalam contoh ini, kita menambahkan informasi ekstra seperti jenis konten, penulis, dan tanggal gambar diambil.

Unggah Berkas Besar dalam Potongan

Ingat apa yang saya katakan tentang GridFS membagi berkas menjadi potongan? Kita bisa melakukan ini secara manual untuk berkas yang sangat besar untuk menghindari masalah memori:

def upload_large_file(filepath, chunk_size=255*1024):
with open(filepath, 'rb') as f:
filename = filepath.split('/')[-1]
file_id = fs.new_file(filename=filename)

while True:
chunk = f.read(chunk_size)
if not chunk:
break
file_id.write(chunk)

file_id.close()
return file_id._id

large_file_id = upload_large_file('very_large_video.mp4')
print(f"Berkas besar diunggah dengan id: {large_file_id}")

Fungsi ini membaca berkas dalam potongan dan menulis setiap potongan ke GridFS. Itu seperti menyalin gulungan besar kita bagian per bagian.

Mengambil Berkas dari GridFS

Sekarang kita sudah menambahkan berkas, mari kita belajar bagaimana mengambil mereka:

# Ambil berkas berdasarkan ID nya
file_data = fs.get(file_id).read()

# Simpan berkas
with open('retrieved_image.jpg', 'wb') as f:
f.write(file_data)

print("Berkas diambil dan disimpan!")

Skrip ini mengambil berkas dari GridFS dan menyimpannya ke komputer kita. Itu seperti meminjam buku dari ruangan penyimpanan khusus kita!

Menampilkan Semua Berkas di GridFS

kadang-kadang, kita ingin melihat semua berkas yang kita simpan. Ini adalah cara:

for grid_file in fs.find():
print(f"Nama Berkas: {grid_file.filename}, Ukuran: {grid_file.length} byte")

Ini akan mencetak daftar semua berkas di GridFS, bersama dengan ukurannya. Itu seperti mendapatkan katalog dari semua item khusus di perpustakaan kita!

Menghapus Berkas dari GridFS

Akhirnya, mari kita belajar bagaimana menghapus berkas:

fs.delete(file_id)
print(f"Berkas dengan id {file_id} telah dihapus.")

Ini menghapus berkas dengan ID tertentu dari GridFS. Ingat, sekali dihapus, itu hilang untuk selamanya!

Kesimpulan

Selamat! Anda baru saja mengambil langkah pertama ke dunia MongoDB's GridFS. Kita telah belajar bagaimana menyimpan, mengambil, menampilkan, dan menghapus berkas besar. Ingat, GridFS adalah alat yang kuat untuk mengelola data besar, dan dengan latihan, Anda akan menjadi ahli petugas perpustakaan digital!

Berikut adalah tabel rujukan cepat dari metode GridFS utama yang kita pelajari:

Metode Deskripsi
fs.put() Menyimpan berkas baru di GridFS
fs.get() Mengambil berkas dari GridFS
fs.find() Menampilkan semua berkas di GridFS
fs.delete() Menghapus berkas dari GridFS

Terus latih, tetap bersemangat, dan coding yang gembira! Ingat, setiap ahli pernah menjadi pemula, jadi jangan takut untuk mencoba dan belajar dari kesalahan Anda. Anda sedang dalam jalannya menjadi ahli MongoDB GridFS!

Credits: Image by storyset