มาตรฐาน WebSQL เคยได้รับความสนใจช่วงสิบปีที่แล้ว ที่หลายคนอยากให้เบราว์เซอร์มีฐานข้อมูล SQL ใช้งานได้ในตัวโดยไม่ต้องเชื่อมต่อเซิร์ฟเวอร์ แต่มาตรฐานนี้ก็ไม่ได้รับความนิยมนักทำให้เบราว์เซอร์หยุดซัพพอร์ตกันไปโดย Chrome เองก็ประกาศเตรียมถอด WebSQL ตั้งแต่ Chrome 105 เมื่อปีที่แล้วแต่ยังสามารถเปิด policy กลับมาใช้งานได้ ล่าสุดกูเกิลโชว์ให้ดูว่านักพัฒนาที่ต้องการใช้ SQL ในเบราว์เซอร์ตอนนี้สามารถใช้งานได้ด้วยเทคโนโลยี WebAssembly และ OPFS
WebAssembly เปิดทางให้ซอฟต์แวร์เนทีฟแพลตฟอร์มต่างๆ สามารถคอมไพล์เป็นไบนารีเพื่อมารันในเบราว์เซอร์ได้ และโครงการ SQLite ก็รองรับแพลตฟอร์ม WebAssembly เป็นทางการเมื่อปลายปี 2022 ที่ผ่านมา ส่วน Origin Private File System (OPFS) นั้นเป็นระบบไฟล์ในเบราว์เซอร์ ทำให้โค้ดที่รันในเบราว์เซอร์สามารถสร้าง, อ่าน, เขียน ไฟล์ในระบบไฟล์เสมือนที่จำกัดอยู่ในโดเมนของตัวเองเหมือนการสร้างตัวแปรหรือข้อมูล cookie
บทความของกูเกิลแสดงว่าเมื่อใช้เทคโนโลยีสองส่วนร่วมกัน นักพัฒนาเว็บก็สามารถสร้างฐานข้อมูลด้วย SQLite สั่งเขียนอ่านได้เหมือนมี API รองรับ SQL อยู่ในเบราว์เซอร์โดยตรง แถมยังสามารถดาวน์โหลดตัวฐานข้อมูลออกไปใช้ข้างนอกได้ถ้าต้องการ
การใช้งาน WebAssembly ร่วมกับ SQLite.wasm และ OPFS ทำให้นักพัฒนาสามารถใช้เทคโนโลยีอื่นๆ ได้อีกมาก ที่ผ่านมามีการสาธิต เช่น การใช้ Python ในเบราว์เซอร์แทนจาวาสคริปต์
ที่มา - Google Developer Blog
Comments
ฐาข้อมูล => ฐานข้อมูล
น่าสนใจ แต่สงสัยว่าถ้าไม่ใช่ WebAssembly ใช้ด้วยได้ไหม เช่น PWA
แค่เอา SQL DB มารันบน browser ด้วย WASM ครับ ตัวเว็บถ้าไม่ WASM ก็จะใช้ JS เหมือนเดิมนี่แหละ ส่วน PWA ไม่น่าเกี่ยวกันครับ
ผมเข้าใจว่างี้นะครับ
PWA กับ WebAssembly คนละอย่างกันเลย
PWA คือเว็บที่ติดตั้งบนเครื่องได้ ส่วน WebAssembly คือ Low-level Virtual Machine ไว้จำลองการรันโค้ดใกล้รหัสเครื่องบนเบราว์เซอร์ (มีคนแผลงเอาไปรันบนที่อื่นแล้วแต่งานหลักคือบนเบราว์เซอร์)
ถ้าเบราว์เซอร์รองรับ PWA แต่ไม่รองรับ WebAssembly ก็ใช้โดยตรงไม่ได้โดยไม่แปลง WA เป็น JavaScript ธรรมดาเสียก่อน (ซึ่งก็ไม่สมบรูณ์ในกรณีส่วนใหญ่)
PWA สามารถแพ็ก WebAssembly ไปด้วยได้ แต่ขนาดอาจจะไม่น่าพิสมัยเพราะตัว Binary อาจจะใหญ่มาก
sqlite.wasm นี่ 4xxKB เองครับ นับว่าใหญ่สำหรับเว็บ แต่ในฐานะ Desktop App แบบ PWA น่าจะพอไหว
lewcpe.com, @wasonliw
ขอบคุณทุกท่านครับ ผมเข้าใจผิดนึกว่า PWA จะใช้ SQLite ได้ผ่าน WebSQL แต่จริง ๆ มันคนละเรื่องกันเลย 😅
พวก PWA ไปใช้ฐานข้อมูลแบบเป็น JS Database Library หรือพวก IndexedDB ดีกว่า
เอ ทุกวันนี้ก็ี indexDB API อยู่แล้วนี่นา อันนี้จะมาแนวไหนน้อ
IndexedDB ไม่ได้เป็น SQL ครับ ออกไปทาง key-value ที่เก็บ object
แต่ปกติผมจะใช้ PouchDB (ที่เลือก engine ด้านล่างได้อีกที default ที่ perf ดีสุดก็ IndexedDB นี่แหละ) อีกที เพื่อเอาความสามารถเพิ่มเติมเพราะ IndexedDB ความสามารถค่อนข้างน้อยมากครับ
IndexedDB เป็น key-value local storage แต่ OPFS เป็นระบบไฟล์เสมือนบนเว็บเบราว์เซอร์
ตัว IndexedDB ก็ประยุกต์เป็นระบบไฟล์ได้ แต่ต้องการ lib เฉพาะไว้จำลองระบบไฟล์ขึ้นมา แต่ OPFS แทบจะเป็นระบบไฟล์ให้เลย แก้โค้ด I/O ของตัว native lib เล็กน้อยก็ใช้งานได้