Jenis NoSQL: dokument, kolom, graf, key-value

From OnnoWiki
Jump to navigation Jump to search

Berikut adalah **Modul 12: Basis Data NoSQL dan Big Data**, dengan penjelasan lengkap tentang **jenis-jenis NoSQL** (dokumen, kolom, graf, key-value) **beserta pendekatan simulasi atau integrasi dari MySQL di Ubuntu 24.04**.

---

    1. πŸ“˜ **Modul 12.1: Basis Data NoSQL dan Big Data**
      1. 🎯 **Tujuan Pembelajaran**

- Memahami konsep dasar basis data NoSQL dan penerapannya dalam skenario Big Data. - Mengenali empat jenis utama NoSQL: **document**, **key-value**, **column-family**, dan **graph**. - Mempelajari pendekatan integrasi atau simulasi NoSQL menggunakan MySQL di Ubuntu 24.04.

---

      1. πŸ“Œ **1. Apa itu NoSQL?**

NoSQL adalah tipe basis data yang **tidak menggunakan relasi tradisional** (table-join seperti pada RDBMS). Cocok untuk: - Data **tidak terstruktur atau semi-terstruktur**. - Skala **besar** dan butuh kecepatan **horizontal scalability**. - **Replikasi otomatis**, **partisi data**, dan **resiliensi tinggi**.

---

      1. 🧩 **2. Jenis-jenis NoSQL**
        1. πŸ—‚οΈ 2.1 **Dokumen (Document Store)**

- Menyimpan data dalam bentuk dokumen (biasanya format JSON, BSON). - Cocok untuk data fleksibel seperti artikel, user profile, produk. - Contoh DB: **MongoDB**, CouchDB.

πŸ“Œ **Simulasi di MySQL:** ```sql CREATE TABLE user_profile (

   id INT PRIMARY KEY,
   data JSON

);

INSERT INTO user_profile VALUES (1, '{"nama": "Andi", "alamat": {"kota": "Bandung", "kodepos": 40123}}'); SELECT JSON_EXTRACT(data, '$.alamat.kota') FROM user_profile; ```

πŸ§ͺ *Keterangan:* MySQL mendukung **tipe data JSON** sejak versi 5.7, memungkinkan kita menyimpan dan memproses data seperti document store.

---

        1. πŸ”‘ 2.2 **Key-Value Store**

- Penyimpanan sederhana: **key** β†’ **value** - Cocok untuk session, cache, konfigurasi. - Contoh DB: **Redis**, DynamoDB.

πŸ“Œ **Simulasi di MySQL:** ```sql CREATE TABLE config_store (

   config_key VARCHAR(100) PRIMARY KEY,
   config_value TEXT

);

INSERT INTO config_store VALUES ('theme', 'dark'), ('language', 'id'); SELECT config_value FROM config_store WHERE config_key = 'theme'; ```

πŸ§ͺ *Keterangan:* Walau tidak secepat Redis, MySQL bisa meniru skema key-value untuk kebutuhan dasar konfigurasi atau metadata.

---

        1. πŸ“Š 2.3 **Kolom (Column Family)**

- Menyimpan data berbasis kolom, bukan baris. - Cocok untuk data besar seperti log, time series, analitik. - Contoh DB: **Apache Cassandra**, HBase.

πŸ“Œ **Simulasi di MySQL:** MySQL tetap berbasis row-store, tapi bisa **mimic skema kolom** menggunakan pivot-like structure: ```sql CREATE TABLE sensor_data (

   id INT AUTO_INCREMENT PRIMARY KEY,
   waktu DATETIME,
   suhu DOUBLE,
   kelembapan DOUBLE

); ```

πŸ“Œ Untuk efisiensi baca berdasarkan kolom tertentu, bisa gunakan **INDEX**: ```sql CREATE INDEX idx_suhu ON sensor_data(suhu); ```

πŸ§ͺ *Catatan:* Untuk true column-oriented storage, gunakan sistem seperti ClickHouse atau Cassandra.

---

        1. 🧠 2.4 **Graf (Graph Database)**

- Menyimpan **node** dan **edge** untuk mewakili relasi kompleks. - Cocok untuk sosial media, rekomendasi, analisa jaringan. - Contoh DB: **Neo4j**, ArangoDB.

πŸ“Œ **Simulasi di MySQL:** ```sql -- Node: User CREATE TABLE user (

   id INT PRIMARY KEY,
   nama VARCHAR(50)

);

-- Edge: Hubungan antar user CREATE TABLE hubungan (

   dari_user INT,
   ke_user INT,
   jenis_hubungan VARCHAR(50),
   FOREIGN KEY (dari_user) REFERENCES user(id),
   FOREIGN KEY (ke_user) REFERENCES user(id)

);

-- Query: Siapa teman Andi? SELECT u2.nama FROM user u1 JOIN hubungan h ON u1.id = h.dari_user JOIN user u2 ON h.ke_user = u2.id WHERE u1.nama = 'Andi' AND h.jenis_hubungan = 'teman'; ```

πŸ§ͺ *Catatan:* Pendekatan ini hanya menyimulasikan struktur graph; untuk traversal graf kompleks seperti DFS/BFS, butuh DB asli seperti Neo4j.

---

      1. πŸ—ƒοΈ **3. Hubungan NoSQL dan Big Data**

NoSQL sangat cocok untuk skenario Big Data karena: - Bisa **di-scale horizontal** dengan mudah. - Tidak bergantung pada skema tetap (schema-less). - Cocok untuk data volume besar dan kecepatan tinggi (velocity).

    • Contoh skenario Big Data di Indonesia**:

- **E-commerce** menyimpan jutaan user profile (document). - **IoT** sensor kota (column family). - **Analisis jejaring sosial** (graph). - **Pengaturan caching** skala besar (key-value Redis).

---

      1. πŸ§ͺ **4. Instalasi dan Integrasi di Ubuntu 24.04**

Jika ingin eksperimen nyata dengan NoSQL di Ubuntu:

```bash

  1. MongoDB (Document)

sudo apt install -y mongodb

  1. Redis (Key-Value)

sudo apt install -y redis

  1. Neo4j (Graph)

wget -O - https://debian.neo4j.com/neotechnology.gpg.key | sudo apt-key add - echo 'deb https://debian.neo4j.com stable 5' | sudo tee /etc/apt/sources.list.d/neo4j.list sudo apt update sudo apt install neo4j ```

---

      1. βœ… **Kesimpulan**

| Jenis NoSQL | Karakteristik | Contoh DB | Simulasi MySQL | |--------------|-------------------------------|---------------|----------------| | Dokumen | JSON fleksibel | MongoDB | Tipe data JSON | | Key-Value | Sangat cepat, sederhana | Redis | Kunci & nilai | | Kolom | Big data & time-series | Cassandra | Simulasi tabel | | Graf | Node-edge relationship | Neo4j | Tabel relasi |

MySQL dapat digunakan untuk **simulasi dasar NoSQL** jika arsitektur belum bisa beralih ke database khusus.

---

Kalau kamu mau, Gipy bisa bantu buat versi PowerPoint atau PDF juga. Mau sekalian?