Memasang dan Menggunakan Database SQLite di Debian 13

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:

bash
sudo apt update && sudo apt upgrade -y

Langkah 1: Instalasi

Debian 13 menyediakan SQLite lengkap melalui apt:

bash
sudo apt install -y sqlite3

Verifikasi instalasi:

bash
sqlite3 --version

Jika 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:

bash
sudo apt install -y libsqlite3-dev sqlite3-doc

Langkah 2: Membuat Database dan Tabel

Buat database bernama aplikasi.db langsung dari terminal:

bash
sqlite3 aplikasi.db

Prompt akan berubah menjadi sqlite> — Anda sekarang berada di shell SQLite. Buat tabel contoh:

sql
CREATE TABLE users (
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  nama TEXT NOT NULL,
  email TEXT UNIQUE,
  dibuat_pada DATETIME DEFAULT CURRENT_TIMESTAMP
);

Lihat struktur tabel:

sql
.schema users
.tables

Langkah 3: Memasukkan dan Mengambil Data

Operasi CRUD dasar di shell SQLite:

sql
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:

sql
.quit

Atau gunakan perintah langsung dari terminal tanpa masuk shell:

bash
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:

bash
sqlite3 aplikasi.db ".backup backup-aplikasi.db"

Restore cukup salin kembali:

bash
cp backup-aplikasi.db aplikasi.db
Untuk otomatisasi backup berkala, gabungkan dengan cron — lihat artikel mengelola cron job untuk otomatisasi tugas di Debian 13.

Langkah 5: Menggunakan SQLite dari Node.js

  1. Buat folder proyek dan instal driver resmi better-sqlite3:
    bash
    mkdir -p ~/bot-sqlite && cd ~/bot-sqlite
    npm init -y
    npm install better-sqlite3
  2. Buat file db.js:
    javascript
    const 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();
  3. 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:

python
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

KebutuhanPerintah
Buat/buka databasesqlite3 nama.db
Lihat semua tabel.tables
Lihat struktur tabel.schema nama_tabel
Jalankan querySELECT * FROM users;
Backup amansqlite3 nama.db ".backup backup.db"
Ukuran database.dbinfo atau ls -lh nama.db
OptimizeVACUUM;
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 .gitignore atau 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

AspekSQLiteMariaDB/PostgreSQL
InstalasiCukup apt install sqlite3Layanan daemon + konfigurasi user
Konsumsi RAMSangat kecilPuluhan hingga ratusan MB
Multi-user writeTerbatasDirancang untuk itu
BackupSalin satu filemysqldump / pg_dump
Cocok untukBot, CLI, app kecilWebsite 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.

Artikel Terkait