Anda di halaman 1dari 19

Nama : Ifany Dewi Tustianti

NIM : 1197050049
Kelas : D
Mata Kuliah : Manajemen Basis Data
Dosen Pengampu : Wildan Budiawan Z,S.T.,M.Kom

Jawaban UAS

1. Jelaskan mengenai relational database, document oriented database, graph


database, dan key value database! Lengkapi dengan contoh platform!
Jawaban :
● Relational Database
Relational database adalah sekumpulan data yang telah memiliki hubungan
ditentukan sebelumnya. dalam database relational, data disimpan dalam bentuk
relasi atau tabel dua dimensi dan tiap tabel nya saling memiliki hubungan atau
memiliki keterkaitan. contoh : MySql, Postgresql, Oracle DB, SQL Server,
SQLite.
● Document Oriented Database
Document oriented database merupakan database yang tidak menggunakan
SQL dalam melakukan transaksi datanya (Nosql). penyimpanan data sistem ini
dirancang untuk menyimpan, mengambil dan mengelola informasi berorientasi
dokumen. contoh : MongoDb, Couchdb,Orientdb.
● Graph Database
database yang menggunakan struktur data graph yg memiliki komponen node,
edge dan properties untuk merepresentasikan penyimpanan data. dirancang
untuk memperlakukan suatu hubungan antara data yang menjadi sama
pentingnya dengan data itu sendiri. contoh : Neo4j
● Key Value Database
Database nilai kunci adalah tipe database non relasional yang menggunakan
metode nilai kunci sederhana untuk menyimpan data. Database nilai kunci
menyimpan data sebagai kumpulan pasangan nilai kunci di mana kunci
berfungsi sebagai pengidentifikasi unik. Baik kunci maupun nilai dapat berupa
apa saja, mulai dari objek sederhana hingga objek majemuk kompleks. contoh :
Amazon, DynamoDb.
2. Jelaskan secara rinci baik konsep dan teknis mengenai lingkungan basis data dan
korelasinya dengan virtual machine (VMWare/VirtualBox/etc), cloud computing
(AWS/Azure/etc), dan teknologi image dan container (Docker/Kubernetes/etc)!
jawaban :
● Database dengan Virtual Machine
● Virtual Machine merupakan perangkat lunak pada komputer yang memiliki
fungsi seperti komputer fisik pada umumnya dengan fitur yang lengkap seperti
aslinya. Ketika pengguna membutuhkan Virtual Machine untuk keperluan
pengembangan aplikasi maupun server database, pengguna akan kebingungan
untuk melakukan alokasi Virtual Machine. Pada akhirnya pengguna yang
membutuhkan Virtual Machine akan menghubungi System Administrator yang
mengerti tentang pengorperasian Hypervisor tertentu. Sistem akan diakses
melalui interface yang disediakan untuk pengguna untuk manajemen alokasi
Virtual Machine. Dari hasil uji coba, sistem dapat menangani permintaan
alokasi virtual machine pada hypervisor yang berbeda berdasarkan pemilihan
server terbaik. Selain dapat dapat menangani permintaan alokasi virtual machine
pada hypervisor yang berbeda, sistem mampu mengalokasikan virtual machine,
lima belas request dalam waktu hampir bersamaan.
● Database dengan cloud computing
Database komputasi awan adalah database yang biasanya berjalan pada
komputasi awan platform. pengguna dapat menjalankan database di awan secara
independen, dengan menggunakan mesin virtual gambar, atau mereka dapat
membeli akses ke layanan database yang dipelihara oleh penyedia database
awan. Cloud database dapat diakses oleh client dari cloud service yang
didistribusikan ke user melalui internet oleh cloud provider.
● Database dengan teknologi image dan container
Docker adalah sebuah aplikasi open-source yang berfungsi sebagai wadah untuk
menyatukan file-file yang dibutuhkan sebuah software. Data yang dikumpulkan
ini nantinya akan menjadi satu kesatuan data yang lengkap dan bisa berjalan
sesuai dengan fungsi. Dengan docker, pemindahan file-file atau image dari
komputer lokal ke server live seperti VPS juga jadi lebih mudah. Arsitektur pada
Docker menggunakan client dan server, yang mana docker client mengirimkan
request ke docker daemon untuk untuk membangun, mendistribusikan dan
menjalankan container docker. Keduanya (docker client dan docker daemon)
dapat berjalan pada sistem yang sama. Antara docker client dan docker daemon
berkomunikasi via socket menggunakan RESTful API.
3. Jelaskan berbagai fitur keamanan (authorization, authentication, transaction
control, replication) dari MongoDB!
jawaban :
● Confidential Network
MongoDB hanya mengizinkan pengguna untuk terhubung melalui antarmuka
yang ditentukan pada port tertentu di mana instans MongoDB tersedia. Ini
dilakukan untuk mengurangi risiko paparan dan memastikan hanya pengguna
terpercaya yang memiliki akses. Kerahasiaan jaringan ini dapat dicapai dengan
menggunakan dua rute.
● Authentication & Authorization
MongoDB tidak menyediakan autentikasi dalam konfigurasi shared kecuali
dijalankan dalam mode set mandiri atau replika, juga tanggung jawab keamanan
sepenuhnya berada di tangan pengembang. Setiap pengguna secara default
memiliki izin untuk mengakses seluruh database, terlebih lagi setiap pengguna
dengan akses administrator memiliki hak baca/tulis lengkap untuk database
lengkap.
Proksi terbalik dapat dikonfigurasi menggunakan REST API untuk menentukan
izin berbutir halus yang ditambahkan ke otentikasi.
4. Install/jalankan service MongoDB lalu lakukan hal-hal berikut:
Analisis proses bisnis.
Jawab :
Tema : penyewaan Kost an
Database yang tersedia terdiri dari 3 collection yaitu Sewa, Kost dan User.
Collection sewa terdiri dari nama, tipe kamar, harga sewa dan lama sewa. Collection
Kost terdiri dari tipe kamar, jumlah kamar dan harga sewa. Collection User terdiri dari
nama, jenis kelamin dan umur. Alur bisnis yang pertama user menginputkan nama, jenis
kelamin dan umur untuk data penyewaan.setelah menginputkan nama, jenis kelamin
dan umur. Setelah itu, user akan mengetahui tipe kamar, jumlah kamar dan harga sewa
kost tersebut. admin akan mengecek ketersediaan kamar melalui data yang tersedia di
Collection Kost. Selanjutnya jika user sudah melakukan fiksasi penyewaan kost, admin
akan melakukan pencatatan data dengan mencantumkan nama, tipe kamar, harga sewa
dan lama sewa. Setelah itu, admin melakukan update data ketersediaan kamar di
collection kost.
Dibangun dengan javascript dan dengan framework javascript yaitu node js
yang diintegrasikan dengan database Mongodb melalui docker dengan interface API
Postman untuk mengeksekusi collection yang tersedia.
Database
Kost.js
const mongoose = require("mongoose")
const Kost = mongoose.model("Kost",{
tipe_kamar : {
type : String,
required : true,

},
jumlah_kamar : {
type : String,
required : true,
},
harga_sewa : {
type : String,
required : true,
}

})

