SQL: PostgreSQL
- Status
- Memuat...
- Jumlah judul
- —
- Endpoint
/api/sql/books
Buku terbaru (JSON dari API)
—
LibraryKu adalah katalog buku untuk perpustakaan kampus. Data judul, penulis, kategori, tahun terbit, dan stok tersimpan di database (PostgreSQL atau MongoDB) dan dilayani lewat REST API Flask, sehingga katalog dan dashboard memakai data yang sama.
Data dapat disimpan di dua jenis database: PostgreSQL (SQL) dan MongoDB (NoSQL). Lihat perbandingannya.
Dihitung langsung dari tabel books di PostgreSQL lewat API Flask. Database aktif: PostgreSQL. Ganti database.
Setiap buku punya judul, penulis, kategori, tahun terbit, dan jumlah stok. Pustakawan tidak perlu lagi mencatat di buku tulis atau lembar kerja terpisah.
Pengunjung membuka Katalog, mengetik judul atau nama penulis, lalu menyaring berdasarkan kategori. Stok setiap buku terlihat langsung.
Menambah, mengubah, dan menghapus buku dipusatkan di halaman Dashboard, terpisah dari halaman yang dilihat pengunjung.
Koleksi SQL (PostgreSQL) dan NoSQL (MongoDB) disimpan terpisah. Pilih salah satu di Katalog atau Dashboard, lalu bandingkan cara kerjanya.
Cari berdasarkan judul atau penulis, lalu saring menurut kategori.
Sumber data: PostgreSQL (SQL)
Memuat koleksi...
Tambah, ubah, dan hapus buku. Setiap perubahan langsung tersimpan di PostgreSQL.
Melihat data terbuka untuk semua pengunjung. Menambah, mengubah, dan menghapus data memerlukan login dashboard (nama pengguna dan kata sandi); tanpa login permintaan ditolak.
| Judul dan penulis | Kategori | Tahun | Stok | Aksi |
|---|
LibraryKu menyimpan koleksi yang sama di dua jenis database yang terpisah. Halaman ini membandingkan cara kerjanya dengan data dan kode dari aplikasi ini.
/api/sql/booksBuku terbaru (JSON dari API)
—
/api/nosql/booksBuku terbaru (JSON dari API)
—
Kedua database terpisah: tidak ada sinkronisasi otomatis, jadi jumlah dan isinya boleh berbeda.
| Aspek | SQL: PostgreSQL 16 | NoSQL: MongoDB 7.0 |
|---|---|---|
| Model data | Tabel dengan baris dan kolom (relasional) | Dokumen BSON/JSON di dalam koleksi |
| Skema | Tetap: tipe kolom dan CHECK ada di init.sql | Fleksibel; aplikasi memvalidasi bentuk dokumen sebelum menyimpan |
| Identitas | id integer otomatis | _id ObjectId, dikirim sebagai string 24 karakter |
| Baca satu buku | SELECT ... FROM books WHERE id = %s | find_one({"_id": ObjectId(id)}) |
| Tambah | INSERT INTO books (...) VALUES (...) | insert_one({...}) |
| Ubah | UPDATE books SET ... WHERE id = %s | find_one_and_update({"_id": ...}, {"$set": {...}}) |
| Hapus | DELETE FROM books WHERE id = %s | delete_one({"_id": ObjectId(id)}) |
| Perlindungan input | Query berparameter (%s) | ID divalidasi 24 heksadesimal; nilai pengguna tidak pernah dipakai sebagai operator query |
| Penyimpanan | Volume postgres_data | Volume mongo_data |
| Cocok untuk | Data terstruktur, relasi antartabel, transaksi | Data yang bentuknya bervariasi atau bersarang |
Ilustrasi bentuk, bukan data yang tersimpan. Untuk data yang tersimpan lihat bagian "Data nyata" di atas.
SQL: satu baris tabel books
id | title | author | category | year | stock 7 | Dasar Basis Data | Sari Dewi| Teknologi | 2024 | 3
NoSQL: satu dokumen di koleksi books
{
"_id": ObjectId("507f1f77bcf86cd799439011"),
"title": "Dasar Basis Data",
"author": "Sari Dewi",
"category": "Teknologi",
"year": 2024,
"stock": 3
}Mengirim satu permintaan pemanasan lalu 10 permintaan GET daftar buku ke tiap database dan mencatat waktu bolak-balik di browser Anda. Hasilnya hanya milik sesi ini dan bukan benchmark: jumlah data, VM, dan beban komputer memengaruhinya.
| Database | Median | Tercepat | Terlama | Sampel |
|---|---|---|---|---|
| Belum diukur. | ||||
Aplikasi pengelolaan perpustakaan untuk Project 1 mata kuliah Cloud Computing.
LibraryKu dibuat untuk mempraktikkan aplikasi web berbasis container: operasi CRUD (tambah, baca, ubah, hapus) yang dijalankan secara lokal memakai Docker Compose. Studi kasusnya perpustakaan dan platformnya Docker. Mode SQL memakai PostgreSQL, mode NoSQL memakai MongoDB. Penugasan resmi memakai satu kombinasi kasus per kelompok; mode NoSQL adalah pengembangan tambahan yang dapat didemonstrasikan terpisah.
localhost.frontendMenyajikan halaman ini dan menjadi router mode: /api/sql/* (dan alamat lama /api/books) ke Flask SQL, /api/nosql/* ke Flask NoSQL.backend atau Flask NoSQL backend-nosqlPort 5000, hanya di jaringan Docker. Memeriksa data lalu menjalankan perintah ke database masing-masing.database atau MongoDB mongodbTidak dibuka ke host. Data di volume postgres_data dan mongo_data; MongoDB berada di jaringan internal nosql_network.app_network, dan MongoDB hanya lewat nosql_network yang bersifat internal.Satu berkas compose.yaml mendefinisikan lima service (frontend, backend SQL, PostgreSQL, backend NoSQL, MongoDB), dua jaringan, dan dua volume. Compose menyalakan database lebih dulu, menunggu health check, lalu backend. Data buku tetap ada saat container dihentikan dan dinyalakan lagi, selama volume tidak dihapus.
Alamat GET bisa dibuka di browser. POST, PUT, dan DELETE diuji lewat Postman atau curl.
GET/api/sql/healthStatus API dan koneksi PostgreSQLGET/api/nosql/healthStatus API dan koneksi MongoDBGET/api/sql/booksDaftar buku di PostgreSQL (JSON)GET/api/nosql/booksDaftar buku di MongoDB (JSON)GET/api/{sql|nosql}/books/{id}Satu buku berdasarkan idPOST/api/{sql|nosql}/booksTambah buku (badan JSON)PUT/api/{sql|nosql}/books/{id}Ubah data bukuDELETE/api/{sql|nosql}/books/{id}Hapus bukuGET/api/booksAlamat lama, tetap ke PostgreSQL (kompatibilitas)