4 poin oleh xguru 2023-07-07 | 1 komentar | Bagikan ke WhatsApp
  • Sistem yang memungkinkan database SQLite disimpan di cloud storage, lalu dibaca dan ditulis tanpa harus mengunduh seluruh DB
    • Saat ini mendukung Azure Blob Storage dan Google Cloud Storage
  • Menggunakan modul Block Cache VFS: berjalan dalam mode tanpa daemon (baca/tulis) dan mode daemon (hanya-baca)

Ringkasan GN⁺

  • Sistem "Cloud Backed SQLite" (CBS) menyimpan database di akun cloud storage dan memungkinkan klien storage mengaksesnya tanpa mengunduh seluruh database.
  • Beberapa klien dapat mengakses database secara bersamaan, tetapi hanya satu klien yang dapat menulis ke database.
  • CBS saat ini mendukung Azure Blob Storage dan Google Cloud Storage, dan juga dapat mendukung sistem cloud storage lainnya.
  • Database SQLite dibagi menjadi blok berukuran tetap lalu disimpan di sistem cloud storage.
  • Sistem ini terdiri dari elemen dasar untuk pengelolaan kontainer cloud storage, proses daemon yang menyediakan akses lokal ke database jarak jauh, dan modul VFS untuk mengakses database cloud.
  • Untuk menggunakan CBS, aplikasi harus membangun dan menautkan file C serta header yang diperlukan, dan menautkannya dengan libcurl dan openssl.
  • Sistem dapat diuji menggunakan rangkaian pengujian otomatis.
  • Database dapat diunggah ke akun cloud storage menggunakan alat baris perintah.
  • Untuk mengakses database yang disimpan di cloud storage, perlu membuat VFS, menghubungkan kontainer, membuka handle database, dan menjalankan skrip SQL.
  • Sistem ini menyediakan API untuk mendukung sistem cloud storage baru dan mengimplementasikan virtual table.
  • Artikel ini membahas penggunaan kontainer aman pada sistem cloud storage.
  • Kontainer dapat dihubungkan secara aman maupun tidak aman, dan koneksi aman mengenkripsi data menggunakan enkripsi AES OFB.
  • Klien lokal memerlukan kredensial cloud storage yang valid untuk memperoleh kunci enkripsi dari proses daemon.
  • Artikel ini menyebut modul bawaan "azure" dan "google" untuk sistem cloud storage.
  • API CBS dan alat baris perintah memerlukan spesifikasi modul, nama pengguna, dan nilai autentikasi.
  • Artikel ini memberikan detail modul "azure" dan cara membuat token SAS untuk autentikasi.
  • Modul "google" memerlukan project ID dan access token untuk menghubungkan CBS ke Google Cloud Storage.
  • Artikel ini menyebut kebutuhan untuk melakukan polling pada kontainer guna memeriksa akses serentak dan perubahan dari beberapa klien.
  • Blockcachevfs mendukung tiga pernyataan PRAGMA: bcv_upload, bcv_poll, dan bcv_client.
  • Antarmuka virtual table terdiri dari tabel bcv_container dan bcv_database.
  • Tabel bcv_container berisi informasi tentang kontainer yang terhubung, dan tabel bcv_database berisi informasi tentang database di tiap kontainer.
  • Artikel ini membahas struktur dan fungsi berbagai tabel dalam database blockcachevfs.
  • Tabel "bcv_database" berisi informasi tentang perubahan lokal pada database.
  • Tabel "bcv_http_log" mencatat permintaan HTTP yang dilakukan oleh VFS atau daemon yang terhubung.
  • Tabel "bcv_kv" memungkinkan aplikasi menulis data ke kontainer cloud storage.
  • Tabel "bcv_kv_meta" menyediakan akses hanya-baca ke header HTTP dari server cloud storage.
  • Artikel ini juga menyediakan referensi baris perintah untuk berbagai operasi pada database blockcachevfs.
  • Perintah daemon memungkinkan proses blockcachevfsd berjalan sebagai server dan menerima koneksi dari klien.
  • Proses daemon mendukung berbagai opsi untuk konfigurasi dan logging.

1 komentar

 
GN⁺ 2023-07-07
Opini Hacker News
  • Berbagi pengalaman seorang pengembang yang menyajikan database SQLite berukuran besar dalam bentuk chunk dan menjalankan kueri dengan permintaan rentang HTTP
  • Menyebut pustaka bernama sql.js-httpvfs yang membantu proses ini
  • Pengembang membagi database SQLite berukuran 350MB menjadi potongan-potongan kecil lalu mengunggahnya ke GitHub
  • Merekomendasikan untuk memeriksa proyek tersebut dan mengujinya melalui tab console dan network
  • Komentator lain mengangkat kekhawatiran tentang konsistensi cache, konkurensi, pemutusan jaringan, dan masalah autentikasi saat menggunakan penyimpanan data jarak jauh
  • Mengusulkan solusi yang lebih sederhana dengan menyalin database ke sistem file tmpfs secara berkala lalu menyalinnya ke object storage
  • Menekankan kelebihan seperti kemudahan pemecahan masalah, penyalinan file yang murah dan cepat, tanpa daemon eksternal, kunci global yang sederhana, keamanan thread, tanpa pemutusan jaringan, dan autentikasi eksternal
  • Komentator lain mempertanyakan mengapa SQLite, yang merupakan database tertanam, dideploy ke layanan cloud padahal PostgreSQL sudah menyelesaikan masalah yang sama
  • Berpendapat bahwa memindahkan penyimpanan ke cloud akan menurunkan latensi dan kesederhanaan
  • Komentator lain bertanya apakah ada perintah yang setara dengan pg_dump dan mysqldump untuk SQLite.
  • Disebutkan bahwa sistem saat ini mendukung Azure Blob Storage dan Google Cloud Storage, dan AWS mungkin tidak disertakan
  • Komentator lain tidak yakin apakah fitur ini didukung secara resmi atau hanya sekadar "secara teknis memungkinkan"
  • Bertanya-tanya apakah Datasette bisa dijalankan di atas penyimpanan cloud eksternal
  • Komentator lain mengangkat kekhawatiran tentang bagaimana menjamin bahwa hanya satu klien yang menulis ke database pada satu waktu
  • Disebutkan bahwa lapisan VFS SQLite cukup fleksibel dan mudah digunakan untuk mengimplementasikan object storage cloud
  • Menyebut bahwa caching bisa menjadi aspek implementasi yang rumit
  • Komentator lain merasa bingung dengan gagasan menggunakan SQLite di cloud alih-alih memakai database relasional lain, karena SQLite pada dasarnya dirancang untuk penggunaan lokal.