Skip to content

SemmiDev/iotsensor

Repository files navigation

📈 Analitik Data IoT dengan Go & ClickHouse

Proyek ini adalah contoh implementasi untuk menyimpan dan menganalisis data sensor dari perangkat IoT (Internet of Things) menggunakan Go sebagai backend dan ClickHouse sebagai database analitik berperforma tinggi.


📋 Persyaratan

Sebelum memulai, pastikan Anda telah menginstal perangkat lunak berikut di sistem Anda:

  • Docker & Docker Compose: Untuk menjalankan database ClickHouse dalam container.
  • Go: (Versi 1.20 atau lebih baru direkomendasikan).
  • k6: Sebuah tool modern untuk load testing.
  • Git: Untuk mengkloning repositori ini.
  • VS Code Extension: REST Client untuk menggunakan file playground.http.

🚀 Panduan Memulai

Ikuti langkah-langkah di bawah ini untuk menjalankan proyek secara lokal.

1. Jalankan Layanan Database

Pertama, jalankan server ClickHouse menggunakan Docker Compose. Perintah ini akan membuat dan menjalankan container di latar belakang (-d).

docker compose up -d

2. Konfigurasi Database dan Tabel

Selanjutnya, Anda perlu membuat database dan tabel yang dibutuhkan.

a. Masuk ke dalam container ClickHouse menggunakan clickhouse-client:

docker exec -it clickhouse-server clickhouse-client

b. Salin dan jalankan perintah SQL berikut di dalam clickhouse-client untuk membuat database iot_analytics dan tabel sensor_readings:

CREATE DATABASE IF NOT EXISTS iot_analytics;

CREATE TABLE IF NOT EXISTS iot_analytics.sensor_readings
(
    -- Kolom Data Utama --
    device_id       LowCardinality(String),
    timestamp       DateTime64(3, 'UTC'),
    temperature     Float64,
    humidity        Float64,

    -- Kolom ALIAS untuk optimasi query --
    event_date      Date ALIAS toDate(timestamp)

)
ENGINE = MergeTree()
PARTITION BY toYYYYMM(timestamp)
ORDER BY (device_id, timestamp);

💡 Info: Setelah selesai, Anda bisa keluar dari clickhouse-client dengan mengetik exit atau \q lalu tekan Enter.

3. Jalankan Aplikasi Go

Setelah database dan tabel siap, jalankan aplikasi Go utama. Aplikasi ini akan menyediakan API yang siap digunakan.

go run .

⚙️ Pengujian

Setelah aplikasi berjalan, Anda bisa melakukan dua jenis pengujian.

1. Menghasilkan Data Sampel (Load Testing)

Gunakan k6 untuk mensimulasikan pengiriman data sensor dalam jumlah besar ke API Anda. Skrip generate.js sudah disiapkan untuk tugas ini.

Jalankan perintah berikut di terminal terpisah:

k6 run generate.js

Perintah ini akan menjalankan skrip load test, dan Anda akan melihat data baru mulai masuk ke tabel ClickHouse Anda.

2. Menguji Endpoint API

Untuk menguji endpoint API secara manual (misalnya, GET, POST), buka file playground.http. Jika Anda sudah menginstal ekstensi REST Client di VS Code, Anda akan melihat tombol "Send Request" di atas setiap permintaan HTTP.

Klik tombol tersebut untuk mengirim permintaan langsung dari editor Anda dan melihat responsnya.


📚 Referensi

Berikut adalah beberapa sumber daya yang berguna untuk memahami arsitektur dan penggunaan ClickHouse lebih dalam:

About

Analitik Data IoT dengan Go & ClickHouse

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published