Persistensi Data, Pemodelan Skema Database & Transaksi
Dari Penyimpanan File JSON Menuju Database Relasional Terindeks
01. Target Pembelajar & Prasyarat
Backend developer dan full-stack engineer.
02. Kompetensi Konseptual (Level 1ā2)
- āMenjelaskan 4 sifat ACID dalam transaksi database.
03. Kompetensi Praktis & Artefak Nyata (Level 3ā4)
- āMembangun skema penyimpanan data pesanan terindeks.
04. Aplikasi Nyata & Verifikasi
Penerapan Industri: Sistem penyimpanan `data/orders.json` di Z-Automation.
Metode Verifikasi: Menguji penulisan konkuren 5 transaksi secara bersamaan.
Mengapa Subjek Ini Krusial dalam Rekayasa Nyata?
Pelajari pemodelan data relasional, pengindeksan untuk pencarian cepat, transaksi ACID, dan mitigasi concurrency race conditions.
Dalam lingkungan produksi, kegagalan memahami batas-batas arsitektur sistem sering kali menyebabkan bug yang sulit dilacak, pemborosan biaya komputasi, atau antarmuka yang lambat bagi pengguna.
Bagaimana Sistem Sebenarnya Bekerja di Tingkat Protokol
Mengapa Transaksi ACID Sangat Penting
Atomicity, Consistency, Isolation, Durability. Empat kata ini menjamin bahwa uang pelanggan tidak terdebit jika proses pembuatan faktur gagal di tengah jalan. Seluruh transaksi berhasil serempak, atau dibatalkan serempak.
Alur Arsitektur Sistem Otonom & Runtime
Pesan bahasa alami diterima melalui antarmuka web atau webhook chat.
{
"input": "Berapa estimasi biaya pembuatan landing page bisnis?"
}Koreksi Asumsi Umum vs Realitas Rekayasa
āPenyimpanan file JSON cukup untuk seluruh skala trafik produksi.ā
File JSON hanya cocok untuk prototipe lokal atau data read-only kecil. Trafik nyata membutuhkan database dengan concurrency locking.
Implementasi Langkah-demi-Langkah
Hasil akhir yang diharapkan: Penyimpanan data aman dengan penulisan atomik.
lab-b3-m2/ āāā atomic-store.mjs
1Implementasi Penulisan File Atomik
Menulis ke file sementara lalu me-rename untuk mencegah data korup.
| 1 | // atomic-store.mjs |
| 2 | import fs from 'fs/promises'; |
| 3 | |
| 4 | async function simpanDataAtomik(filePath, dataObj) { |
| 5 | const tempPath = filePath + '.tmp.' + Date.now(); |
| 6 | await fs.writeFile(tempPath, JSON.stringify(dataObj, null, 2), 'utf8'); |
| 7 | await fs.rename(tempPath, filePath); |
| 8 | console.log('Data tersimpan secara atomik di:', filePath); |
| 9 | } |
| 10 | |
| 11 | await simpanDataAtomik('./test-data.json', { status: 'OK', updatedAt: new Date().toISOString() }); |
Data tersimpan secara atomik di: ./test-data.json
Mengantisipasi Masalah Umum & Tantangan Ekstensi
Tambahkan in-memory mutex lock untuk mencegah konkurensi tulis simultan.
Uji Kompetensi Mandiri & Verifikasi Hasil
Standar kelulusan Z-Automation mewajibkan skor minimum 80 / 100 Poin dengan komponen Implementasi Praktis minimal 21 / 35 Poin (60%). Jawab soal diagnostik dan centang hasil pengujian praktis Anda.
BAGIAN A // PERTANYAAN DIAGNOSTIK KONSEPTUAL & TEKNIS (40 POIN)
01.Apa arti sifat 'Atomicity' pada transaksi database?
BAGIAN B // DAFTAR PERIKSA HASIL IMPLEMENTASI PRAKTIS (35 POIN ā MIN. 21 POIN)
Centang item di bawah ini hanya jika Anda telah menjalankan kode di komputer Anda dan mengamati output yang benar: