Tags:
Node Thumbnail

มาตรฐาน 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

No Description

Get latest news from Blognone

Comments

By: panurat2000
ContributorSymbianUbuntuIn Love
on 14 January 2023 - 17:05 #1274712
panurat2000's picture

ที่หลายคนอยากให้เบราว์เซอร์มีฐาข้อมูล SQL

ฐาข้อมูล => ฐานข้อมูล

By: blackdoor on 14 January 2023 - 17:40 #1274713
blackdoor's picture

น่าสนใจ แต่สงสัยว่าถ้าไม่ใช่ WebAssembly ใช้ด้วยได้ไหม เช่น PWA

By: hisoft
ContributorWindows PhoneWindows
on 14 January 2023 - 20:05 #1274719 Reply to:1274713
hisoft's picture

แค่เอา SQL DB มารันบน browser ด้วย WASM ครับ ตัวเว็บถ้าไม่ WASM ก็จะใช้ JS เหมือนเดิมนี่แหละ ส่วน PWA ไม่น่าเกี่ยวกันครับ

By: mr_tawan
ContributoriPhoneAndroidWindows
on 14 January 2023 - 21:55 #1274723 Reply to:1274713
mr_tawan's picture

ผมเข้าใจว่างี้นะครับ

  1. SQLite เขียนด้วยภาษา C ดังนั้น ถ้าจะรันบน Browser ก็ต้องรันบน WA
  2. แต่ถ้ามี SQL Server ตัวอื่นที่เขียนบน JS ก็รันบน Browser ได้เลยแหละ
  3. จุดที่น่าสนใจคือ Origin Private File System ซึ่งตัว Browser จะมี Filesystem ในตัว อยู่ใน sandbox สามารถเข้าถึงได้เลย ดังนั้นการจะเปิด file ใน Browser ตรง ๆ ก็เลยทำได้ ไม่ใช่ว่าจะต้องดาวน์โหลดมาเก็บไว้ในเมมโมรี่ให้เปลืองเหมือนในปัจจุบัน (อันนี้ถ้าผมไม่ผิดนะ ไม่ชัวร์เหมือนกัน)
  4. PWA เองก็ใช้เทคโนโลยีบราวเซอร์เป็นฐานอยู่แล้ว ก็เลยไม่น่าจะมีปัญหาอะไรครับ

  • 9tawan.net บล็อกส่วนตัวฮับ
By: big50000
AndroidSUSEUbuntu
on 14 January 2023 - 23:34 #1274727 Reply to:1274713
big50000's picture

PWA กับ WebAssembly คนละอย่างกันเลย

PWA คือเว็บที่ติดตั้งบนเครื่องได้ ส่วน WebAssembly คือ Low-level Virtual Machine ไว้จำลองการรันโค้ดใกล้รหัสเครื่องบนเบราว์เซอร์ (มีคนแผลงเอาไปรันบนที่อื่นแล้วแต่งานหลักคือบนเบราว์เซอร์)

ถ้าเบราว์เซอร์รองรับ PWA แต่ไม่รองรับ WebAssembly ก็ใช้โดยตรงไม่ได้โดยไม่แปลง WA เป็น JavaScript ธรรมดาเสียก่อน (ซึ่งก็ไม่สมบรูณ์ในกรณีส่วนใหญ่)

PWA สามารถแพ็ก WebAssembly ไปด้วยได้ แต่ขนาดอาจจะไม่น่าพิสมัยเพราะตัว Binary อาจจะใหญ่มาก

By: lew
FounderJusci's WriterMEconomicsAndroid
on 15 January 2023 - 00:56 #1274729 Reply to:1274727
lew's picture

sqlite.wasm นี่ 4xxKB เองครับ นับว่าใหญ่สำหรับเว็บ แต่ในฐานะ Desktop App แบบ PWA น่าจะพอไหว


lewcpe.com, @wasonliw

By: blackdoor on 15 January 2023 - 12:30 #1274742 Reply to:1274713
blackdoor's picture

ขอบคุณทุกท่านครับ ผมเข้าใจผิดนึกว่า PWA จะใช้ SQLite ได้ผ่าน WebSQL แต่จริง ๆ มันคนละเรื่องกันเลย 😅

พวก PWA ไปใช้ฐานข้อมูลแบบเป็น JS Database Library หรือพวก IndexedDB ดีกว่า

By: dheerapat on 14 January 2023 - 19:41 #1274717

เอ ทุกวันนี้ก็ี indexDB API อยู่แล้วนี่นา อันนี้จะมาแนวไหนน้อ

By: hisoft
ContributorWindows PhoneWindows
on 14 January 2023 - 20:08 #1274720 Reply to:1274717
hisoft's picture

IndexedDB ไม่ได้เป็น SQL ครับ ออกไปทาง key-value ที่เก็บ object

แต่ปกติผมจะใช้ PouchDB (ที่เลือก engine ด้านล่างได้อีกที default ที่ perf ดีสุดก็ IndexedDB นี่แหละ) อีกที เพื่อเอาความสามารถเพิ่มเติมเพราะ IndexedDB ความสามารถค่อนข้างน้อยมากครับ

By: big50000
AndroidSUSEUbuntu
on 14 January 2023 - 23:24 #1274728 Reply to:1274717
big50000's picture

IndexedDB เป็น key-value local storage แต่ OPFS เป็นระบบไฟล์เสมือนบนเว็บเบราว์เซอร์

ตัว IndexedDB ก็ประยุกต์เป็นระบบไฟล์ได้ แต่ต้องการ lib เฉพาะไว้จำลองระบบไฟล์ขึ้นมา แต่ OPFS แทบจะเป็นระบบไฟล์ให้เลย แก้โค้ด I/O ของตัว native lib เล็กน้อยก็ใช้งานได้