Tuesday, 18 March 2014

web sql database และ indexeddb คืออะไร


การเก็บข้อมูลบนเครื่องผู้ใช้งานด้วยออบเจ็ค localstorage and sessionstorage ถือได้ว่าเป็นการจัดข้อมูลที่มีความเป็นระบบระเบียบ
แต่การเก็บข้อมูลในรูปแบบคู่ลำดับของข้อมูลอาจไม่สอดคล้องกันกับโครงสร้างข้อมูลที่เก็บอยู่ในฐานข้อมูลบนเซิร์ฟเวอร์ของเว็บไซค์ก็เป็นได้
 ถ้าหากมีข้อมูลอยู่ในเครื่องผู้ใช้งานจำนวนมาก การค้นหาค่าข้อมูลจากชื่อข้อมูลอาจทำได้ล่าช้า เนื่องจากฟังชั่น getItem() จะเป็นการค้นหาแบบเรียงไปตามลำดับ ซึ่งจะทำให้ประสิทธิภาพในการดึงข้อมูลไม่ดี

  web sql database
ความหมาย  web sql database  เป็นapi ที่ใช้สำหรับจัดเก็บข้อมูลบนเครื่อง ผู้ใช้งานในรูปแบบฐานข้อมูล
โดยสามารถเพิ่ม ลบ แก้ไข และเรียกดึงค่า ข้อมูลด้วย sql มาตรฐาน
 web sql database ถูกพัฒนามาจากplugin google gear บนเว็บบราวเซอร์ google chrome  ซึ่งจะประอบด้วยไลบรารีระบบฐานข้อมูลขนาดเล็กชื่อsql lite
