Penulisan Ulang SQLite oleh Turso Mengalami Bug Korupsi 1GB Akibat Lock-Byte Page yang Tidak Terdokumentasi

Tim Komunitas BigGo
Penulisan Ulang SQLite oleh Turso Mengalami Bug Korupsi 1GB Akibat Lock-Byte Page yang Tidak Terdokumentasi

Turso , sebuah proyek ambisius untuk menulis ulang SQLite dari awal menggunakan Rust , baru-baru ini menghadapi masalah korupsi data yang membingungkan dan memicu perdebatan sengit di komunitas pengembang. Bug tersebut muncul setiap kali database melewati batas 1GB, yang menyebabkan kegagalan pemeriksaan integritas di SQLite asli. Apa yang tampak seperti cacat kritis dalam penulisan ulang mereka ternyata adalah fitur SQLite terdokumentasi yang diabaikan oleh tim.

Ringkasan Proyek Turso:

  • Bahasa: Penulisan ulang SQLite menggunakan Rust
  • Status: Saat ini dalam fase alpha
  • Fitur Baru: CDC, penulisan bersamaan, enkripsi
  • Pengujian: Menggunakan Deterministic Simulation Testing (DST)
  • Model Bisnis: Open source dengan layanan cloud komersial

Misteri Korupsi 1GB

Masalah ini pertama kali muncul ketika insinyur Turso menemukan bahwa setiap database yang melewati 1GB akan memicu peringatan korupsi dalam pemeriksaan integritas SQLite . Waktunya sangat tepat - bukan sekitar 1GB, tetapi tepat pada ambang batas 1GB. Tidak peduli apakah data berasal dari satu blob besar atau ribuan sisipan kecil. Konsistensi ini membuat bug tersebut dapat diprediksi sekaligus membingungkan.

Metodologi pengujian canggih tim, yang sangat bergantung pada Deterministic Simulation Testing, sama sekali melewatkan masalah ini. Tes injeksi kesalahan mereka, yang dirancang untuk mensimulasikan kegagalan dunia nyata, mencegah database tumbuh cukup besar untuk mencapai batas 1GB. Hanya ketika mereka menambahkan pengujian tanpa kesalahan simulasi, pola tersebut muncul dengan jelas.

Kritik Komunitas atas Penelitian Dasar

Respons komunitas pengembang sangat cepat dan kritis. Banyak yang mempertanyakan bagaimana tim yang mengklaim membangun sistem yang kompatibel bisa melewatkan aspek fundamental dari arsitektur SQLite . Kritik berpusat pada apa yang dilihat banyak orang sebagai kegagalan dalam melakukan penelitian dasar sebelum mencoba penulisan ulang yang begitu ambisius.

Bagaimana mungkin kalian berhasil menulis klon SQLite tanpa membaca deskripsi format filenya?

Lock-byte page pada batas 1GB bukanlah pengetahuan tersembunyi - ini terdokumentasi dengan jelas dalam dokumentasi format file resmi SQLite dan telah ada selama lebih dari satu dekade. Fitur ini ada untuk menangani mekanisme penguncian file, tetapi implementasi Turso tidak memperhitungkannya, yang menyebabkan masalah kompatibilitas.

Percakapan digital antara para pengembang yang membahas masalah terkait debugging database dan pemeriksaan integritas
Percakapan digital antara para pengembang yang membahas masalah terkait debugging database dan pemeriksaan integritas

Masalah Sebenarnya di Balik Bug

Akar penyebabnya sebenarnya bukan korupsi data dalam database Turso . Pemeriksaan integritas mereka sendiri menunjukkan bahwa database berfungsi dengan baik. Masalahnya adalah SQLite mengharapkan pending byte tertentu pada batas 1GB untuk mekanisme pengunciannya. Tanpa fitur ini diimplementasikan dengan benar, SQLite menginterpretasikan database sebagai rusak, meskipun data itu sendiri tetap utuh.

Revelasi ini menyoroti kekhawatiran yang lebih luas di komunitas tentang tantangan menciptakan sistem yang benar-benar kompatibel. Ketika perangkat lunak asli memiliki perilaku dan kasus tepi yang terakumulasi selama puluhan tahun, bahkan fitur yang terdokumentasi dengan baik dapat dengan mudah diabaikan selama upaya implementasi ulang.

Detail Halaman Lock-Byte SQLite:

  • Lokasi: Tepat pada tanda 1GB dalam file database
  • Tujuan: Mekanisme penguncian file untuk akses bersamaan
  • Dokumentasi: Tersedia dalam spesifikasi format file resmi SQLite
  • Dampak: Diperlukan untuk kompatibilitas SQLite, menyebabkan kegagalan pemeriksaan integritas jika hilang

Pelajaran untuk Kompatibilitas Database

Insiden ini menimbulkan pertanyaan penting tentang pendekatan untuk menulis ulang sistem yang sudah mapan. Meskipun tujuan Turso untuk menambahkan fitur seperti CDC (Change Data Capture), penulisan bersamaan, dan enkripsi sangat berharga, perdebatan komunitas menunjukkan bahwa tinjauan dokumentasi menyeluruh harus mendahului upaya implementasi.

Perbaikan itu sendiri cukup mudah setelah masalah teridentifikasi - mengimplementasikan mekanisme lock-byte page yang diharapkan SQLite . Namun, proses penemuan mengungkap celah dalam metodologi pengujian dan praktik penelitian yang dapat mempengaruhi aspek kompatibilitas lain dari proyek ini.

Catatan: CDC (Change Data Capture) adalah teknik untuk melacak perubahan dalam database sehingga aplikasi dapat merespons perubahan tersebut secara real-time.

Referensi: An adventure in writing compatible systems