ทุกวันนี้เราพูดถึง 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
on
อยากรู้เรื่อง แท็ก video
polaromonas Mon, 15/03/2010 - 11:43
อยากรู้เรื่อง แท็ก video จังว่าสรุปจะเอายังไง
browser จะเริ่มใหญ่ โต เป็น
jane Mon, 15/03/2010 - 11:49
browser จะเริ่มใหญ่ โต เป็น OS ขึ้นทุกวันแล้วสินะ
ก็กลายเป็น Chrome OS
mk Mon, 15/03/2010 - 14:09
In reply to browser จะเริ่มใหญ่ โต เป็น by jane
ก็กลายเป็น Chrome OS ไปแล้วไงครับ :D
อานิสงค์ สะกด อานิสงส์ นะครับ
nat3738 Mon, 15/03/2010 - 13:25
อานิสงค์ สะกด อานิสงส์ นะครับ
แก้ไขแล้วครับ
mk Mon, 15/03/2010 - 14:08
In reply to อานิสงค์ สะกด อานิสงส์ นะครับ by nat3738
แก้ไขแล้วครับ
จำได้เมื่อก่อนฟัง bill gates
nblue Mon, 15/03/2010 - 13:36
จำได้เมื่อก่อนฟัง bill gates พูดเรื่อง web application
แกบอกว่า มันจะมาแทนที่ app ในเครื่องไม่ได้ เพราะมีปัญหาเรื่องการทำงานออฟไลน์
ตอนนั้นยังคิดอยู่ว่าเออ จะเอา web app มาทำงานออฟไลน์ยังไงน๊อ
พอมาเดี๋ยวนี้ ตั้งแต่ google gears, dom storage แล้วรู้สึกอะไรๆมันพัฒนาไปเร็วจริงๆ
ผมชอบวิธี Indexed Database
Kiss Mon, 15/03/2010 - 14:30
ผมชอบวิธี Indexed Database API มากที่สุด
ง่า ทำไม sqlite ไม่ดีตรงไหน
shikima Mon, 15/03/2010 - 15:13
ง่า ทำไม sqlite ไม่ดีตรงไหน สงสัยต้องไปหามาอ่านเพิ่มแหละ อีกไม่เกิน 5 ปี ได้ใช้แน่นอน
ขอบคุณมากครับสำหรับข่าว
leenoi Mon, 15/03/2010 - 17:19
ขอบคุณมากครับสำหรับข่าว (เข้ามาตักตวงความรู้ครับ)
เข้าไปดู Web SQL Database น่าจะใช้สะดวกดีนะครับ (ไม่มีประสบการณ์แต่เข้าไปดู link ในข่าวแล้ว Web SQL Database เขียน connection คล้ายๆที่เราเขียนกันเลย)
เสริมนิดนึง Opera เองก็รองรับ
jirayu Mon, 15/03/2010 - 17:55
เสริมนิดนึง Opera เองก็รองรับ Web SQL Database ครับ ใช้ SQLite เช่นกัน
รอดูกันต่อไป
ChokBa Tue, 16/03/2010 - 03:16
รอดูกันต่อไป
อืม .. ลองเข้าไปอ่าน spec
khajochi Tue, 16/03/2010 - 10:58
อืม .. ลองเข้าไปอ่าน spec ของทั้งสองมาตรฐานแล้ว ในมุมคนเขียนโปรแกรมรู้สึก ว่า Web SQL Database เขียนง่ายกว่า
แต่ถ้ามองจากปัจจุบันที่เวลาเรียก db ไม่ว่าจะ local หรือ db จริง เราก็มักจะใช้ framework ซักตัว ไม่ใช่ sql โต้งๆ ก็คิดว่าน่าจะเลือกใช้ Indexed Database API มากกว่า
ตอนนี้ที่อยากจะรู้คือ video
butlerman Tue, 16/03/2010 - 14:27
ตอนนี้ที่อยากจะรู้คือ video จะเป็นเช่นไร
Browser
semicolonth Tue, 16/03/2010 - 21:37
Browser มันจะใหญ่ไปไหนเนี่ย
แค่นี้ก็แก้บัคกันจะแย่แล้ว T T
น่าสนใจและน่าติดตามครับ
pwblog Tue, 16/03/2010 - 22:20
น่าสนใจและน่าติดตามครับ