for exemple
Once we have a transaction object, we can call executeSql:
var db = openDatabase('mydb',
'1.0', 'my first database', 2 *1024 * 1024); db.transaction(function (tx) 
{   tx.executeSql('CREATE TABLE foo
(id unique, text)'); });
This will now create a simple table called “foo” in our database called “mydb”. Note that if the database already exists the transaction will fail, so any successive SQL wouldn’t run. So we can either use another transaction, or we can only create the table if it doesn’t exist, which I’ll do now so I can insert a new row in the same transaction:
var db = openDatabase('mydb', '1.0',
'my first database', 2 *1024 * 1024); db.transaction(function (tx) {   tx.executeSql('CREATE TABLE IF NOT EXISTS foo
(id unique, text)');   tx.executeSql('INSERT INTO foo (id, text) VALUES (1, "synergies")'); });


สำหรับรายละเอียด http://html5doctor.com/introducing-web-sql-databases/  ,http://www.tutorialspoint.com/html5/html5_web_sql.htm

indexedDB
 ในปี 2009บริษัทoracleได้เสนอ indexedDB ออกมาเป็นครั้งแรกเทคโนโลยีนี้จะเก็บข้อมูลลง
ในเครื่องผู้ใช้ในรูปแบบดัชนี(index)ของข้อมูล ทำให้สามารถเรียกใช้งานได้อย่างรวดเร็ว
 แม้จะมีข้อมูลเป็นจำนวนมากก็ตาม
indexedDB จะเก็บข้อมูลแบบคู่ลำดับโดยใช้หลักการ  Object store ซึ่งทำหน้าที่คล้ายกับ
เป็นตารางเก็บข้อมูล และมีการเรียกใช้ ออบเจ็ค cursorสำหรับอ่านข้อมูลใน Object store
อย่างไรก็ตามการใช้งาน   indexedDB ไม่จำเป็นต้องใช้คำสั่ง  sql มาตรฐาน ในการทำงาน 
แต่จะใช้วิธีการเปิดฐานข้อมูลแล้วเรียกดึงข้อมูล ในรูปแบบออบเจ็คแทน โดยออบเจ็คจะถูกเก็บเป็นโครงสร้างซึ่งการเรียกใช้งานindexedDB ค่อนข้างยุ่งยากและซับซ้อนดังนั้นในปัจจุบันจึงมีไลบรารีของjavascript เช่นjquery มาช่วยให้ทำงานง่ายขึ้น โดยสามารถเรียก indexedDBผ่านฟังก์ชั่นการทำงานต่างๆของjqueryได้ ซึ่งอยู่ในรูปฟังก์ชั่นของjquery ดังนั้นผู้พัฒนาเว็บไซต์สามารถเรียกใช้งานฟังก์ชั่นนี้ไก้จึงช่วยลดความยุ่งยากและซับซ้อนในการพัฒนาcodeได้มาก
exemple

html5rocks.indexedDB.db = null;


html5rocks.indexedDB.open = function() {

  var version = 1;
  var request = indexedDB.open("todos", version);

  request.onsuccess = function(e) {

    html5rocks.indexedDB.db = e.target.result;
    // Do some more stuff in a minute
  };

  request.onerror = html5rocks.indexedDB.onerror;

};


html5rocks.indexedDB.open = function() {

  var version = 1;
  var request = indexedDB.open("todos", version);

  // We can only create Object stores in a versionchange transaction.

  request.onupgradeneeded = function(e) {
    var db = e.target.result;

    // A versionchange transaction is started automatically.

    e.target.transaction.onerror = html5rocks.indexedDB.onerror;

    if(db.objectStoreNames.contains("todo")) {

      db.deleteObjectStore("todo");
    }

    var store = db.createObjectStore("todo",

      {keyPath: "timeStamp"});
  };

  request.onsuccess = function(e) {

    html5rocks.indexedDB.db = e.target.result;
    html5rocks.indexedDB.getAllTodoItems();
  };

  request.onerror = html5rocks.indexedDB.onerror;

};

รายละเอียด https://developer.mozilla.org/en-US/docs/IndexedDB ,http://www.html5rocks.com/en/tutorials/indexeddb/todo/

อนาคต web sql database และ indexeddb
แรกเริ่มของการพัฒนาการเก็บข้อมูลในรูปแบบฐานข้อมูลนั้นเทคโนโลยี 
 web sql database
เป็นที่ยอมรับและถูกนำไปพัฒนาเพื่อสามารถทำงานบนเว็บบราวเซอร์ต่างๆได้มากกว่า  
indexeddb โดยweb sql database สามารถรับรองการทำงานบนแพลตฟอร์ม iOS apple (iPhone,ipad)
androidด้วย
แต่ล่าสุดในปี2010 ทีมw3c ได้หยุดพัฒนาข้อกำหนดของweb sql database โดยให้เหตุผลว่า w3c
ต้องการให้เว็บบราวเซอร์ แต่ละตัวเลือกใช้ไลบรารีของฐานข้อมูลที่แตกต่างกันออกไป 
เพื่อกระตุ้นให้เกิดการพัฒนาไลบรารีใหม่ๆ แต่เว็บบราวเซอร์ต่างๆกลับเลือใช้ระบบฐานข้อมูลsql lite สำหรับweb sql databaseเหมือนกันทั้งหมด
แม้ว่าปัจจุบันจะสามารถเรียกใช้งานweb sql database ได้บนบราวเซอร์บางตัวแต่การทำงานใน
ลักษณะนี้ไม่จัดอยู่ในมาตรฐานhtml5 ดังนั้นผู้พัฒนาเว็บไซต์จะต้องทราบว่ามีบราวเซอร์ใดบ้าง
ที่รับรองการทำงานของ web sql databaseและจะต้องทราบว่าจะสามารถติดตั้งpluginตัวใดเพิ่มบ้าง
อย่างไรก็ตาม  ทีมw3c ยังคงพัฒนาข้อกำหนดของ indexeddb ให้อยู่ในมาตราฐานhtml5
ในอดีตมีเฉพาะบราวเซอร์ firefox เท่านั้นที่รับรองการทำงานของ indexeddb แต่ปัจจุบันทางgoogle
เริ่มพัฒนาไลบรารีเพื่อรับรองการทำงานของ indexeddb โดยสามารถทำงานได้googlechrome
safari และinternet explorer เองก็เร่งพัฒนาให้สามารถรับรอง indexeddb

0 ความคิดเห็น:

Post a Comment