Dosen :
Alam Rahmatulloh
Disusun Oleh :
TASIKMALAYA
2022
Setelah itu, edit file php.ini yang terletak pada folder PHP yang berada di dalam folder
XAMPP atau biasanya berada di C:\xampp\php.
Untuk mengecek apakah ekstensi php_mongodb.dll sudah terpasang atau belum,
buatlah sebuah folder di dalam XAMPP, lalu buatlah file php yang berisikan kode berikut.
<?php
phpinfo();
?>
Selanjutnya, kita kunjungi halaman php yang telah kita buat. Gambar di bawah ini
merupakan tampilan halaman web yang memuat informasi PHP, salah satunya memuat
informasi mengenai ekstensi yang dipakai. Jika kita telusuri halaman web-nya dan
menemukan mongodb, maka extension php_mongodb.dll telah berhasil terpasang.
Setelah itu, kita atur file .env dengan pengaturan sebagai berikut.
DB_CONNECTION=mongodb
DB_HOST=127.0.0.1
DB_PORT=27017
DB_DATABASE=<nama database yang diinginkan>
DB_USERNAME=
DB_PASSWORD=
Langkah ketiga untuk mengintegrasikan MongoDB ke dalam project, yaitu dengan mengubah
mysql menjadi mongodb dalam file config/database.php.
Setelah itu, masih dalam file yang sama, kita perlu mendefinisikan database
MongoDB dengan code snippet sebagai berikut ke dalam list ‘connections’.
'mongodb' => [
'driver' => 'mongodb',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', 27017),
'database' => env('DB_DATABASE'),
'username' => env('DB_USERNAME'),
'password' => env('DB_PASSWORD'),
'options' => [
// here you can pass more settings to the Mongo
Driver Manager
// see https://www.php.net/manual/en/mongodb-
driver-manager.construct.php under "Uri Options" for a list of
complete parameters that you can use
Jenssegers\Mongodb\MongodbServiceProvider::class,
Di sini, kita telah berhasil menghubungkan project Laravel kita dengan database
MongoDB.
2. Pemasangan Fungsi CRUD NoSQL dan DomPDF dalam Proyek Laravel
Pada tahapan ini, kita memasang sistem CRUD berbasis MongoDB dalam proyek
Laravel. Pertama, buatlah model Buku :
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
// use Illuminate\Database\Eloquent\Model;
use Jenssegers\Mongodb\Eloquent\Model;
Pada model Buku, kita menginisasi koneksi mongodb serta collection yang bernama
buku.
Setelah itu, kita lakukan migrasi database terlebih dahulu. Jalankan perintah :
Php artisan migrate
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Buku;
use Barryvdh\DomPDF\Facade as PDF;
}
Pada tahapan ini, kita memasang DomPDF, yang dimana kita nantinya bisa mencetak
tabel data dalam bentuk .pdf. Pertama, lakukan instalasi DomPDF dalam proyek Laravel. Ini
akan mengunduh paket dan pustaka dompdf + fontlib juga.
D:\Web\cache-mongodb-laravel\resources\views\home.blade.php
<!DOCTYPE html>
<html lang="en">
<head>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-
scale=1">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-
beta1/dist/css/bootstrap.min.css" rel="stylesheet"
integrity="sha384-
giJF6kkoqNQ00vy+HMDP7azOuL0xtbfIcaT9wjKHr8RbDVddVHyTfAAsrekwKmP1"
crossorigin="anonymous">
<!-- Font Awesome -->
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-
awesome/5.15.2/css/all.min.css" rel="stylesheet" integrity="sha512-
HK5fgLBL+xu6dm/Ii3z4xhlSUyZgTT9tuc/hSrtw6uzJOvgRr2a9jyxxT1ely+B+xFA
mJKVSTbpM/CuL7qxO8w==" crossorigin="anonymous"/>
<title>LIMAS Bookstore</title>
</head>
<body>
<nav class="navbar navbar-expand-lg navbar-dark bg-primary">
<div class="container-fluid">
<a class="navbar-brand" href="#">LIMAS Bookstore</a>
<button class="navbar-toggler" type="button" data-bs-
toggle="collapse" data-bs-target="#navbarNav" aria-
controls="navbarNav" aria-expanded="false" aria-label="Toggle
navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav">
<li class="nav-item">
<a class="nav-link active" aria-current="page"
href="#">Home</a>
</li>
</ul>
</div>
</div>
</nav>
<tbody>
@php
$no = 1
@endphp
@foreach ($buku as $key => $value)
<tr class="text-center">
<th scope="row">{{ $no++ }}</th>
<td>{{ $value->judul }}</td>
<td>{{ $value->penerbit }}</td>
<td>{{ $value->harga }}</td>
<td>
<form action="{{ route('destroy', $value->id) }}"
method="POST">
<button type="button" class="btn btn-success btn-sm"
modal.find('#harga_buku_updt').attr("value",
div.data('harga'));
});
window.setTimeout(function()
{
$(".alert").fadeTo(500, 0).slideUp(500,
function(){
$(this).remove();
});
}, 4000);
});
</script>
</body>
</html>
D:\Web\cache-mongodb-laravel\resources\views\modal\modal-update.blade.php
<div class="modal fade" id="modal-update" data-bs-backdrop="static"
data-bs-keyboard="false" tabindex="-1" aria-
labelledby="staticBackdropLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="staticBackdropLabel">Ubah Data
Buku</h5>
<button type="button" class="btn-close" data-bs-
dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<form id="frm_updt" method="post"
action="{{route('update')}}">
@csrf
@method('PUT')
<div class="row mb-3">
<label for="#" class="col-sm-3 col-form-label">Judul
Buku</label>
<div class="col-sm-9">
<input type="hidden" class="form-control" name="id"
id="id">
<input type="text" class="form-control"
name="judul_buku_updt" id="judul_buku_updt">
</div>
</div>
<div class="row mb-3">
<label for="#" class="col-sm-3 col-form-
label">Penerbit</label>
<div class="col-sm-9">
<input type="text" class="form-control"
name="penerbit_buku_updt" id="penerbit_buku_updt">
</div>
</div>
<div class="row mb-3">
<label for="#" class="col-sm-3 col-form-
label">Harga</label>
<div class="col-sm-9">
<input type="text" class="form-control"
name="harga_buku_updt" id="harga_buku_updt">
</div>
</div>
</div>
<div class="modal-footer">
<button type="submit" class="btn btn-primary">Ubah</button>
<button type="button" class="btn btn-secondary" data-bs-
dismiss="modal">Close</button>
</div>
</form>
</div>
</div>
</div>
File report.blade.php merupakan file untuk mengatur tampilan halaman .pdf yang
akan dicetak.
D:\Web\cache-mongodb-laravel\resources\views\report\report.blade.php
<!DOCTYPE html>
<html>
<head>
<title>Book Data Report</title>
</head>
<style type="text/css">
table { border: solid 1px #000; border-collapse: collapse;
width: 100%; margin-top: 40px;}
tr th { font-size: 13px; border: solid 1px #000; padding: 8px
0; text-align: center; }
td { padding: 7px 5px; font-size: 12px; border: solid 1px
#000; text-align: center; }
h2 { text-align: center; }
</style>
<body>
<h2>Book Data Report</h2>
<table>
<thead>
<tr>
<th>No</th>
<th>Judul Buku</th>
<th>Penerbit</th>
<th>Harga</th>
</tr>
</thead>
<tbody>
@php
$no = 1;
@endphp
@foreach($buku as $key => $value)
<tr>
Setelah melakukan perintah tersebut, maka kita akan melihat tampilan utama web.
Jika kita menekan tombol yang terdapat simbol pensil yang berada di dalam kolom
“Aksi”, maka akan muncul modal untuk mengupdate data yang berada di dalam baris data
tersebut.
Jika kita menekan tombol yang terdapat simbol keranjang sampah yang berada di
dalam kolom “Aksi”, maka data akan langsung terhapus.
Kita juga dapat mengecek data tersebut di dalam MongoDBCompass atau Mongosh
(MongoDB Shell).
Jika kita menekan tombol “Cetak ke PDF”, maka kita akan mengunduh file book_data_report.pdf yang
berisikan tabel data buku sesuai dengan tampilan yang telah diatur dalam file D:\Web\cache-mongodb-
laravel\resources\views\report\report.blade.php
Dari langkah-langkah yang kita lakukan sejauh ini, kita telah berhasil membangun
website yang memiliki fungsi dasar seperti CRUD dan mencetak file .pdf dari data yang ada.
Selanjutnya, kita akan mengimplementasikan sistem cache.
3. Caching
Sebelumnya, kita perlu melakukan instalasi Redis ke dalam PC kita. Redis dapat
diunduh di https://github.com/microsoftarchive/redis/releases. Kali ini, Redis yang kita
gunakan yaitu versi 3.2.100. Di sini, kita cukup unduh Redis-x64-3.2.100.msi. Setelah
diunduh, kita buka file tersebut lalu ikuti langkah-langkah sesuai dengan instruksinya.
Setelah kita berhasil dalam instalasi Redis, kita dapat menjalankan redis-server
kemudian kita jalankan redis-cli.
Instalasi Redis dalam project Laravel dapat dilakukan dengan perintah berikut ini.
Setelah itu, kita ubah juga pada bagian config/cache.php yang awalnya file menjadi
redis.
Untuk menerapkannya, kita cukup melakukan perintah berikut.
php artisan
config:cache php
artisan cache:clear
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Buku;
use Illuminate\Support\Facades\Cache;
use Barryvdh\DomPDF\Facade as PDF;
}
4. Pemasangan Laravel DebugBar untuk Melakukan Uji Coba Cache Redis
Laravel DebugBar dapat memberi kita informasi mengenai query apa saja yang telah
berjalan serta memberikan informasi mengenai response time.
Cara instalasi Laravel DebugBar ke dalam project kita adalah sebagai berikut.
Seteleah itu, kita perlu memasukkan package ke dalam label ‘providers’ yang berada
di dalam file config/app.php.
Barryvdh\Debugbar\ServiceProvider::class,
Masih dalam file yang sama, kita juga perlu memasukkan package ke dalam label ‘aliases’ yang
berada di dalam file config/app.php.
Setelah itu, kita perlu melakukan publish debugbar agar konfigurasi yang berasal dari vendor dapat
dipindahkan ke dalam konfigurasi utama project.
Setelah itu, kita dapat mencoba Laravel DebugBar yang baru saja kita pasang.
Pada gambar di bawah ini, kita dapat melihat response time serta query apa saja yang dijalankan.
5. Pengisian Data dan Pengujian Ulang Cache melalui Laravel DebugBar
Agar perubahan Response Time antara web yang menggunakan caching serta yang
tidak menggunakan caching dapat terlihat dengan jelas, di sini kita akan mencoba
memasukkan 1000 data ke dalam database MongoDB melalui file. File yang didukung oleh
MongoDB, diantaranya file yang berformat JSON dan CSV.
Pertama, kita masuk terlebih dahulu ke dalam database dan collection kita di
MongoDBCompass. Setelah itu, klik “ADD DATA” lalu klik “Import File”.
Setelah itu, kita dapat membandingkan kecepatannya.
Untuk menjalankan JMeter di Windows cukup klik dua kali jmeter.bat di dalam folder
apache-jmeter-5.4.1/bin/ atau buka command prompt dan ketik <file path>/apache-jmeter-
5.4.1/bin/jmeter.bat dan tunggu beberapa detik JMeter GUI akan diluncurkan.