Tags:

ทุกวันนี้เราพูดถึง HTML5 กันมาก แต่แท้จริงแล้ว มาตรฐาน (ตามกระบวนการของ W3C) ยังไม่เสร็จครับ แถม HTML5 ประกอบด้วยฟีเจอร์หลายส่วน เช่น <video>, <canvas>, web workers, geolocation ฯลฯ

ข่าวนี้จะพูดถึงฟีเจอร์การเก็บข้อมูลของเว็บแอพพลิเคชันแบบออฟไลน์ครับ หรือที่เรียกกันว่า local storage

DOM Storage

แนวคิดของการเก็บข้อมูลออฟไลน์นั้น มีรากเหง้ามาตั้งแต่คุกกี้ในเบราว์เซอร์ แต่ภายหลังเมื่อเว็บแอพพลิเคชันพัฒนาขึ้น ก็เกิดความต้องการเก็บข้อมูลที่มีความสามารถมากกว่าเดิม ก่อนหน้านี้สัก 2-3 ปี ก็มีความพยายามผลักดันวิธีเก็บข้อมูลที่เรียกว่า Web Storage หรือ DOM Storage หรือ LocalStorage (เท่าที่ผมค้นข้อมูลดู คนนิยมเรียก DOM Storage กันมากที่สุด แต่ตามมาตรฐานของ W3C เรียกว่า Web Storage)

เว็บเบราว์เซอร์ในปัจจุบันทุกตัวรองรับ DOM Storage ผมเข้าใจว่าเริ่มตั้งแต่ Firefox 2 (Mozilla DOM Storage) และ Safari 4 นอกจากนี้ยังมี IE8 (MSDN Dom Storage), Chrome 4 และ Opera 10.50

หมายเหตุ: DOM Storage ใช้กับเว็บเพจ-เว็บแอพพลิเคชันเท่านั้น เป็นคนละตัวกับ mozStorage ของ Firefox ที่ extension ใช้เก็บข้อมูล

ปัญหาของ DOM Storage คือมันออกแบบมาสำหรับเบราว์เซอร์ที่มีโพรเซสเดียว พอมาเจอ Chrome และ Firefox (ในอนาคต) ที่มีหลายโพรเซสทำงานพร้อมกัน ก็เจอปัญหาการเข้าถึงข้อมูลชุดเดียวกันจากหลายโพรเซส

มีคนเสนอทางแก้ 2 ทาง

Web SQL Database

ชื่อเต็มของมันคือ Web SQL Database แต่บางคนอาจเรียก Web DB คนเสนอร่างมาตรฐานนี้คือแอปเปิล ปัจจุบันมันยังเป็น "ร่าง" ที่อยู่ในกระบวนการพิจารณาของ W3C

แนวทางนี้ก็ตามชื่อครับ คือนำฐานข้อมูล SQL มาใส่ในเบราว์เซอร์ ปัญหาของมันคือ SQL ที่ใช้กันทุกวันนี้ดันมีหลายเวอร์ชัน และในสเปกของ Web SQL Database ดันไม่ได้ระบุว่าจะใช้ SQL เวอร์ชันไหน (แต่ Safari ใช้ SQLite) นอกจากนี้มันยังมีข้อเสียตรงที่ซับซ้อนเกินไป เพราะเป็นคำสั่ง SQL เต็มขั้น

เบราว์เซอร์ที่รองรับ Web SQL Database ในตอนนี้มี Safari 4 และ Chrome (ที่ได้อานิสงส์จาก WebKit)

Indexed Database API

ชื่อเต็ม Indexed Database API หรืออาจใช้ว่า Indexed DB หรือ WebSimpleDB

เป็นอีกร่างมาตรฐานหนึ่งที่เสนอโดย Oracle แนวทางนี้ได้รับการสนับสนุนจากไมโครซอฟท์ กูเกิล และ Mozilla (รวมส่วนแบ่งตลาดเบราว์เซอร์ประมาณ 90%) ส่วน Opera นั้นยังไม่ฟันธง แต่ตัวแทนของ Opera ได้ให้ความเห็นว่า "ชอบวิธีนี้มากกว่า"

แนวทางนี้มีความซับซ้อนน้อยกว่า Web SQL Database เพราะใช้ API แบบเดียวกับของ ISAM ที่ซับซ้อนน้อยกว่าการใช้ SQL query (แนวทางนี้ไม่มี query และ schema) ผลลัพธ์ที่ได้จากการเรียก API จะออกมาเป็นออปเจคต์ใน JavaScript เลย

ผู้สนับสนุนแนวทางนี้ให้ความเห็นว่า มันออกแบบมาให้ JavaScript framework ต่างๆ เช่น jQuery หรือ Dojo เรียกใช้อีกต่อหนึ่ง ดังนั้นในทางปฏิบัติแล้ว นักพัฒนาเว็บแอพพลิเคชันจะสามารถเรียกใช้ผ่าน JavaScript framework ได้ง่ายกว่า (อันนี้ผมไม่ชัวร์ว่า framework ต่างๆ จะสนับสนุน Web SQL Database ด้วยหรือไม่นะครับ)

ตอนนี้มีแนวโน้มว่า Indexed DB จะชนะสูงมาก ฝ่ายแอปเปิลยังไม่ออกความเห็นกับเรื่องนี้ แต่กูเกิลได้เริ่มส่งโค้ดของ Indexed DB เข้า WebKit แล้ว ถ้าทุกฝ่ายตกลงกันได้ การที่ Safari จะรองรับ Indexed DB ด้วย คงไม่ยากอะไรนักในทางเทคนิค

