Sistem Manajemen Basis Data
1. Instalasi dan
Konfigurasi Database Server
a. Latar Belakang
Dalam pengelolaan data yang efisien, penggunaan server database menjadi krusial untuk menyimpan, mengelola, dan mengakses data secara terstruktur. Instalasi dan konfigurasi server database diperlukan untuk memastikan sistem berjalan optimal, aman, dan dapat diakses sesuai kebutuhan pengguna. Proses ini mencakup pemilihan perangkat lunak database (MySQL, PostgreSQL, MongoDB, dll.), instalasi pada server, pengaturan koneksi, serta konfigurasi keamanan dan performa agar database dapat melayani permintaan dengan cepat dan andal.
b. Problem yang Diangkat
·
Merubah
port dari default 3306 menjadi 3309.
·
Menyesuaikan
innodb_buffer_pool_size dr default 16M (menjadi 25% dari RAM)
·
Melakukan
perubahan terhadap password root.
c. Solusi/Skenario Aktivitas
·
Lakukan
instalasi database mysql dari awal sampai akhir.
·
Lakukan
perubahan perubahan pada variable berikut (dokumentasikan before dan after nya)
·
port
dari default 3306 menjadi 3309.
·
innodb_buffer_pool_size
dr default 16M (menjadi 25% dari RAM )
·
lakukan
perubahan terhadap password root.
·
Semua
Langkah-langkah konfigurasi diatas, lakukan dengan command prompt.
d. Pembahasan
·
Database
Relasional dan Unrelasional
Database
relasional adalah sistem manajemen basis data yang menyimpan dan mengorganisir
data dalam bentuk tabel yang memiliki hubungan satu sama lain melalui kunci
(key). Database ini menggunakan Structured Query Language (SQL) untuk manipulasi
dan pengelolaan data. Database non-relasional adalah sistem manajemen basis
data yang tidak menggunakan tabel sebagai struktur utama untuk menyimpan data. Biasanya,
database ini digunakan untuk menangani data dalam skala besar, data tidak
terstruktur, atau semi-terstruktur.
Contoh Database Relasional:
Ø
MySQL
– Open-source RDBMS yang banyak digunakan untuk aplikasi web.
Ø
PostgreSQL
– RDBMS yang lebih fleksibel dan mendukung fitur-fitur geospasial.
Ø
Oracle
Database – RDBMS komersial yang banyak digunakan di perusahaan besar.
Contoh Database Non-Relasional:
Ø
MongoDB
– Database berbasis dokumen yang menyimpan data dalam format JSON/BSON.
Ø
Redis
– Database key-value yang sangat cepat dan sering digunakan untuk caching.
Ø
Cassandra
– Database column-store yang digunakan untuk sistem terdistribusi dengan volume
data besar.
e. Instalisasi dan Konfigurasi MYSQL
Instalasi MySQL dilakukan dengan mengikuti langkah-langkah dari situs resmi Apache Friends. Setelah instalasi berhasil, dilakukan perubahan konfigurasi berikut:
·
Mengubah
Port Default
Ø
Default:
3306 → Diubah menjadi 3309.
Ø
Dilakukan
dengan mengedit file my.ini pada direktori instalasi MySQL.
·
Menyesuaikan
innodb_buffer_pool_size
Ø
Default:
16M → Diubah menjadi 25% dari RAM (contoh: 4GB untuk RAM 16GB).
Ø
Perintah:
SET GLOBAL
innodb_buffer_pool_size = 4294967296;
SHOW VARIABLES LIKE
'innodb_buffer_pool_size';
·
Mengubah
Password Root
Ø
Default:
root → Diubah menjadi 123.
Ø
Perintah:
ALTER USER
'root'@'localhost' IDENTIFIED BY '123';
·
Pembuatan
Database Baru
Ø
Format:
kelompok_AB_nama_mhs
Ø
Perintah:
CREATE DATABASE
kelompok_AB_nama_mhs;
f. Bukti Dukung
·
Tampilan
awal MySQL setelah instalasi.
·
Konfigurasi
port sebelum dan sesudah perubahan.
Sebelum:
Sesudah:
·
Nilai
innodb_buffer_pool_size sebelum dan sesudah perubahan.
Sebelum:
Sesudah:
g. Kesimpulan
Instalasi dan konfigurasi database server MySQL bertujuan untuk meningkatkan keamanan, performa, dan fleksibilitas dalam pengelolaan data. Dengan mengubah port default, menyesuaikan `innodb_buffer_pool_size`, serta memperbarui password root, sistem menjadi lebih aman dan optimal sesuai kebutuhan. Langkah-langkah ini memastikan bahwa database dapat berjalan dengan lebih efisien, mendukung akses data yang lebih cepat, serta meningkatkan stabilitas sistem dalam jangka panjang.
h. Refrensi
·
Install
dan Konfigurasi Database Server Debian 9
https://www.awonapa.com/2021/11/install-dan-konfigurasi-database-server.html
·
Konfigurasi
Database Server
https://danarweb.blogspot.com/2017/03/konfigurasi-database-server-mysql-pada.html
· Mysql Documentation
2. Manajemen User, Role
a. Latar Belakang
Dalam pengelolaan basis data, pengaturan pengguna, peran (role), hak akses, dan pemantauan aktivitas menjadi faktor penting untuk menjaga keamanan dan efisiensi sistem. MySQL menyediakan mekanisme kontrol akses yang memungkinkan administrator untuk menentukan siapa yang dapat mengakses database, tindakan yang dapat mereka lakukan, serta mencatat aktivitas pengguna untuk audit dan pemeliharaan. Praktikum ini bertujuan untuk memahami konsep manajemen user, pemberian role dan privilege, serta implementasi monitoring aktivitas dalam MySQL guna meningkatkan keamanan dan efektivitas sistem database.
b. Problem yang Diangkat
·
Cara
membuat dan menghapus user dengan aman di MySQL.
·
Cara
mengelola hak akses (privilege) agar hanya pengguna tertentu yang bisa
melakukan operasi tertentu.
·
Cara
menerapkan role untuk mempermudah administrasi hak akses.
·
Cara
memastikan pengguna hanya memiliki hak akses yang telah ditentukan.
·
Cara
memonitor aktivitas pengguna di dalam MySQL untuk tujuan audit dan keamanan.
c. Solusi/Skenario Aktivitas
·
Manajemen
akun pengguna
Yang harus diperhatikan dalam manajemen pengguna antara
lain
Ø
Pembuatan
user
Ø
Penghapusan
user
Ø
Otentikasi
dua faktor (2FA)→ menggunakan kombinasi username, password, dan token keamanan
·
Manajemen
hak akses atau privilege pengguna
Role??
Privilege??
Ø
Membuat
pengguna
CREATE USER 'user_example'@'localhost' IDENTIFIED BY
'password';
Ø
Memberikan
privilege
GRANT SELECT, INSERT ON
database_example.* TO 'user_example'@'localhost';
Ø
Membuat
role
CREATE ROLE
'role_example';
Ø
Memberikan
privilege ke role
GRANT SELECT ON database_example.* TO 'role_example';
Ø
Menetapkan
role ke pengguna
GRANT 'role_example' TO 'user_example'@'localhost';
Ø
Menerapkan
perubahan
FLUSH PRIVILEGES;
·
Manajemen
role untuk memudahkan manajemen hak akses,
MySQL tidak
mendefinisikan "role" dalam cara yang sama seperti sistem manajemen
database lain seperti PostgreSQL atau SQL Server. Sebaliknya, MySQL mengelola
hak akses melalui sistem privilege yang dapat diterapkan secara
langsung pada
pengguna. Namun, mulai dari MySQL 8.0, dukungan untuk role telah diperkenalkan,
memungkinkan DBA untuk mendefinisikan set hak akses yang
dapat dengan
mudah diterapkan pada pengguna. Tidak ada jumlah "role" baku yang
biasa digunakan karena role dapat disesuaikan sesuai kebutuhan spesifik
organisasi atau aplikasi
·
Manajemen
monitoring akses dan aktivitas pengguna
Dalam proses
monitoring, seorang DBA harus mampu melakukan hal-hal berikut
ini:
Ø
Identifikasi
Query: Mengenal pasti jenis query yang dijalankan, apakah itu
SELECT, INSERT, UPDATE, atau DELETE.
Ø
Waktu
Eksekusi: Memantau kapan query dijalankan untuk mengidentifikasi pola aktivitas.
Ø
Pengguna:
Mengetahui pengguna mana yang menjalankan query untuk melacak akses dan potensi
aktivitas tidak sah.
Ø
Sumber
Akses: Memperhatikan dari mana query dijalankan (misalnya, host atau aplikasi)
untuk keperluan audit keamanan.
Ø
Perubahan
Data: Monitoring perubahan data yang dilakukan melalui INSERT, UPDATE, dan
DELETE untuk memastikan integritas data.
d. Pembahasan
·
Manajemen
akun pengguna
CREATE USER 'abc'@'localhost' IDENTIFIED BY
'password123';
Membuat akun pengguna dengan kata sandi yang sama format
pembuatan username adalah sebagai berikut CREATE USER 'user_example'@'localhost'
IDENTIFIED BY 'password';
·
Manajemen
hak akses atau privilege pengguna
Membuat role dengan CREATE ROLE. Memberikan hak akses
tertentu kepada role menggunakan GRANT.
e. Bukti Dukung
·
Hasil
pembuatan user
·
Hasil
penghapusan user
·
Hasil
pemberian role
·
Hasil
monitoring aktivitas
f. Kesimpulan
Manajemen pengguna dan role di MySQL memastikan kontrol akses yang aman dan efisien dalam database. Hak akses dapat dikelola menggunakan perintah GRANT dan REVOKE, sementara role menyederhanakan administrasi dengan memberikan izin secara terstruktur. Monitoring aktivitas pengguna mendukung audit dan keamanan dengan mencatat tindakan dalam sistem. Dengan memahami fitur-fitur ini, pengelolaan database menjadi lebih teratur, aman, dan mudah dikelola.
g. Refrensi
·
Mysql
Documentation
3. Database Performance
a. Latar Belakang
Dalam sistem basis data, performa pencarian dan pengambilan data sangat penting, terutama saat menangani jumlah data besar. Tanpa indeks, query harus memindai seluruh tabel, yang memperlambat proses dan membebani server. Penggunaan indeks membantu mempercepat pencarian, mengurangi beban komputasi, dan meningkatkan efisiensi sistem. Namun, indeks juga memiliki kelemahan, seperti peningkatan penggunaan penyimpanan dan waktu pemeliharaan. Oleh karena itu, strategi pemeliharaan basis data yang optimal diperlukan untuk memastikan kinerja sistem tetap efisien.
b. Problem yang Diangkat
Dalam pengelolaan basis data, salah satu tantangan utama adalah menjaga performa sistem ketika jumlah data terus bertambah. Tanpa mekanisme optimasi yang tepat, seperti penggunaan indeks, query dapat menjadi lambat karena harus melakukan pemindaian penuh pada tabel.
c. Solusi/Skenario
·
Impor
data ke mysql SOURCE employees.sql
·
Jalankan
query SELECT * FROM employees
·
Jalankan
query explain EXPLAIN SELECT * FROM employee WHERE first_name = ‘Georgi’;
·
Tambahkan
index ALTER TABLE employees ADD INDEX idx_full_name
(fisrt_name,
last_name);
·
Lakukan
query explain lagi untuk query diatas EXPLAIN SELECT * FROM
·
employee
WHERE first_name = 'Georgi' AND last_name = 'Bahr'
d. Pembahasan
Setelah mengimpor data selesai, melakukan uji performa query sebelum dan setelah penerapan indeks. Hasilnya menunjukkan bahwa penggunaan indeks secara signifikan meningkatkan kecepatan pencarian data, meskipun terdapat sedikit tambahan beban sistem. Selain itu, penambahan serta pembaruan kolom baru telah berhasil dilakukan sesuai dengan kebutuhan.
e. Bukti Dukung
·
Query
dengan indeks setelah di tambahkan maka query meningkat
f. Kesimpulan
Menambahkan kolom nama_departemen pada dept_manager dan dept_emp berhasil dilakukan untuk meningkatkan keterbacaan data. Gaji tertinggi di departemen d006 berhasil diidentifikasi dengan query SQL. Penambahan kolom umur pada employees memudahkan analisis berdasarkan usia karyawan. Menambahkan index (composite dan foreign key) meningkatkan efisiensi pencarian.
g. Refrensi
· Mysql Documentation
4. Database performance - tabel partisi
a. Latar Belakang
Optimasi basis data merupakan langkah penting dalam meningkatkan efisiensi pengolahan data, terutama pada sistem yang menangani volume data besar. Salah satu teknik yang digunakan adalah partisi tabel, yang membagi tabel besar menjadi beberapa bagian lebih kecil berdasarkan kriteria tertentu. Dengan partisi tabel, waktu eksekusi query dapat dipercepat karena pencarian data hanya dilakukan pada partisi yang relevan, bukan seluruh tabel. Teknik ini juga membantu dalam manajemen data, meminimalkan beban indeks, dan meningkatkan performa sistem secara keseluruhan.
b. Problem yang Diangkat
Lambatnya eksekusi query pada tabel dengan jumlah data yang sangat besar. Tanpa optimasi, MySQL harus melakukan pencarian di seluruh tabel, yang menyebabkan waktu respon menjadi lama, terutama pada operasi pencarian, penghapusan, dan pembaruan data. Selain itu, pengelolaan data historis menjadi sulit karena tabel terus bertambah besar, yang berakibat pada meningkatnya beban server dan menurunnya performa sistem.
c. Solusi/Skenario Aktivitas
·
Tabel
besar seperti tr_penjualan akan didesain ulang menjadi tr_penjualan_partisi, di
mana data akan dipartisi berdasarkan tahun transaksi menggunakan RANGE
PARTITION.
·
Data
dari tabel asli (tr_penjualan) akan dimasukkan ke dalam tr_penjualan_partisi
sesuai dengan tahun transaksi menggunakan query INSERT SELECT.
·
Dilakukan
pengujian dengan menjalankan query pencarian transaksi pada tabel sebelum dan
sesudah partisi, lalu mencatat waktu eksekusinya.
·
Hasil
eksekusi query dibandingkan untuk melihat peningkatan performa dan efisiensi
yang diperoleh dari penggunaan partisi tabel.
d. Pembahasan
Optimasi basis data diperlukan untuk meningkatkan efisiensi akses data, terutama pada tabel besar. Salah satu teknik yang digunakan adalah partisi tabel, yang membagi tabel menjadi beberapa bagian lebih kecil berdasarkan kriteria tertentu, seperti tahun transaksi. Dalam studi kasus ini, tabel transaksi (tr_penjualan) dipartisi berdasarkan tahun untuk mempercepat pencarian data. Pengujian menunjukkan bahwa query pada tabel yang dipartisi berjalan lebih cepat dibandingkan tabel tanpa partisi.
e. Bukti Dukung
f. Kesimpulan
Dari percobaan optimasi database menggunakan partisi tabel, dapat disimpulkan bahwa partisi tabel memberikan manfaat dalam pengelolaan data besar dengan membagi data ke dalam bagian yang lebih kecil, sehingga meningkatkan performa query, terutama untuk pencarian berdasarkan kolom partisi. Namun, pengujian menunjukkan bahwa tabel terpartisi dapat memiliki waktu eksekusi yang lebih lambat saat menggunakan kondisi yang tidak terkait dengan kolom partisi. Oleh karena itu, disarankan untuk menggunakan partisi pada tabel dengan volume data besar yang sering diquery berdasarkan kolom relevan, sambil mempertimbangkan jenis query yang akan dijalankan untuk strategi partisi yang optimal
g. Refrensi
·
Mysql
Documentation
5. Bottleneck pada Mysql
a. Latar Belakang
Bottleneck dalam MySQL terjadi saat kinerja database menurun karena query lambat, kurangnya indeks, atau penggunaan sumber daya yang tidak efisien. Hal ini dapat menyebabkan pemrosesan data menjadi lebih lama. Untuk mengatasinya, diperlukan optimasi seperti menambahkan indeks, menggunakan query cache, meningkatkan buffer pool, dan menulis query yang lebih efisien agar performa MySQL tetap optimal.
b. Problem yang Diangkat
·
Full
Table Scan – Query lambat karena tidak ada indeks.
·
Terlalu
Banyak Koneksi – Server terbebani dan lambat merespons.
·
Deadlock
dalam Transaksi – Transaksi terhambat karena saling mengunci.
·
Buffer
Pool Kecil – MySQL sering membaca dari disk, memperlambat kinerja.
·
SELECT
* yang Tidak Efisien– Mengambil data berlebihan, memperberat query.
c. Solusi/Skenario yang Diangkat
·
Menambahkan
Indeks pada Kolom yang Sering Digunakan dalam WHERE dan JOIN Indeks dalam MySQL
membantu mempercepat pencarian data dengan cara mengurangi jumlah baris yang
harus dipindai dalam tabel.
·
Menggunakan
Query Cache jika Memungkinkan (query_cache_type=1) Query cache menyimpan hasil
dari query yang sering digunakan, sehingga jika query yang sama dieksekusi
lagi, MySQL tidak perlu menghitung ulang hasilnya.
·
Meningkatkan
Ukuran Buffer Pool jika Menggunakan InnoDB (innodb_buffer_pool_size) InnoDB
Buffer Pool adalah tempat penyimpanan utama untuk data dan indeks yang sering digunakan.
Jika buffer pool terlalu kecil, MySQL akan sering membaca dari disk, yang memperlambat
performa.
·
Menghindari
Penggunaan SELECT *, Gunakan Hanya Kolom yang Diperlukan menggunakan SELECT *
akan mengambil semua kolom dalam tabel, termasuk yang tidak diperlukan,
sehingga memperbesar beban MySQL.
d. Pembahasan
Bottleneck dalam MySQL terjadi ketika performa database melambat akibat keterbatasan sumber daya atau query yang tidak optimal. Beberapa faktor penyebab utama meliputi full table scan, kurangnya indeks, terlalu banyak koneksi terbuka, dan penggunaan query yang tidak efisien seperti `SELECT `. Untuk mengatasi masalah ini, optimasi dapat dilakukan dengan menambahkan indeks, mengatur ukuran buffer pool, mengelola koneksi database dengan baik, serta menggunakan query yang lebih spesifik dan optimal. Dengan strategi ini, performa MySQL dapat lebih cepat dan stabil, sehingga meningkatkan efisiensi sistem.
e. Bukti Dukung
f. Kesimpulan
Bottleneck dalam MySQL dapat menyebabkan penurunan performa akibat query yang tidak optimal, kurangnya indeks, dan keterbatasan sumber daya. Optimasi seperti penggunaan indeks, pengelolaan koneksi, dan peningkatan buffer pool dapat meningkatkan efisiensi dan kecepatan database.
g. Refrensi
Komentar
Posting Komentar