Indexed DB มาตรฐานการเก็บข้อมูลออฟไลน์ของ HTML5

Indexed DB มาตรฐานการเก็บข้อมูลออฟไลน์ของ HTML5

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

ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

สัญลักษณ์ Flowchart

WINS คืออะไร ทำงานอย่างไร และต่างจาก DNS อย่างไร

RTO & RPO คืออะไร