Para penggemar database sedang ramai membicarakan implementasi multi-version concurrency control (MVCC) baru dari Turso yang menjanjikan solusi untuk keterbatasan single-writer yang sudah lama ada di SQLite. Pratinjau teknis yang dirilis dengan flag eksperimental ini telah memicu diskusi intensif tentang apakah SQLite harus berevolusi melampaui batasan desain aslinya atau apakah pengembang sebaiknya menggunakan database yang berbeda untuk workload konkurensi tinggi.
Debat Single-Writer Semakin Memanas
Inti kontroversi ini berkisar pada arsitektur fundamental SQLite. Selama bertahun-tahun, pengembang telah menerima bahwa SQLite hanya mengizinkan satu penulis pada satu waktu, yang dapat menyebabkan error SQLITE_BUSY yang ditakuti dalam aplikasi yang berat menulis. Sementara beberapa anggota komunitas berargumen bahwa keterbatasan ini adalah bagian dari sifat embedded SQLite, yang lain melihatnya sebagai batasan yang tidak perlu dalam sistem multi-core modern.
Seorang komentator mencatat implikasi praktisnya: Keterbatasan single-writer di SQLite adalah per-database, bukan per-koneksi. Anda dapat memecah tabel SQLite Anda ke dalam beberapa file database dan melakukan query di semua tabel tersebut dari satu koneksi. Solusi alternatif ini telah menjadi andalan banyak pengembang, tetapi datang dengan trade-off yang signifikan mengenai keamanan transaksi dan kompleksitas.
Jika Anda menggunakan mode WAL, maka Anda tidak bisa mendapatkan keamanan transaksi / ACID dengan ATTACH. Selain itu, ATTACH tidak mendukung lebih dari 125 database, sehingga itu membatasi shard hingga 125.
Diskusi mengungkapkan bahwa meskipun sharding di beberapa file database menggunakan pernyataan ATTACH memberikan sedikit kelegaan, itu tidak memberikan jaminan ACID yang sebenarnya di semua database saat menggunakan mode WAL. Keterbatasan ini menjadi kritis untuk aplikasi yang membutuhkan transaksi multi-tabel yang konsisten.
Evolusi SQLite Sendiri dan Pendekatan yang Bersaing
Yang menarik, tim SQLite tidak tinggal diam. Anggota komunitas menunjuk bahwa tim SQLite sedang mengerjakan mode multi-writer mereka sendiri yang jauh melampaui BEGIN CONCURRENT. Timeline resmi SQLite menunjukkan pengembangan aktif dengan tujuh commit baru hanya bulan ini, menunjukkan bahwa kedua proyek sedang berlomba menuju tujuan yang sama melalui pendekatan teknis yang berbeda.
Implementasi MVCC Turso mengambil inspirasi dari sistem TokuDB, mempertahankan struktur data dalam memori yang melacak berbagai versi baris. Hal ini memungkinkan transaksi berjalan secara optimis, memeriksa konflik hanya pada saat commit daripada langsung memblokir. Pendekatan ini berbeda dari mvcc_CONCURRENT eksperimental SQLite, yang beroperasi pada level halaman dan dapat menyebabkan rollback yang tidak perlu ketika modifikasi yang tidak terkait terjadi untuk berbagi halaman database yang sama.
Perbandingan Pendekatan MVCC SQLite vs. Turso
| Aspek | SQLite Tradisional | SQLite Experimental mvcc_CONCURRENT | Turso MVCC |
|---|---|---|---|
| Model Konkurensi | Single-writer | Deteksi konflik level halaman | Versioning level baris |
| Resolusi Konflik | Penguncian eksklusif | Rollback pada konflik halaman | Optimistic concurrency control |
| Dampak Performa | Error SQLITE_BUSY | Potensi rollback yang tidak perlu | Pengecekan konflik saat commit |
| Keamanan Transaksi | ACID penuh | Terbatas dalam skenario multi-file | Menjaga konsistensi |
| Status Pengembangan | Stabil untuk produksi | Cabang eksperimental | Pratinjau teknologi |
![]() |
|---|
| Evolusi basis data mirip SQL dengan fokus pada fitur concurrent writes Turso |
Aplikasi Praktis dan Use Case Bermunculan
Percakapan mengungkapkan beberapa skenario dunia nyata di mana penulisan konkuren dapat mengubah cara pengembang menggunakan database seperti SQLite. Seorang pengembang berbagi pengalaman mereka dengan pemrosesan data: Impor dataset yang naif adalah ~131 juta penyisipan. Butuh 10 menit... akan lebih baik jika bisa mencapainya dalam setengah waktu. Meskipun use case khusus ini mungkin tidak mendapat manfaat dari penulisan konkuren (seperti yang dicatat oleh komentator lain), ini menyoroti tuntutan kinerja yang diberikan pengembang pada sistem ini.
Aplikasi lain yang dibahas termasuk sistem e-commerce yang memproses beberapa transaksi checkout secara bersamaan, pipeline ingesti data real-time, dan aplikasi yang melakukan pekerjaan komputasi dalam transaksi. Kemampuan untuk menjalankan pekerjaan agregasi latar belakang atau inferensi machine learning bersama dengan operasi database normal dapat secara signifikan memperluas utilitas SQLite dalam arsitektur aplikasi modern.
Kasus Penggunaan yang Diidentifikasi Komunitas untuk Concurrent Writes
- Sistem ingesti data bervolume tinggi yang memerlukan pemrosesan paralel
- Aplikasi yang melakukan pekerjaan komputasi di dalam transaksi
- Platform e-commerce yang memproses operasi checkout secara bersamaan
- Analitik real-time dengan augmentasi data berkelanjutan
- Sistem pemrosesan stream yang mematerialisasi event langsung ke database
- Pekerjaan agregasi latar belakang yang berjalan bersamaan dengan operasi normal
![]() |
|---|
| Throughput penulisan SQLite selama batch insert dengan jumlah thread yang berbeda, menyoroti dampak dari model single-writer |
Perpecahan Filosofis: Evolusi vs. Spesialisasi
Sebuah ketegangan mendasari mendasari seluruh diskusi: haruskah SQLite tetap fokus pada ceruk database embedded aslinya, atau haruskah berevolusi untuk bersaing dengan database client-server? Beberapa berargumen dengan keras untuk spesialisasi: SQLite dan Postgres/MySQL/dll. menempati ceruk yang berbeda. Jika Anda membutuhkan penulisan konkuren masif, bukankah itu untuk apa Postgres/MySQL/dll.?
Yang lain membalas dengan contoh evolusi alat yang sukses: Linux dirancang untuk berjalan di PC rumah, dan kami terus menjalankannya di superkomputer. Itu bekerja dengan baik. Alat berevolusi. Perspektif ini menyarankan bahwa teknologi database harus beradaptasi dengan use case baru daripada tetap dibatasi oleh niat desain asli mereka.
Debat meluas ke masalah implementasi teknis, dengan pertanyaan tentang bagaimana perubahan MVCC Turso dibagikan di antara proses dan bagaimana perbandingannya dengan pengembangan hctree resmi SQLite. Beberapa anggota komunitas menyatakan skeptisisme tentang seluruh usaha ini, bertanya-tanya apakah mencoba membuat SQLite menangani beberapa penulis konkuren seperti mengadaptasi mobil sport kecil untuk menarik trailer semi.
Melihat ke Depan dalam Lanskap Database
Seiring diskusi berlanjut, jelas bahwa kedua pendekatan memiliki nilai. Evolusi konservatif SQLite memastikan stabilitas dan keandalan untuk basis instalasinya yang besar, sementara proyek seperti Turso mengeksplorasi inovasi yang lebih agresif. Keterlibatan penuh gairah komunitas dengan detail teknis dan pertanyaan filosofis menunjukkan betapa pedulinya pengembang dengan pilihan infrastruktur mendasar ini.
Fitur penulisan konkuren di Turso tetap eksperimental, dengan keterbatasan yang diakui seputar operasi DELETE dan efisiensi memori. Namun, keberadaan fungsionalitas ini—dan diskusi hidup yang dipicunya—menunjukkan bahwa lanskap database terus berevolusi ke arah yang tak terduga. Apakah inovasi ini pada akhirnya akan menguntungkan pengembang arus utama atau tetap menjadi solusi khusus tergantung pada eksekusi teknis dan adopsi komunitas dalam bulan-bulan mendatang.
MVCC (Multi-Version Concurrency Control): Metode yang memungkinkan beberapa transaksi mengakses data yang sama secara bersamaan dengan mempertahankan versi data yang berbeda, daripada menguncinya secara eksklusif untuk satu transaksi pada satu waktu.
Referensi: Beyond the Single-Writer Limitation with Turso's Concurrent Writes


