MODUL 27 (SPESIALIS IOT): MYSQL SCHEMA DESIGN UNTUK IOT
📌 META MODUL & PRASYARAT
- Bidang Spesialisasi: Relational Database Optimization & IoT Table Design.
- Target Pembaca: Pembelajar yang sudah menguasai PHP Backend Ingest (Modul 26).
- Learning Outcome:
- Memahami skema tabel teroptimasi untuk perangkat IoT (
devices,telemetry_logs,device_alerts). - Mampu membuat Database Indexing (
BTREE) pada kolomdevice_uuiddancreated_atuntuk mempercepat query ribuan kali lipat. - Memahami penggunaan tipe data
JSONbawaan MySQL untuk menyimpan variabel sensor dinamis. - Mampu membuat MySQL Stored Event / Partitioning untuk menghapus log otomatis.
- Estimasi Waktu Belajar: 120 Menit.
- Tingkat Kesulitan: 🟡 Menengah (Level 27 / 40).
- Prasyarat: Modul 26 (Pemrograman PHP Backend Native untuk Ingest Data IoT).
⚡ CHEAT SHEET SKEMA TABEL MYSQL IOT HIGH-PERFORMANCE
-- 1. TABEL DAFTAR PERANGKAT (DEVICES)
CREATE TABLE IF NOT EXISTS devices (
id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
uuid VARCHAR(36) NOT NULL UNIQUE,
name VARCHAR(100) NOT NULL,
location VARCHAR(150) NULL,
status ENUM('online', 'offline', 'maintenance') NOT NULL DEFAULT 'offline',
last_seen TIMESTAMP NULL DEFAULT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
INDEX idx_devices_status (status)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- 2. TABEL LOG TELEMETRI SENSOR (HIGH-THROUGHPUT)
CREATE TABLE IF NOT EXISTS telemetry_logs (
id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
device_uuid VARCHAR(36) NOT NULL,
temperature DECIMAL(5,2) NULL,
humidity DECIMAL(5,2) NULL,
payload_raw JSON NULL, -- Menyimpan sensor dinamis tambahan
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (device_uuid) REFERENCES devices (uuid) ON DELETE CASCADE,
INDEX idx_telemetry_device_time (device_uuid, created_at DESC)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
Latihan & Quiz Evaluasi Modul
Progres Quiz: 0 / 2 Soal
SOAL #1
Mengapa penambahan **INDEX** pada gabungan kolom `(device_uuid, created_at DESC)` di MySQL sangat penting untuk tabel telemetri IoT?
SOAL #2
Tipe data kolom manakah di MySQL 8+ yang sangat cocok untuk menyimpan daftar parameter sensor dinamis yang jenisnya sering berubah-ubah tanpa perlu mengubah struktur tabel?
Kunci Jawaban & Pembahasan
Kunci Jawaban: 1. b. Mempercepat pencarian data tanpa Full Table Scan, 2. b. JSON.
Apakah Anda siap lanjut ke Modul 28: Pembuatan Dashboard IoT Real-Time (Chart.js, WebSockets, Responsive UI)?
Apakah Anda siap lanjut ke Modul 28: Pembuatan Dashboard IoT Real-Time (Chart.js, WebSockets, Responsive UI)?