ข้อแตกต่างระหว่าง DOM กับ SAX ในการทำงานกับ XML
[audio:http://www.jquerytips.com/song/move_bitch.mp3]
วันนี้มาปูพื้นเรื่อง XML กันอีกสักหน่อย การใทำงานกับเอกสาร XML เราจะทำงานผ่าน "xml parser" เพื่อเป็นการดึงชุดข้อมูลมาทำงาน ซึ่งจะมีอยู่ 2 วิธีหลักๆ ก็คือ DOM และ SAX
โดยทั้ง 2 กันต่างกันยังไงบ้างมาดูกัน
DOM (Document object model)
1. การเข้าถึงข้อมูล: เป็นการสุ่ม (random)
2. การอ่านข้อมูล: เป็นการโหลดเอกสาร XML มาทั้งหมด
3. การจัดการข้อมูล: สามารถจัดการได้ (สร้าง, แก้ไข, ลบ)
SAX (Simple API for XML)
1. การเข้าถึงข้อมูล: ตามลำดับ (sequence)
2. การอ่านข้อมูล: อ่านทีละชุด เฉพาะข้อมูลที่ต้องการเข้าถึง
3. การจัดการข้อมูล: อ่านได้อย่างเดียว
โดยการอ่านแบบ SAX จะเป็นการอ่านเฉพาะจุดที่เราต้องการเข้าถึง และถ้าต้องการเข้าถึงข้อมูลชุดอื่นๆ อีก จะมีการเรียกอ่าน เอกสาร xml ซ้ำ
ส่วนการอ่านแบบ DOM จะเป็นการเรียกเพียงครั้งเดียว และจัดเอกสารให้อยู่ในรูปแบบ "Tree" เมื่อจะเข้าถึงข้อมูล node อื่นๆ ก็สามารถเข้าถึงได้เลย ไม่ต้องเรียกซ้ำ
ทั้ง 2 ตัวมีข้อดีข้อเสีย ต่างกันคือ...
ถ้าข้อมูลมีจำนวนมาก ทั้ง 2 ตัวจะกินหน่วยความจำไม่ต่างกัน แต่ SAX จะอ่านข้อมูลเร็วกว่า
แต่ถ้าข้อมูลมีจำนวนมาก การบริโภคหน่วยความจำของ SAX จะมีมากกว่าค่อนข้างเยอะ ดังนั้นการเข้าถึงข้อมูลของ SAX ก็จะช้าตามลงไปด้วย
แต่ท้ายที่สุด เมื่อโหลดเอกสารเสร็จทั้งหมดแล้ว SAX ก็จะมีความเร็วเหนือกว่า DOM
สำหรับ PHP5 ลองศึกษาการใช้งานของ ทั้ง 2 วิธีได้ตาม link ด้านล่างเลยครับ
1. วิธีแบบ SAX
2. วิธีแบบ DOM
เอาล่ะ คิดว่าบทความครั้งนี้ คงช่วยให้เพื่อนๆ ตัดสินใจถูก ว่าในคราวหน้า เราควรจะเลือกใช้งานแบบไหนดี เวลาเจอ ไฟล์ XML มากองตรงหน้านะครับ ^^
วันนี้มาปูพื้นเรื่อง XML กันอีกสักหน่อย การใทำงานกับเอกสาร XML เราจะทำงานผ่าน "xml parser" เพื่อเป็นการดึงชุดข้อมูลมาทำงาน ซึ่งจะมีอยู่ 2 วิธีหลักๆ ก็คือ DOM และ SAX
โดยทั้ง 2 กันต่างกันยังไงบ้างมาดูกัน
DOM (Document object model)
1. การเข้าถึงข้อมูล: เป็นการสุ่ม (random)
2. การอ่านข้อมูล: เป็นการโหลดเอกสาร XML มาทั้งหมด
3. การจัดการข้อมูล: สามารถจัดการได้ (สร้าง, แก้ไข, ลบ)
SAX (Simple API for XML)
1. การเข้าถึงข้อมูล: ตามลำดับ (sequence)
2. การอ่านข้อมูล: อ่านทีละชุด เฉพาะข้อมูลที่ต้องการเข้าถึง
3. การจัดการข้อมูล: อ่านได้อย่างเดียว
โดยการอ่านแบบ SAX จะเป็นการอ่านเฉพาะจุดที่เราต้องการเข้าถึง และถ้าต้องการเข้าถึงข้อมูลชุดอื่นๆ อีก จะมีการเรียกอ่าน เอกสาร xml ซ้ำ
ส่วนการอ่านแบบ DOM จะเป็นการเรียกเพียงครั้งเดียว และจัดเอกสารให้อยู่ในรูปแบบ "Tree" เมื่อจะเข้าถึงข้อมูล node อื่นๆ ก็สามารถเข้าถึงได้เลย ไม่ต้องเรียกซ้ำ
ทั้ง 2 ตัวมีข้อดีข้อเสีย ต่างกันคือ...
ถ้าข้อมูลมีจำนวนมาก ทั้ง 2 ตัวจะกินหน่วยความจำไม่ต่างกัน แต่ SAX จะอ่านข้อมูลเร็วกว่า
แต่ถ้าข้อมูลมีจำนวนมาก การบริโภคหน่วยความจำของ SAX จะมีมากกว่าค่อนข้างเยอะ ดังนั้นการเข้าถึงข้อมูลของ SAX ก็จะช้าตามลงไปด้วย
แต่ท้ายที่สุด เมื่อโหลดเอกสารเสร็จทั้งหมดแล้ว SAX ก็จะมีความเร็วเหนือกว่า DOM
สำหรับ PHP5 ลองศึกษาการใช้งานของ ทั้ง 2 วิธีได้ตาม link ด้านล่างเลยครับ
1. วิธีแบบ SAX
2. วิธีแบบ DOM
เอาล่ะ คิดว่าบทความครั้งนี้ คงช่วยให้เพื่อนๆ ตัดสินใจถูก ว่าในคราวหน้า เราควรจะเลือกใช้งานแบบไหนดี เวลาเจอ ไฟล์ XML มากองตรงหน้านะครับ ^^

0 comments