Dasar - Dasar Database

Database adalah kumpulan data yang tersimpan secara terstruktur dan terorganisir sehingga mudah diakses, dikelola, dan diperbarui. Database digunakan untuk menyimpan informasi penting dalam berbagai aplikasi, mulai dari aplikasi kecil hingga sistem perusahaan besar. Dalam hampir semua sistem perangkat lunak yang bersifat data-driven, database menjadi komponen inti. Database bertugas untuk menyimpan inti data aplikasi.
Dalam mengelola database ini, tersedia DBMS ( Database Management System ) yang merupakan perangkat lunak yang berfungsi untuk membuat, mengelola, dan mengakses database. Contoh DBMS yang sering digunakan yaitu MySQL, PostgreSQL, Oracle, Microsoft SQL Server, SQLite. Pada tahap analisis dan desain perangkat lunak, database dirancang melalui diagram ERD dan skema tabel.
DBMS adalah perangkat lunak sedangkan Database adalah kumpulan data yang dikelola oleh DBMS.
Jenis Jenis DBMS
DBMS mencakup berbagai model database, sesuai kebutuhan aplikasi dan karakteristik data.
- RDBMS ( Relational Database Management System ) – Penyimpanan data dalam bentuk tabel yang saling berelasi ( baris dan kolom ). Menggunakan SQL untuk mengelola data. Contohnya MySQL, PostgreSQL, Oracle, SQLServer. Penggunaan jenis ini cocok untuk data yang terstruktur dan butuh konsistensi tinggi. Data disimpan dalam tabel yang fixed schema (skema tetap). Setiap baris harus punya nilai untuk kolom-kolom tertentu atau NULL.
- NoSQL Database – Penyimpanan data tidak berbentuk tabel. Tidak ada struktur khusus dalam penyimpanan ini. Ada beberapa tipe penyimpanan :
- Document Store – berbentuk dokumen JSON
{ "id": "001","nama": "codebites", "harga": 7500000}
(MongoDB)
- Document Store – berbentuk dokumen JSON
- Key-Value Store – berbentuk key-value biasanya untuk penyimpanan cepat seperti session user / cache.
Contoh:Key
:user_123_session
Value
:eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
( Redis ) - Column-Family Store – menyimpan data berdasarkan kolom, untuk big data. Terlihat mirip RDBMS karena sama-sama pakai istilah tabel dan kolom. Namun perbedaannya, Skema lebih fleksibel, tidak harus semua baris punya kolom yang sama. Fokus menyimpan dan mengambil data berdasarkan kolom. Data diakses berdasarkan kolom, jadi bisa lebih cepat untuk query yang hanya butuh beberapa kolom dari banyak data.
Contoh Data :
RowKey 1001 punya kolom: Nama, Email
RowKey 1002 punya kolom: Nama, Telepon
( Apache Cassandra ) - Graph Database – berbentuk node dan egde untuk hubungan kompleks
Contoh:
Node: (Alice), (Bob), (Charlie)
Edges: (Alice) —[teman]→ (Bob), (Bob) —[kerja_di]→ (PerusahaanX)
( Neo4j ) - NewSQL Database – menggunakan SQL tapi mendukung skalabilitas NoSQL. ( Contoh: Google Spanner, CockroachDB )
- Time Series Database – Spesialis untuk data berurutan waktu. Data berupa pasangan timestamp dan value yang terus bertambah. Contoh :
| Timestamp | Temperature (°C)
| 2025-05-23 08:00:00 | 25.4
| 2025-05-23 08:00:00 | 25.4
(InfluxDB, TimescaleDB) - Object-Oriented Database – data disimpan sebagai object. Bisa langsung simpan dan ambil objek dari database tanpa harus mengubahnya ke bentuk tabel. Penggunaannya seperti pada pemrograman aplikasi.
- Hierarchical Database – Model lama berbentuk pohon (hierarchical) yang setiap datanya memiliki satu induk (parent) dan bisa punya banyak anak (child). Mirip struktur folder di komputer
- Network Database – Mirip pohon, tapi lebih fleksibel karena satu data bisa punya lebih dari satu induk. Bentuknya seperti graph, data bisa saling terhubung lebih kompleks. Contoh analoginya, Sistem manajemen proyek di mana satu pegawai bisa ikut di banyak proyek, dan satu proyek bisa punya banyak pegawai.
- Multimodel Database – Mendukung lebih dari satu model data atau gabungan beberapa model database dalam satu sistem, bisa simpan data relasional (tabel), dokumen (JSON), graph, dan lain-lain sekaligus
RDBMS paling umum dan stabil, sedangkan NoSQL cocok untuk data yang fleksibel dan besar. Namun tidak jarang dilakukan pendekatan NoSQL dalam penggunaan RDBMS. Kolom - kolom utama tetap terstruktur agar mudah diquery dan diindeks, tapi beberapa data bisa dibuat sifatnya dinamis, atau bisa berubah - ubah dalam format JSON.
Contoh pengaplikasiannya pada tabel transaksi. Kolom - kolom utama tetap terstruktur seperti userId, amount, payment_method, dll. Tapi pada kolom notes / log bisa dibuat dalam bentuk json. Misal dengan tujuan karena dalam proses transaksi log ini bisa berbeda-beda menyimpan return dari setiap service / external service.
transaction_id | user_id | amount | payment_method | status | notes (JSON) |
---|---|---|---|---|---|
1001 | 123 | 50000 | credit_card | success | {"serviceA": "ok", "serviceB": {"code":200, "msg":"approved"}} |
1002 | 124 | 75000 | ewallet | pending | {"serviceA": "pending", "serviceC": {"error": "timeout"}} |
Hal ini dilakukan untuk tetap flexible dalam menyimpan data semi-terstruktur tanpa harus ubah skema database. Dan dalam pengembangan pun prosesnya lebih mudah / sederhana dari pada harus membuat struktur baru.