Introduction to Database Administration - WEEK 1
Definisi Database Administration (DBA)
Keseluruhan aktivitas teknis yang dilakukan oleh seorang Database Administrator (DBA) untuk memastikan bahwa database selalu menyala, tersedia, aman, dan beroperasi optimal saat dibutuhkan oleh sistem.
Tugas mencakup database security (keamanan), monitoring (pemantauan), troubleshooting (pemecahan masalah), dan planning for future growth (perencanaan kapasitas data di masa depan).
Peran DBA (The Roles of DBA)
Tanggung jawab utama mencakup maintenance (pemeliharaan), securing (pengamanan), dan mengoperasikan database.
DBA wajib memastikan data tersimpan dan ditarik dengan presisi, bekerja sama dengan tim developer (pengembang) untuk merancang fitur sistem, dan harus paham betul kebutuhan teknis maupun bisnis perusahaan.
Tipe-tipe DBA (The Types of DBA)
-
System Administrators:
Mengelola sistem komputer secara keseluruhan, instalasi, dan patch keamanan.
-
Database Architects:
Merancang arsitektur database sesuai kebutuhan spesifik organisasi.
-
Database Analysts:
Menganalisis data untuk menemukan tren dan pola.
-
Application DBA:
Berfokus pada pengelolaan database untuk aplikasi spesifik.
-
Task-oriented DBA:
Berfokus pada tugas khusus seperti pencadangan (backup) atau pemulihan (recovery).
-
Performance Analyst:
Fokus memantau dan menyetel (tuning) performa database.
-
Data Warehouse Administrator:
Mengelola gudang data raksasa (Data Warehouse).
Evolusi Infrastruktur Database
-
Bare-metal:
Database diinstal dan berjalan langsung pada mesin physical server (perangkat keras asli).
-
VM (Virtual Machine):
Database berjalan pada sistem operasi virtual (bayangan) yang menumpang di dalam satu server fisik.
-
Container:
Lingkungan eksekusi terisolasi dan sangat portabel (contoh: Docker). Database dibungkus bersama konfigurasinya sehingga sangat ringan, mudah dipindahkan, dan dijalankan di mana saja.
Dampak NoSQL pada DBA
NoSQL (Not Only SQL) adalah sistem database non-relasional yang dirancang khusus untuk menyimpan Big Data (data masif yang tidak terstruktur).
NoSQL memberikan keuntungan low-cost storage (penyimpanan berbiaya rendah) untuk data berjumlah raksasa. Dampaknya: Profesi DBA kini wajib menguasai pengelolaan dan keamanan infrastruktur data modern berbasis NoSQL, bukan hanya berfokus pada relasional SQL biasa.
DBeaver VS XAMPP
XAMPP adalah software bundling lokal untuk menjalankan database pada komputer sendiri (Host).
DBeaver adalah aplikasi client antarmuka tingkat profesional untuk mengeksekusi query dan mengelola database dari jarak jauh (remote).
TANYA JAWAB (Q&A) WEEK 1
Q: Apakah DBA membutuhkan lingkungan (environment) yang berbeda?
A: Ya. Lingkungan untuk pengujian kode (Test) dan lingkungan untuk produk nyata/asli yang dipakai pengguna (Production) mutlak harus dipisah secara ketat. Tujuannya adalah untuk menjamin integritas data dan mencegah gangguan performa operasional database utama saat tim sedang menguji fitur sistem baru.
Q: Apa hubungan antara profesi DBA, Data Analyst, dan Data Engineer?
- DBA: Bertugas menjamin infrastruktur database selalu stabil, aman, dan tersedia 24/7 tanpa hambatan.
- Data Engineer: Bertugas memproses data mentah menjadi data terstruktur/matang dan memindahkannya ke Data Warehouse (gudang data).
- Data Analyst: Bertugas menganalisis data matang dari Data Warehouse tersebut untuk menyajikan Data Visualization (visualisasi analitik bisnis).
Database Architecture and Configuration - WEEK 2
Anatomi MySQL
Anatomi MySQL mirip tubuh manusia, terdiri dari komponen Optimizer (otak penentu rute query paling cepat) dan Storage Engine (otot pengelola penyimpanan fisik).
Storage Engine & ACID:
Storage Engine standar bawaan adalah InnoDB. InnoDB secara absolut mendukung ACID operations (Atomicity, Consistency, Isolation, Durability) untuk menjamin transaksi aman dan data tidak terkorup akibat kegagalan sistem atau mati listrik.
Fitur MySQL
- Multiple platforms (mendukung banyak sistem operasi).
- Multithreading application (mampu memproses banyak perintah secara paralel/bersamaan efisien).
- Memory Efficiency (manajemen yang hemat RAM).
- High Scalability (mampu menampung lonjakan data berskala besar).
Parameter & Pemantauan MySQL (Query Monitoring)
SHOW VARIABLES;
SHOW BINARY LOGS;
SHOW CREATE PROCEDURE nama_prosedur;
SHOW CREATE FUNCTION nama_fungsi;
SHOW PROCESSLIST;
custom.cnf (Tuning Parameter)
Berkas teks berekstensi .cnf untuk tuning (menyetel performa) parameter mesin MySQL agar sesuai dengan kapasitas RAM server secara manual.
max_connections = 250
innodb_buffer_pool_size = 128M
performance_schema = OFF
TANYA JAWAB (Q&A) WEEK 2
Q: Apa masalah yang terjadi pada XAMPP MySQL?
A: XAMPP sangat rentan mengalami port clash (bentrok jalur koneksi jaringan) dengan aplikasi web lain. XAMPP juga memiliki skalabilitas yang buruk dan tidak aman untuk konfigurasi remote management. Oleh sebab itu, XAMPP dilarang keras untuk digunakan pada sistem Production.
Q: Sebutkan query apa saja yang membutuhkan lebih banyak pemindaian baris dan indeks!
A: Kategori query yang melakukan pencarian atau filter spesifik di dalam klausa WHERE, query yang merelasikan banyak tabel di klausa JOIN, serta query pengurutan data massal menggunakan ORDER BY.
Security Hardening & User Management - WEEK 3
Tujuan Security Hardening
- Protect sensitive data: Melindungi data rahasia/sensitif dari akses ilegal.
- Meet regulatory requirements: Memenuhi aturan standar regulasi dan hukum data pemerintah.
- Avoid financial loss due to breaches: Mencegah kerugian finansial akibat insiden peretasan.
Ancaman Umum Database
Meliputi SQL Injection, Unauthorized Access, Data breach, Denial of Service (DoS), Code Modification, dan Malicious insider.
Lapisan Keamanan MySQL (4 Lapis)
-
Authentication:
Membuktikan "siapa pengguna tersebut". Verifikasi identitas menggunakan kombinasi username, source IP address, dan password.
-
Authorization:
Membuktikan "apa yang boleh dilakukan". Pengaturan batas izin akses (permissions) terhadap tabel atau database.
-
Encryption:
Penyandian wujud data fisik melalui ilmu kriptografi agar tidak bisa dibaca tanpa kunci dekripsi.
-
Auditing:
Pelacakan seluruh rekam jejak aktivitas melalui database log (mengetahui siapa mengubah data pada jam/hari tertentu).
Query DCL (Data Control Language) Lengkap
CREATE USER 'staf_it'@'192.168.1.10' IDENTIFIED BY 'sandiKuat123';
GRANT SELECT, INSERT ON kampus_db.* TO 'staf_it'@'192.168.1.10';
REVOKE INSERT ON kampus_db.* FROM 'staf_it'@'192.168.1.10';
SHOW GRANTS FOR 'staf_it'@'192.168.1.10';
FLUSH PRIVILEGES;
DROP USER 'staf_it'@'192.168.1.10';
TANYA JAWAB (Q&A) WEEK 3
Q: Bagaimana mengatur akses 30 karyawan baru secara efisien tanpa manual satu per satu?
A: Cara mutlak yang benar dan profesional adalah menggunakan fitur ROLE (Grup Peran Hak Akses). DBA cukup membuat satu ROLE, berikan hak akses pada grup tersebut, lalu daftarkan ke-30 akun karyawan baru ke dalam grup peran tersebut agar otomatis mewarisi seluruh izin akses.
CREATE ROLE 'tim_sales';
GRANT SELECT, INSERT ON perusahaan_db.* TO 'tim_sales';
GRANT 'tim_sales' TO 'karyawan_baru_1'@'localhost';
Indexing Your Data - WEEK 4
MySQL Index & B-Trees
Index adalah struktur data internal tambahan (seperti daftar isi buku). Tujuannya mutlak untuk menghindari Full Table Scan (proses mesin membaca seluruh baris berurutan yang sangat lambat).
Algoritma standarnya adalah B-Trees (Balanced Trees), yang menyortir rentang nilai dari paling kiri ke kanan secara seimbang.
Pengecualian Tipe Index (Exceptions)
- 1. Spatial data types menggunakan struktur R-trees.
- 2. MEMORY tables mendukung penggunaan Hash indexes.
- 3. InnoDB menggunakan daftar terbalik (Inverted lists) khusus untuk FULLTEXT indexes.
Fungsi Index
- Maintaining data integrity: Menjaga data tetap unik via Primary/Unique Key.
- Optimizing data access: Mempercepat drastis durasi pencarian data pada klausa WHERE.
- Improving table joins and sorting: Mempercepat eksekusi JOIN dan ORDER BY.
Dampak DML & DISK
Perintah manipulasi data (DML) seperti INSERT, UPDATE, DELETE akan berjalan lebih lambat jika tabel memiliki Index.
Alasannya: mesin MySQL harus bekerja dua kali (memperbarui data fisik dan menyusun ulang formasi akar B-Trees). Index juga menambah beban ukuran penyimpanan pada disk (index_length membesar).
FULLTEXT Index
Sistem index spesifik berbasis inverted lists (tokenisasi kalimat). Dirancang khusus untuk memfasilitasi pencarian satu kata acak di posisi mana pun tanpa merusak jalur algoritma baca.
TANYA JAWAB (Q&A) WEEK 4
Q: Aplikasi kasir lag saat staf mencari nama 'MARY'. Bagaimana solusinya?
A: Sebelum ada index, perintah EXPLAIN menunjukkan type = ALL (Full Table Scan). Setelah kolom first_name dipasangi Index, indikator berubah menjadi type = ref, dan estimasi rows menyusut drastis ke angka satuan.
CREATE INDEX idx_first_name ON customer(first_name);
Q: Mengapa Execution Cost query mencapai 8.4? Bisakah diturunkan?
A: Execution Cost mencapai 8.4 karena mesin memfilter dua kolom (customer_id dan amount) tanpa indeks. Beban bisa diturunkan dengan menciptakan Composite Index (Indeks Gabungan).
CREATE INDEX idx_audit_finance ON payment(customer_id, amount);
Q: Apa perbedaan full text index dengan indeks biasa?
A: Index biasa (B-Trees) dirancang untuk deteksi karakter awalan murni (kiri ke kanan). LIKE '%kata%' akan melumpuhkan B-Trees. Full-Text Index membedah kalimat menjadi token mandiri, sehingga bisa melacak teks di tengah kalimat (MATCH... AGAINST).
Optimize the large Query - WEEK 5
Mengidentifikasi Bottleneck
Hambatan utama kecepatan sistem (Bottleneck) hampir 100% selalu disebabkan oleh fenomena Full Table Scan. Mendeteksi riwayat masalah ini dilakukan menggunakan perintah SHOW GLOBAL STATUS;.
SARGABLE Query (Search ARGument ABLE)
Struktur penulisan sintaks query yang benar agar Optimizer mesin menggunakan rute navigasi Index secara penuh dan terhindar dari Full Table Scan.
Golden Rule SARGABLE: Do not combine it with function. Dilarang keras membungkus nama kolom target di klausa WHERE dengan fungsi SQL (seperti YEAR, MONTH, LEFT) karena pasti mematikan Index.
Praktik Terbaik (Best Practices)
- Hindari SELECT *: Menyebabkan Memory wasting (pemborosan RAM/bandwidth) dan memperbesar risiko Full Table Scan. Selalu tulis spesifik nama kolom.
- Temporary Tables: MySQL membangun tabel dadakan saat agregasi (GROUP BY, RANGE, atau ORDER BY).
- Aturan Tuning: Parameter tmp_table_size dan max_heap_table_size mutlak harus di-set sama agar kalkulasi ditampung di RAM (MEMORY), bukan Hardisk.
Partitioning Table
Teknik rekayasa membelah fisik dari tabel masif menjadi partisi-partisi bongkahan kecil berdasarkan kolom pengikat (Partition Key), contohnya rentang bulan.
Aturan Mutlak: Saat menjalankan SELECT, UPDATE, atau DELETE, kolom Partition Key mutlak wajib masuk ke klausa WHERE agar mesin tidak memindai seluruh blok wilayah partisi.
TANYA JAWAB (Q&A) WEEK 5
Q: Perintah apa untuk memantau performa query?
A: Perintah fundamental yang wajib mutlak digunakan adalah EXPLAIN di awal penulisan query untuk membongkar Execution Plan.
Q: Apakah query ini bagus: SELECT * FROM employees WHERE YEAR(hire_date) = 1990;?
A: Sangat buruk (Bukan SARGABLE). Fungsi YEAR() merusak fungsi B-Trees. Ganti menggunakan operator rentang baku (>= dan <=).
SELECT * FROM employees WHERE hire_date >= '1990-01-01' AND hire_date <= '1990-12-31';
Advanced SQL Tuning & Performance - WEEK 6
Explain Analyze
Instrumen analisis pembedahan tingkat mahir. Tidak sekadar memprediksi, alat ini benar-benar mengeksekusi beban query di memori fisik untuk mencetak laporan Actual Time, Actual Rows, dan Loops.
Composite Index
Rancangan Index yang mengikat dua kolom atau lebih sekaligus secara berurutan. Mutlak untuk meroketkan performa jika skenario query sering mem-filter banyak kolom sekaligus di WHERE.
10 Tips Best Practices Optimization
- Optimizing queries for the query cache.
- EXPLAIN your SELECT queries.
- LIMIT 1 when getting a unique row.
- Indexing for search fields.
- Avoiding SELECT * and COUNT*.
- Always have an ID field.
- Using ENUM over VARCHAR.
- Using prepared statements.
- Splitting big DELETE/INSERT queries.
- Avoiding the delete trigger.
BLOB (Binary Large Object)
TIPE TINYBLOB/BLOB sangat stabil untuk jutaan baris. Namun wadah raksasa MEDIUMBLOB/LONGBLOB tidak disarankan karena menyebabkan degraded performance pada operasi intensif.
TANYA JAWAB (Q&A) WEEK 6
Q: Mengapa MySQL bisa lambat dengan tabel yang besar?
A: Karena kelalaian hilangnya constraint/index dan malapraktik range scans yang menyedot RAM dan memicu limitasi kelumpuhan degradasi performa.