module.exports = Kost

Sewa.js
const mongoose = require("mongoose")
const Sewa = mongoose.model("Sewa",{
nama : {
type : String,
required : true,
},
tipe_kamar : {
type : String,
required : true,
},
harga_sewa : {
type : String,
required : true,
},
lama_sewa : {
type : String,
required : true,
}
})
module.exports = Sewa

User.js
const mongoose = require("mongoose")
const User = mongoose.model("User", {
nama : {
type : String,
required : true,
},
jenis_kelamin : {
type : String,
required : true,
},
umur : {
type : String,
required : true,
}
})
module.exports = User

Set data dummy dan CRUD

Collection Sewa
Post Sewa
Method post digunakan untuk memasukan data ke database pada collection Sewa
Get Sewa
Method Get digunakan untuk menampilkan data dari collection sewa yang sudah di input dan
sudah tersedia di database

Delete Sewa
Method Delete digunakan untuk menghapus data dari collection sewa, data dihapus
berdasarkan id dari data yang sudah tersedia, admin hanya perlu menginputkan id maka data
akan terhapus.
Update Sewa
Method update digunakan untuk melakukan pembaruan data yang sudah tesimpan sebelumnya

Data sebelumnya :

Proses update :
 Masukan id yang akan di update.
 Masukan data yang akan diperbarui

 Klik send dan data akan terupdate


Cek data apakah sudah terupdate atau belum di method get

Data berhasil di update.


Collection User

Post User
Method post digunakan untuk memasukan data ke database pada collection User

Get user
Method Get digunakan untuk menampilkan data dari collection user yang sudah di input dan
sudah tersedia di database
Delete user
Method Delete digunakan untuk menghapus data dari collection user, data dihapus berdasarkan
id dari data yang sudah tersedia, admin hanya perlu menginputkan id maka data akan terhapus.

Update User
Method update digunakan untuk melakukan pembaruan data yang sudah tesimpan sebelumnya

Data sebelumnya :
Proses update :
 Masukan id yang akan di update.
 Masukan data yang akan diperbarui

 Klik send dan data akan terupdate

Cek data apakah sudah terupdate atau belum di method get

Data berhasil di update.

Collection Kost

Post Kost
Method post digunakan untuk memasukan data ke database pada collection kost
Get Kost
Method Get digunakan untuk menampilkan data dari collection kost yang sudah di input dan
sudah tersedia di database

Delete Kost
Method Delete digunakan untuk menghapus data dari collection kost, data dihapus berdasarkan
id dari data yang sudah tersedia, admin hanya perlu menginputkan id maka data akan terhapus.
Update Kost
Method update digunakan untuk melakukan pembaruan data yang sudah tesimpan sebelumnya

