Tags:
Node Thumbnail

ทุกวันนี้เราพูดถึง 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

Get latest news from Blognone

Comments

By: polaromonas
ContributorWindows PhoneWindows
on 15 March 2010 - 11:43 #161943

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

By: jane
AndroidUbuntu
on 15 March 2010 - 11:49 #161944
jane's picture

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

By: mk
FounderAndroid
on 15 March 2010 - 14:09 #161957 Reply to:161944
mk's picture

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

By: nat3738
ContributorAndroidRed HatUbuntu
on 15 March 2010 - 13:25 #161952

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

By: mk
FounderAndroid
on 15 March 2010 - 14:08 #161956 Reply to:161952
mk's picture

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

By: nblue
Android
on 15 March 2010 - 13:36 #161954
nblue's picture

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

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

By: Kiss on 15 March 2010 - 14:30 #161962

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

By: shikima
Windows PhoneAndroidUbuntu
on 15 March 2010 - 15:13 #161968

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

By: leenoi
Ubuntu
on 15 March 2010 - 17:19 #161971

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

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

By: jirayu
ContributorWindows PhoneBlackberrySymbian
on 15 March 2010 - 17:55 #161974

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


By: ChokBa on 16 March 2010 - 03:16 #162002
ChokBa's picture

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

By: khajochi
WriteriPhoneIn Love
on 16 March 2010 - 10:58 #162041
khajochi's picture

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

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


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

By: butlerman on 16 March 2010 - 14:27 #162116

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

By: semicolonth
ContributoriPhoneAndroidRed Hat
on 16 March 2010 - 21:37 #162227
semicolonth's picture

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

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


blog.semicolon.in.th

By: pwblog
AndroidWindows
on 16 March 2010 - 22:20 #162241
pwblog's picture

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