Pengertian
SQLite adalah sistem manajemen database relasional (RDBMS) yang bersifat serverless — tidak perlu diinstal sebagai layanan terpisah seperti MariaDB atau PostgreSQL. Seluruh database SQLite hanyalah satu berkas file (biasanya berekstensi .db atau .sqlite), dan proses baca/tulis dilakukan langsung oleh aplikasi yang memakainya.
SQLite mendukung standar SQL: tabel, index, view, trigger, hingga transaksi ACID. Karena sangat ringan, SQLite dipakai luas di sistem operasi (Debian, Android, iOS), browser, hingga aplikasi embedded.
Perbedaan mendasar dengan database server:
- MariaDB/PostgreSQL: butuh layanan daemon, koneksi via jaringan (port 3306/5432), multi-user simultan.
- SQLite: tanpa daemon, akses langsung ke berkas, ideal untuk aplikasi satu server atau satu user.
Kelebihan
- Serverless: tidak ada proses layanan yang harus dijaga hidup 24/7.
- Sangat ringan: footprint kecil, cocok untuk VPS RAM kecil dan aplikasi bot Telegram.
- Satu berkas: backup cukup menyalin satu file database.
- Zero-configuration: tidak perlu setup user, password, port, atau hak akses khusus.
- Standar SQL: mendukung query, join, index, dan transaksi.
- Cross-platform: file database bisa dipindah antar mesin tanpa konversi.
- Cepat untuk baca: banyak baca (read-heavy) berjalan sangat cepat, terutama dengan WAL mode.
Kekurangan
- Server tunggal: tidak dirancang untuk banyak penulis (write) dari banyak mesin secara bersamaan.
- Keterbatasan konkurensi: write mengunci database; berbeda dengan database server yang mengelola lock antar klien.
- Tanpa user management: tidak ada izin per-user — yang punya akses file punya akses seluruh database.
- Tidak cocok untuk jaringan langsung: tidak boleh ditaruh di NFS atau akses jarak jauh tanpa lapisan aplikasi.
- Fitur enterprise terbatas: tanpa replikasi bawaan, manajemen user, atau monitoring server terpusat.
Catatan penting: SQLite sangat tepat untuk bot Telegram, aplikasi kecil-menengah dengan satu proses penulis, prototipe, dan skrip otomatisasi. Untuk aplikasi multi-user yang menulis data secara bersamaan dari banyak server, gunakan MariaDB atau PostgreSQL.
Persiapan
Pastikan Anda menggunakan Debian 13 dengan akses sudo. Perbarui sistem terlebih dahulu:
sudo apt update && sudo apt upgrade -yLangkah 1: Instalasi
Debian 13 menyediakan SQLite lengkap melalui apt:
sudo apt install -y sqlite3Verifikasi instalasi:
sqlite3 --versionJika menampilkan nomor versi (misalnya 3.40.1), instalasi berhasil.
Paket yang terpasang:
sqlite3— binary CLI untuk membuat dan mengelola database.- Library C
libsqlite3— dipakai oleh aplikasi (Python, Node.js, PHP) untuk akses SQLite.
Untuk pengembangan dengan library tambahan:
sudo apt install -y libsqlite3-dev sqlite3-docLangkah 2: Membuat Database dan Tabel
Buat database bernama aplikasi.db langsung dari terminal:
sqlite3 aplikasi.dbPrompt akan berubah menjadi sqlite> — Anda sekarang berada di shell SQLite. Buat tabel contoh:
CREATE TABLE users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
nama TEXT NOT NULL,
email TEXT UNIQUE,
dibuat_pada DATETIME DEFAULT CURRENT_TIMESTAMP
);Lihat struktur tabel:
.schema users
.tablesLangkah 3: Memasukkan dan Mengambil Data
Operasi CRUD dasar di shell SQLite:
INSERT INTO users (nama, email) VALUES ('Sugeng', '[email protected]');
INSERT INTO users (nama, email) VALUES ('Budi', '[email protected]');
SELECT * FROM users;
SELECT nama FROM users WHERE email LIKE '%example%';Keluar dari shell SQLite:
.quitAtau gunakan perintah langsung dari terminal tanpa masuk shell:
sqlite3 aplikasi.db "SELECT COUNT(*) FROM users;"Langkah 4: Backup dan Restore
Keunggulan SQLite: backup cukup satu perintah salin file. Gunakan .backup agar konsisten saat database sedang dipakai:
sqlite3 aplikasi.db ".backup backup-aplikasi.db"Restore cukup salin kembali:
cp backup-aplikasi.db aplikasi.dbUntuk otomatisasi backup berkala, gabungkan dengan cron — lihat artikel mengelola cron job untuk otomatisasi tugas di Debian 13.
Langkah 5: Menggunakan SQLite dari Node.js
- Buat folder proyek dan instal driver resmi
better-sqlite3:bashmkdir -p ~/bot-sqlite && cd ~/bot-sqlite npm init -y npm install better-sqlite3 - Buat file
db.js:javascriptconst Database = require('better-sqlite3'); const db = new Database('aplikasi.db'); db.pragma('journal_mode = WAL'); db.exec(` CREATE TABLE IF NOT EXISTS users ( id INTEGER PRIMARY KEY AUTOINCREMENT, nama TEXT NOT NULL, email TEXT UNIQUE ) `); const stmt = db.prepare('INSERT INTO users (nama, email) VALUES (?, ?)'); stmt.run('Sugeng', '[email protected]'); const semua = db.prepare('SELECT * FROM users').all(); console.log(semua); db.close(); - Jalankan:bash
node db.js
Pola prepare + bind (?) otomatis mencegah SQL injection — selalu gunakan prepared statement, jangan sambung string query.
Langkah 6: Menggunakan SQLite dari Python
Python sudah menyertakan modul sqlite3 bawaan — tanpa instalasi tambahan:
import sqlite3
conn = sqlite3.connect("aplikasi.db")
cur = conn.cursor()
cur.execute("""
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
nama TEXT NOT NULL,
email TEXT UNIQUE
)
""")
cur.execute("INSERT INTO users (nama, email) VALUES (?, ?)", ("Sugeng", "[email protected]"))
conn.commit()
for row in cur.execute("SELECT * FROM users"):
print(row)
conn.close()Tabel Perintah Penting
| Kebutuhan | Perintah |
|---|---|
| Buat/buka database | sqlite3 nama.db |
| Lihat semua tabel | .tables |
| Lihat struktur tabel | .schema nama_tabel |
| Jalankan query | SELECT * FROM users; |
| Backup aman | sqlite3 nama.db ".backup backup.db" |
| Ukuran database | .dbinfo atau ls -lh nama.db |
| Optimize | VACUUM; |
| Keluar | .quit |
Troubleshooting
database is locked: biasanya karena ada proses lain yang sedang menulis. Tutup proses lain, tunggu transaksi selesai, atau aktifkan WAL mode (PRAGMA journal_mode=WAL;) agar reader tidak memblokir writer.attempt to write a readonly database: periksa permission berkas database dan folder induk — pastikan user aplikasi bisa menulis.- Data hilang setelah deploy: pastikan file database tidak tertinggal di
.gitignoreatau terhapus oleh proses build; gunakan volume persisten bila berjalan di container. - Corrupt database: jalankan
sqlite3 nama.db "PRAGMA integrity_check;"untuk diagnosa, lalu pulihkan dari file backup. - Lambat saat banyak write di jaringan: jangan akses file SQLite lewat NFS/SMB — pindahkan ke database server (MariaDB/PostgreSQL).
Kelebihan dan Kekurangan untuk Dipilih
| Aspek | SQLite | MariaDB/PostgreSQL |
|---|---|---|
| Instalasi | Cukup apt install sqlite3 | Layanan daemon + konfigurasi user |
| Konsumsi RAM | Sangat kecil | Puluhan hingga ratusan MB |
| Multi-user write | Terbatas | Dirancang untuk itu |
| Backup | Salin satu file | mysqldump / pg_dump |
| Cocok untuk | Bot, CLI, app kecil | Website ramai, multi-server |
Kesimpulan
SQLite adalah database paling sederhana di Debian 13: satu file, tanpa layanan, dan mendukung SQL penuh. Cocok untuk bot Telegram, aplikasi otomatisasi, dan proyek kecil-menengah yang prosesnya tunggal. Untuk kebutuhan multi-user write bersamaan, gunakan MariaDB atau PostgreSQL. Dengan prepared statement, WAL mode, backup terjadwal via cron, SQLite bisa diandalkan pada tempatnya.