2 คะแนน โดย GN⁺ 2024-10-16 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • ทำให้สามารถใช้ sqlite3 ได้ในเบราว์เซอร์สมัยใหม่ที่รองรับ WASM
  • เบตาสาธารณะระยะแรกเริ่มต้นในเวอร์ชัน 3.40 และมีแผนทำให้ API เสถียรในรีลีส 3.41 ตามฟีดแบ็กจากชุมชน

กรณีใช้งานจริง

  • มีการใช้งานอยู่ในหลายโปรเจกต์ เช่น SQLime, Evolu, SQLiteNext
  • โปรเจกต์ที่เกี่ยวข้อง ได้แก่ sql.js ของ Alon Zakai, wa-sqlite ของ Roy Hashimoto, absurd-js ของ James Long

สรุปโดย GN⁺

  • sqlite3 WASM และ JavaScript API เป็นโปรเจกต์สำคัญที่ทำให้สามารถใช้ฐานข้อมูล sqlite3 ได้ในเว็บเบราว์เซอร์
  • มีทั้งตัวอย่างโค้ดฝั่งไคลเอนต์หลายแบบและรายละเอียดการเปลี่ยนแปลงของ API ซึ่งเป็นข้อมูลที่มีประโยชน์สำหรับนักพัฒนา
  • การเปรียบเทียบกับโปรเจกต์ที่เกี่ยวข้องช่วยให้เข้าใจความโดดเด่นและประโยชน์ใช้สอยของโปรเจกต์นี้ได้
  • โปรเจกต์ที่แนะนำซึ่งมีความสามารถคล้ายกัน ได้แก่ sql.js และ wa-sqlite

1 ความคิดเห็น

 
GN⁺ 2024-10-16
ความคิดเห็นจาก Hacker News
  • แนวคิดในการรัน SQLite ในหน่วยความจำภายในเบราว์เซอร์ และใช้เทคนิคของ Litestream กับ Cloudflare Durable Objects เพื่อสตรีม WAL log ไปยังเซิร์ฟเวอร์นั้นน่าสนใจ

    • สามารถใช้ข้อมูลฝั่งเซิร์ฟเวอร์เพื่อสร้างฐานข้อมูลฝั่งไคลเอนต์ขึ้นใหม่ได้
    • โหมด WAL ถูกตัดออกจาก SQLite WASM build มาตรฐาน จึงต้องปรับแต่งเอง
  • SQLite รุ่นที่ออกล่าสุดคือ 3.46.1 แต่หน้าเว็บยังไม่อัปเดต ทำให้เกิดความสับสนเกี่ยวกับเสถียรภาพของ API

    • น่าจะดีถ้าทีม SQLite มีแพ็กเกจ npm อย่างเป็นทางการที่รวมเวอร์ชัน WASM มาด้วย
  • โดยส่วนตัวชอบ SQLite-in-WASM ของ Pyodide มากกว่า

    • Pyodide มี WASM SQLite ให้ใช้งานฟรีเป็นส่วนหนึ่งของ Python standard library
    • ปัจจุบัน SQLite เวอร์ชันใน Pyodide คือ 3.39.0 และจำเป็นต้องอัปเดตเวอร์ชัน
  • การใช้ SQLite ในสภาพแวดล้อมแบบ local-first ให้ความรู้สึกค่อนข้างหนัก

    • การใช้ storage API พื้นฐานของเบราว์เซอร์ (โดยเฉพาะ IndexedDB) มีประสิทธิภาพมากกว่า
    • จำเป็นต้องมีโซลูชันโอเพนซอร์สที่ให้ API คล้าย SQLite
  • ใน Golang แพ็กเกจ wasm SQLite ของ ncruces ใช้งานได้ดี

    • ทำงานได้ดีในสภาพแวดล้อมอย่าง OpenBSD
  • เคยพยายามใช้ SQLite ใน ecosystem ของ Rust แต่ตอนนี้ยังขาด wrapper ที่รองรับ

    • การทำให้โค้ด emscripten wasm เข้ากันได้กับ wasm32-unknown-unknown เป็นเรื่องยาก
  • มีคำถามว่า SQLite จะกลายเป็นตัวแทนของ IndexedDB ได้หรือไม่

    • มีคำถามว่าข้อมูลจะคงอยู่ถาวรหรือไม่ และจำเป็นต้องเก็บไว้ใน File System API หรือ IndexedDB/local storage หรือไม่
  • ขนาด dependency ขั้นต่ำของ SQLite WASM อยู่ที่ประมาณ 1.3MB

    • สำหรับแอปในเบราว์เซอร์ถือว่าค่อนข้างใหญ่ แต่ในสภาพแวดล้อมอื่นอาจเหมาะสม
  • มีความเห็นว่าถ้า WebSQL เป็น SQLite จริง ๆ ecosystem ของ offline-first และ app storage ทั่วไปน่าจะดีกว่านี้

    • น่าจะดีกว่าถ้าเบราว์เซอร์ระบุชัดเจนว่ารองรับ SQLite API
  • มีการใช้ SQLite จาก WASM build และรันไทม์ Chicory เพื่อสร้างไลบรารี SQLite ที่รันบน JVM แบบล้วน

    • เป็นโปรเจกต์เชิงทดลองที่อาจมอบเครื่องมือ SQLite แบบไร้ dependency ให้กับ ecosystem ของ JVM
  • มีแผนจะรวม SQLite เข้าไปใน exaequOS.com