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

        https://dev.mysql.com/doc/


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

https://dev.mysql.com/doc/


 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

         https://dev.mysql.com/doc/


 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

                        https://dev.mysql.com/doc/

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

·         Mysql Documentation

https://dev.mysql.com/doc/

 



Komentar