Kembali ke Katalog Modul
MODUL 27 DEEP DIVE

MySQL Schema Design untuk Telemetri Sensor & Logs

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 kolom device_uuid dan created_at untuk mempercepat query ribuan kali lipat.
  • Memahami penggunaan tipe data JSON bawaan 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)?