Cara Menambahkan Database ke Aplikasi Anda (Tanpa Kehilangan Data Nanti)
Untuk menambahkan database ke aplikasi Anda, pilih database relasional terkelola (Postgres adalah pilihan umum), simpan string koneksinya di secret sisi server, buat satu tabel untuk setiap jenis hal yang disimpan aplikasi Anda, dan biarkan backend Anda — bukan browser — yang membaca dan menulis ke database tersebut. Jika Anda membangun dengan AI app builder, biasanya Anda cukup berkata "simpan ini ke database" dan agen akan menyiapkan tabel dan kodenya; tugas Anda adalah mendeskripsikan data dengan jelas dan memastikan data benar-benar tersimpan.
Panduan ini membahas kapan Anda membutuhkan database, opsi utamanya, cara mendeskripsikan data, dan kesalahan yang menyebabkan data hilang atau bocor.
Kapan aplikasi Anda membutuhkan database
Anda membutuhkan database ketika aplikasi harus mengingat sesuatu setelah halaman ditutup, atau berbagi data antarorang. Tanda-tanda umumnya:
- Pengunjung mengirim sesuatu: formulir, pendaftaran, pemesanan, atau pesanan
- Pengguna memiliki akun dengan konten tersimpan miliknya sendiri
- Admin perlu melihat atau mengedit apa yang dibuat orang lain
- Anda menginginkan laporan atau jumlah dari waktu ke waktu
Anda tidak memerlukannya untuk situs statis tempat semua orang melihat konten yang sama, seperti portofolio atau halaman landing sederhana. Jika Anda belum yakin apa itu database, baca dulu apa itu database.
Opsi Anda
| Opsi | Apa itu | Cocok untuk | Kekurangan |
|---|---|---|---|
| Database bawaan dari app builder Anda | Database yang dibuat dan terhubung untuk proyek Anda | Sebagian besar aplikasi yang dibangun dengan AI builder | Terikat pada hosting platform tersebut; ekspor dan cadangan bergantung pada platform |
| Postgres atau MySQL terkelola | Database relasional yang di-hosting dan Anda daftarkan secara terpisah | Aplikasi yang Anda host sendiri, atau yang dipakai beberapa layanan | Anda mengelola kunci, batas koneksi, dan paket |
| Backend-as-a-service | Database plus autentikasi, penyimpanan, dan API dalam satu produk | Aplikasi yang berfokus pada frontend dan ingin login siap pakai | Lebih banyak konsep spesifik vendor yang harus dipelajari |
| Database dokumen (NoSQL) | Menyimpan dokumen fleksibel seperti JSON | Data yang sangat tidak beraturan | Relasi dan pelaporan lebih sulit |
| Spreadsheet sebagai database | Google Sheets atau sejenisnya lewat API | Alat internal kecil, prototipe | Lambat, tanpa batasan yang kuat, rusak saat diedit bersamaan |
Untuk sebagian besar aplikasi web kecil dan menengah, database relasional seperti Postgres adalah pilihan default yang tepat. Database ini bagus untuk relasi (satu pelanggan memiliki banyak pesanan), menjaga konsistensi data, dan memungkinkan Anda menjawab pertanyaan nanti dengan SQL. Lihat apa itu Postgres untuk penjelasan sederhana.
Deskripsikan data Anda sebelum membangun
Hal paling berguna yang bisa Anda lakukan adalah menuliskan hal-hal yang disimpan aplikasi Anda dan bagaimana hal-hal itu terhubung. Anda tidak perlu istilah database. Untuk aplikasi pemesanan:
- Pelanggan: nama, email, nomor telepon
- Layanan: nama, durasi, harga
- Pemesanan: pelanggan yang mana, layanan yang mana, waktu mulai, status (menunggu, dikonfirmasi, dibatalkan)
Itu tiga tabel. "Pelanggan yang mana" dan "layanan yang mana" menjadi tautan (foreign key) antartabel. Hal ini penting sejak awal, jauh lebih penting daripada pilihan teknologi, karena mengubah struktur data yang sudah berisi baris nyata lebih sulit daripada mengubah tata letak halaman.
Beberapa aturan praktis:
- Satu tabel untuk setiap jenis hal. Jangan memasukkan pesanan ke dalam kolom teks di data pelanggan.
- Beri setiap baris ID dan waktu dibuat. Keduanya akan Anda butuhkan nanti.
- Gunakan tipe data yang tepat. Tanggal sebagai tanggal, uang sebagai satuan sen utuh atau tipe desimal, bukan sebagai teks.
- Tandai kolom wajib sebagai wajib. Biarkan database menolak data yang buruk, bukan hanya formulir.
Contoh prompt
Mulailah dengan satu fitur sekaligus, jangan langsung menumpahkan seluruh skema:
Tambahkan database ke aplikasi ini. Buat tabel pemesanan dengan nama pelanggan, email, layanan, waktu mulai, dan status (menunggu, dikonfirmasi, dibatalkan; default menunggu). Simpan pengiriman dari formulir pemesanan ke tabel tersebut, tampilkan pesan sukses, dan tambahkan halaman admin yang menampilkan pemesanan dari yang terbaru.
Lalu perluas:
Tambahkan tabel layanan (nama, durasi dalam menit, harga dalam sen). Ganti kolom layanan berbentuk teks bebas di pemesanan dengan tautan ke layanan, dan migrasikan pemesanan yang sudah ada tanpa menghapusnya.
Dan perketat:
Pastikan semua pembacaan dan penulisan database terjadi di server. Browser tidak boleh pernah menerima string koneksi database. Validasi email dan waktu mulai di server sebelum menyisipkan data.
Langkah demi langkah
- Daftarkan data Anda seperti di atas: hal-hal, kolom, dan relasi antarhal.
- Buat database. Di AI builder, minta lewat chat. Di tempat lain, buat instance Postgres terkelola dan salin string koneksinya.
- Simpan string koneksi sebagai secret (variabel lingkungan di server), jangan pernah di dalam kode. Lihat variabel lingkungan dan secret.
- Buat tabelnya. Gunakan migrasi — skrip berversi yang mengubah skema — agar perubahan bisa diulang dan dibatalkan.
- Bangun route server yang membuat, membaca, memperbarui, dan menghapus baris (CRUD). Browser memanggil route ini; browser tidak pernah berbicara langsung dengan database.
- Hubungkan UI ke route tersebut: formulir yang menyimpan, daftar yang dimuat, dan tampilan kosong saat belum ada data.
- Uji persistensi. Kirim sesuatu, muat ulang halaman, buka di browser lain. Jika data tidak ada, berarti data itu tidak tersimpan di database.
- Periksa akses. Masuk sebagai pengguna kedua dan pastikan Anda tidak bisa melihat atau mengedit data pengguna pertama.
- Publikasikan, lalu uji lagi di URL live, karena aplikasi yang sudah dipublikasikan mungkin memakai koneksi yang berbeda dari pratinjau Anda.
Kesalahan umum
- Menyimpan ke browser dan mengira sudah tersimpan. localStorage terlihat berfungsi sampai seseorang membuka aplikasi di perangkat lain. Selalu uji di browser kedua.
- Menaruh string koneksi di kode frontend. Siapa pun bisa membaca kode frontend. Itu memberi mereka seluruh database Anda.
- Tidak ada pemeriksaan akses. "Tampilkan pesanan saya" harus memfilter berdasarkan pengguna yang sedang masuk di server, bukan di UI. Ini celah keamanan paling umum pada aplikasi yang dibangun dengan AI; checklist keamanan kami membahasnya.
- Perubahan skema yang merusak. Meminta "ubah nama tabel" atau "ubah strukturnya" bisa menghapus lalu membuat ulang tabel. Saat data nyata sudah ada, katakan "migrasikan baris yang ada, jangan hapus apa pun".
- Menyimpan file di database. Gambar dan PDF sebaiknya disimpan di penyimpanan file, dengan hanya URL atau kuncinya yang masuk ke tabel. Lihat cara menambahkan unggahan file.
- Tanpa cadangan. Ketahui bagaimana platform Anda membuat cadangan dan bagaimana cara memulihkannya sebelum Anda punya pelanggan.
Checklist
- Setiap jenis hal punya tabelnya sendiri dengan ID dan waktu dibuat
- Kolom wajib dan tipe data ditegakkan oleh database
- String koneksi hanya ada di secret sisi server
- Semua pembacaan dan penulisan melewati route server
- Setiap pengguna hanya bisa membaca dan mengubah baris miliknya sendiri
- Data bertahan setelah muat ulang dan muncul di browser lain
- Perubahan skema memakai migrasi dan mempertahankan baris yang ada
- Anda tahu cara kerja cadangan dan pemulihan
- Aplikasi live sudah diuji setelah dipublikasikan
Menambahkan database di Mythex
Di Mythex, setiap proyek bisa mendapatkan database Postgres khusus, baik di paket Free maupun Pro. Biasanya Anda tidak perlu mengklik tombol "attach" terpisah: minta di chat ("simpan email daftar tunggu ke database") atau ketik /database, dan detail koneksinya akan disuntikkan ke workspace dan aplikasi yang sudah dipublikasikan. Pengaturan proyek menunjukkan apakah database sedang aktif.
Database akan tidur setelah 5 menit tanpa aktivitas dan bangun saat permintaan berikutnya masuk. Penggunaan aplikasi yang sudah dipublikasikan ditagih berdasarkan waktu database benar-benar aktif, dari saldo kredit yang sama dengan yang Anda pakai untuk membangun. Jika Anda menambahkan database setelah sudah mempublikasikan, publikasikan lagi agar aplikasi live mengambilnya.
Lihat Database dan resep Build a CRUD app di dokumentasi. Untuk sisi login pada data per pengguna, baca cara menambahkan login ke aplikasi Anda.
Pertanyaan
Apakah aplikasi saya membutuhkan database?
Anda membutuhkannya begitu aplikasi harus mengingat sesuatu di antara kunjungan atau berbagi data antarpengguna: pendaftaran, pesanan, pemesanan, postingan, atau pengaturan. Situs statis yang hanya menampilkan konten yang sama untuk semua orang tidak membutuhkan database.
Database mana yang sebaiknya saya pakai untuk aplikasi web kecil?
Database relasional seperti Postgres adalah pilihan default yang aman untuk sebagian besar aplikasi web kecil. Database ini menangani pengguna, pesanan, relasi, dan pelaporan dengan baik, didukung secara luas, dan jarang terlampaui pada skala kecil.
Bisakah saya menyimpan data di browser alih-alih database?
Penyimpanan browser seperti localStorage hanya ada di satu perangkat, di satu browser, dan pengguna bisa menghapusnya kapan saja. Cocok untuk preferensi seperti pilihan tema, tetapi tidak untuk data yang perlu Anda atau pengguna lain lihat nanti.
Apakah Mythex menyediakan database?
Ya. Setiap proyek Mythex bisa mendapatkan database Postgres khusus miliknya sendiri di paket Free dan Pro. Anda memintanya lewat chat atau menggunakan perintah /database, dan detail koneksinya disuntikkan otomatis. Penggunaannya dibayar dari saldo kredit yang sama dengan saat membangun aplikasi.