Data sebelumnya :

Proses update :
 Masukan id yang akan di update.
 Masukan data yang akan diperbarui

 Klik send dan data akan terupdate


Cek data apakah sudah terupdate atau belum di method get

Data berhasil di update.

Source Code
App.js
const Kost = require("./models/Kost.js")
const User = require ("./models/User.js")
const Sewa = require("./models/Sewa.js")
const mongoose = require("mongoose")
const express = require("express")
const bodyParser = require("body-parser")
const { connected } = require("process")
const { userInfo } = require("os")
const { required } = require("nodemon/lib/config")
const app = express()
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({ extended: true }))
//Post Kost
app.post("/kost", (req,res)=>{
Kost.insertMany({
tipe_kamar : req.body.tipe_kamar,
jumlah_kamar : req.body.jumlah_kamar,
harga_sewa : req.body.harga_sewa
},(error, data)=>{
if(error){
return res.json({
error : "error nih",
message : error
})
}
else{
return res.json({
result : data
})
}
})

})
//get kost
app.get("/kost", (req,res)=>{
Kost.find((error,data)=>{
if(error){
return res.json({
message : error
})
}
else{
return res.json({
result:data
})
}
})
})
//post user
app.post("/user", (req,res)=>{
User.insertMany({
nama : req.body.nama,
jenis_kelamin : req.body.jenis_kelamin,
umur : req.body.umur,
},(error, data)=>{
if(error){
return res.json({
message : error
})
}
else {
return res.json({
result : data
})
}
})
})
//get user
app.get("/user", (req,res)=>{
User.find((error,data)=>{
if(error){
return res.json({
message : error
})
}
else{
return res.json({
result:data
})
}
})
})
//post sewa
app.post("/sewa", (req,res)=>{
Sewa.insertMany({
nama : req.body.nama,
tipe_kamar : req.body.tipe_kamar,
harga_sewa : req.body.harga_sewa,
lama_sewa : req.body.lama_sewa
},(error, data)=>{
if(error){
return res.json({
error : "error nih",
message : error
})
}
else{
return res.json({
result : data
})
}
})

})
//get sewa
app.get("/sewa", (req,res)=>{
Sewa.find((error,data)=>{
if(error){
return res.json({
message : error
})
}
else{
return res.json({
result:data
})
}
})
})
//delete kost
app.delete('/kost/delete/:_id', (req, res) => {
Kost.deleteOne({
_id: req.params._id
}, (error, kost) => {
if (error) {
return res.json({
status: 'Error',
message: error
})
}

if (kost.deletedCount === 0) {
return res.json({
status: 'Error',
message: 'Data not found.'
})
}

res.json({
status: 'Success',
message: 'Data deleted.',
data: kost
})
})
})
//delete sewa
app.delete('/sewa/delete/:_id', (req, res) => {
Sewa.deleteOne({
_id: req.params._id
}, (error, sewa) => {
if (error) {
return res.json({
status: 'Error',
message: error
})
}

if (sewa.deletedCount === 0) {
return res.json({
status: 'Error',
message: 'Data not found.'
})
}

res.json({
status: 'Success',
message: 'Data deleted.',
data: sewa
})
})
})
//delete user
app.delete('/user/delete/:_id', (req, res) => {
User.deleteOne({
_id: req.params._id
}, (error, user) => {
if (error) {
return res.json({
status: 'Error',
message: error
})
}

if (user.deletedCount === 0) {
return res.json({
status: 'Error',
message: 'Data not found.'
})
}

res.json({
status: 'Success',
message: 'Data deleted.',
data: user
})
})
})
//update kost
app.put('/kost/update/:_id', (req, res) => {
var _id = req.params._id

Kost.findByIdAndUpdate(_id, req.body, { useFindAndModify: false })


.then(kost => {
if (!kost) {
return res.json({
status: 'Error',
message: 'Data not found.'
})
}

res.json({
status: 'Success',
message: 'kost has been updated!'
})
})
})
//update user
app.put('/user/update/:_id', (req, res) => {
var _id = req.params._id

User.findByIdAndUpdate(_id, req.body, { useFindAndModify: false })


.then(user => {
if (!user) {
return res.json({
status: 'Error',
message: 'Data not found.'
})
}

res.json({
status: 'Success',
message: 'User has been updated!'
})
})
})
//update Sewa
app.put('/sewa/update/:_id', (req, res) => {
var _id = req.params._id

Sewa.findByIdAndUpdate(_id, req.body, { useFindAndModify: false })


.then(sewa => {
if (!sewa) {
return res.json({
status: 'Error',
message: 'Data not found.'
})
}

res.json({
status: 'Success',
message: 'Sewa has been updated!'
})
})
})
//koneksi mongodb
var connect = mongoose.connect("mongodb://localhost:27017/example",{
useNewUrlParser: true,
useUnifiedTopology: true
})
//listen
app.listen(3000,function(){
console.log("listening at http://localhost:3000");
})

Anda mungkin juga menyukai