ที่มา - CNET, HTML5 does databases

Comments

By: polaromonas
ContributorWindows PhoneWindows
polaromonas's blog
on 15/03/10 11:43 #161943 toggle
polaromonas's picture

อยากรู้เรื่อง แท็ก video จังว่าสรุปจะเอายังไง


My blog

By: jane
AndroidUbuntu
jane's blog
on 15/03/10 11:49 #161944 toggle
jane's picture

browser จะเริ่มใหญ่ โต เป็น OS ขึ้นทุกวันแล้วสินะ


ความรู้ และความฉลาด ไม่ใช่สิ่งเดียวกัน จะมีประโยชน์อะไร ถ้าฉลาดแต่อยู่ในกะลา

By: mk
FounderAndroidRed HatWindows
mk's blog
on 15/03/10 14:09 #161957 Reply to:161944 toggle
mk's picture

ก็กลายเป็น Chrome OS ไปแล้วไงครับ :D


my disclaimer

By: nat3738
AndroidRed HatUbuntuWindows
nat3738's blog
on 15/03/10 13:25 #161952 toggle
nat3738's picture

อานิสงค์ สะกด อานิสงส์ นะครับ

By: mk
FounderAndroidRed HatWindows
mk's blog
on 15/03/10 14:08 #161956 Reply to:161952 toggle
mk's picture

แก้ไขแล้วครับ


my disclaimer

By: nblue
Android
nblue's blog
on 15/03/10 13:36 #161954 toggle
nblue's picture

จำได้เมื่อก่อนฟัง bill gates พูดเรื่อง web application แกบอกว่า มันจะมาแทนที่ app ในเครื่องไม่ได้ เพราะมีปัญหาเรื่องการทำงานออฟไลน์

ตอนนั้นยังคิดอยู่ว่าเออ จะเอา web app มาทำงานออฟไลน์ยังไงน๊อ พอมาเดี๋ยวนี้ ตั้งแต่ google gears, dom storage แล้วรู้สึกอะไรๆมันพัฒนาไปเร็วจริงๆ


blog.u-blue.com

By: Kiss
Kiss's blog
on 15/03/10 14:30 #161962 toggle
Kiss's picture

ผมชอบวิธี Indexed Database API มากที่สุด

By: shikima
Windows PhoneAndroidUbuntu
shikima's blog
on 15/03/10 15:13 #161968 toggle
shikima's picture

ง่า ทำไม sqlite ไม่ดีตรงไหน สงสัยต้องไปหามาอ่านเพิ่มแหละ อีกไม่เกิน 5 ปี ได้ใช้แน่นอน


CMDEVHUB เขียนเอามันส์ ลองเข้าไปดูความมันส์ได้ครับ

By: leenoi
Ubuntu
leenoi's blog
on 15/03/10 17:19 #161971 toggle
leenoi's picture

ขอบคุณมากครับสำหรับข่าว (เข้ามาตักตวงความรู้ครับ)

เข้าไปดู Web SQL Database น่าจะใช้สะดวกดีนะครับ (ไม่มีประสบการณ์แต่เข้าไปดู link ในข่าวแล้ว Web SQL Database เขียน connection คล้ายๆที่เราเขียนกันเลย)

By: MrWhisper
ContributorWindows PhoneBlackberrySymbian
MrWhisper's blog
on 15/03/10 17:55 #161974 toggle
MrWhisper's picture

เสริมนิดนึง Opera เองก็รองรับ Web SQL Database ครับ ใช้ SQLite เช่นกัน


[ JIRAYU.IN.TH ]

By: ChokBa
ChokBa's blog
on 16/03/10 3:16 #162002 toggle
ChokBa's picture

รอดูกันต่อไป


Standard Web Programmer

By: khajochi
WriteriPhoneIn Love
khajochi's blog
on 16/03/10 10:58 #162041 toggle
khajochi's picture

อืม .. ลองเข้าไปอ่าน spec ของทั้งสองมาตรฐานแล้ว ในมุมคนเขียนโปรแกรมรู้สึก ว่า Web SQL Database เขียนง่ายกว่า

แต่ถ้ามองจากปัจจุบันที่เวลาเรียก db ไม่ว่าจะ local หรือ db จริง เราก็มักจะใช้ framework ซักตัว ไม่ใช่ sql โต้งๆ ก็คิดว่าน่าจะเลือกใช้ Indexed Database API มากกว่า


แฟนพันธุ์แท้สตีฟจ็อบส์

By: butlerman
butlerman's blog
on 16/03/10 14:27 #162116 toggle
butlerman's picture

ตอนนี้ที่อยากจะรู้คือ video จะเป็นเช่นไร

By: semicolonth
ContributoriPhoneRed HatSymbian
semicolonth's blog
on 16/03/10 21:37 #162227 toggle
semicolonth's picture

Browser มันจะใหญ่ไปไหนเนี่ย

แค่นี้ก็แก้บัคกันจะแย่แล้ว T T


semicolon.in.th

By: pwblog
Blackberry
pwblog's blog
on 16/03/10 22:20 #162241 toggle
pwblog's picture

น่าสนใจและน่าติดตามครับ


apple black friday 2012