Folosește cineva SQLite în producție?

Salut, numele meu este Mădălin și folosesc SQLite în producție :)).

Hai să încep așa, știu ca este mare hype cu SQLite în perioada asta, dar am reușit să testez cu success în producție (ca un adevărat programator) si folosesc SQLite de 2 ani și nu am avut probleme.

Avantaje: 1. Backup management mult mai ușor 2. No network overhead 3. Performanta destul de buna. 4. No PostgreSQL.

Folosesc așa: 1. Litestream cu replicare baza de date în Azure Blob Storage sau S3. 2. SQLite in WAL mode:

PRAGMA synchronous = NORMAL; -- Reduce latența cu ~50-70%

PRAGMA journal_mode = WAL; -- Reduce latența scrierilor cu ~40%

PRAGMA temp_store = MEMORY; -- Reduce latența cu ~10-20%

Pentru majoritatea aplicațiilor SQLite este perfect. WAL mode nu blochează citirea din baza de date. Cat despre concurrent writing, scrierea se face foarte repede astfel ca sunt șanse slabe (doar dacă nu ai o aplicație cu >2k requests/second care scriu în același timp) să nimerești un file locking. Dar dacă ești acolo, SQLite are și un model nou de concurrent writing în care poți să folosești BEGIN CONCURRENT. Mai multe detalii aici (https://www.sqlite.org/cgi/src/doc/begin-concurrent/doc/begin_concurrent.md).

Acum, nu spun ca este soluția perfecta. Necesita documentare, testare și să vezi dacă se potrivește pentru proiectul tău, dar până acum nu am întâlnit o situație în care SQLite să nu fie ok.

În concluzie SQLite este simplu și ușor de folosit și se pare ca într-o continuă îmbunătățire. Sunt multe filmulețe pe youtube cu teste și comparații performanță cu alte baza de date, va invit să le căutați. Și mai există și Limbo project, SQLite rescris în Rust.