- Beberapa kekurangan mengejutkan yang saya sadari setelah beberapa hari mencoba SQLite
ALTER COLUMN tidak didukung. Rekomendasi resmi untuk mengubah kolom: "buat tabel baru"
DROP CONSTRAINT tidak didukung. Rekomendasi resmi untuk menghapus constraint: "buat tabel baru"
- SQLite tidak memiliki tipe data pada kolom. Tipe data (hanya ada 5) hanya melekat pada nilainya, jadi apa pun bisa masuk ke mana pun
- Jika Anda meminta kolom dengan tipe yang tidak didukung atau tidak ada, SQLite akan melakukan hal yang salah tanpa peringatan atau error. Saya sempat mengira SQLite mendukung serial dan array pada hari pertama, karena skema seperti
CREATE TABLE my_table (id bigserial, messages jsonb[]) tampak seperti berjalan normal
- Dengan
CREATE TABLE my_table (...) STRICT, Anda bisa membatasi agar hanya menerima salah satu dari 5 tipe yang didukung: integer, real, text, blob, any
- Belakangan ini ada banyak perhatian pada dukungan
jsonb baru di SQLite. Tidak seperti Postgres, jsonb sebenarnya bukan tipe data, melainkan format yang menjadi input/output bagi fungsi bawaan jsonb*. Saat disimpan secara permanen, ia adalah blob, salah satu dari 5 tipe dasar
- Tipe penting lainnya seperti
timestamptz juga tidak ada. Jika ingin menyimpan tanggal/waktu, gunakan Unix timestamp integer atau string berformat ISO8601, dan SQLite menyediakan beberapa fungsi bawaan untuk menangani ini
- SQLite punya kemampuan terkait streaming yang mengesankan dan ingin saya coba, tetapi pengalaman DX awalnya jelas terasa agak canggung
- Kadang saya bertanya-tanya apakah saya terlalu terbawa oleh suatu narasi. Misalnya, apakah Postgres benar-benar database terbaik di dunia? Pengalaman ini jelas makin menguatkan keyakinan saya. Ya, Postgres memang yang terbaik
6 komentar
Rasanya yang diinginkan bukan SQLite, melainkan SQLHeavy.
Ada berbagai macam DB. Saya merasa SQLite dijalankan dengan filosofi tersendiri.
Kenapa mereka mencoba memakai SQLite seperti Postgres?
Rasanya seperti orang yang baru pertama kali memakai Linux lalu berkata, “Hancom Office juga tidak jalan dengan baik dan game yang saya mainkan juga tidak bisa berjalan. Memang sistem operasi itu ya Windows!”
Apakah hype atau rumor tentang SQLite yang muncul di Hacker News agak berlebihan? Sejak 2022, cukup banyak posting di Hacker News yang mengklaim bahwa SQLite bisa menggantikan RDBMS yang dijalankan secara terpisah.
1: https://news.ycombinator.com/item?id=31318708
2. https://news.ycombinator.com/item?id=31152490
3. https://news.ycombinator.com/item?id=34812527
4. https://news.ycombinator.com/item?id=36208568
Lainnya: https://hn.algolia.com/?dateEnd=1720854657&dateRange=custom&da…
Saya rasa SQLite bisa menjadi alternatif yang cukup menarik ketika menggunakan keluarga produk database seperti Postgres atau MySQL terasa berlebihan.
Misalnya, untuk layanan kecil, biaya managed DB bisa terasa lebih besar daripada manfaatnya, sementara mengelolanya sendiri juga tetap menjadi beban.
Sebaliknya, untuk SQLite, katanya performanya masih memadai sampai skala tertentu, dan terutama jika memakai alat seperti Litestream, beban operasionalnya juga nyaris tidak ada, jadi sepertinya ini punya kelebihan tersendiri.
Bahkan tanpa sampai ke fitur replikasi, sqlite itu enak karena backup-nya juga mudah dan kita cuma perlu mengelola status service daemon, tetapi kalau mau dipasang ke JPA ada banyak hal yang harus diurus, jadi rasanya tidak cocok dipakai untuk proyek yang nantinya harus diserahterimakan ke orang lain. Kalau ada keinginan untuk menangani skema data dengan lebih ketat seperti di tulisan asli, itu juga bukan penggunaan yang pas untuk sqlite.
Saya tadi belum selesai menulis komentar sebelumnya, tetapi yang ingin saya sampaikan adalah bahwa rumor-rumor ngawur tentang sqlite menimbulkan ilusi seolah-olah sqlite itu solusi serbabisa.