ข้ามไปที่เนื้อหาหลัก

เรื่องการเก็บข้อมูลการแก้ไข (LOG DATA)


หลักการเก็บ LOG และติดตามการแก้ไขเปลี่ยนแปลงข้อมูลของผู้ใช้งาน

ผมได้ลองวางแนวทางในการจัดเก็บข้อมูลไว้ดังนี้

1. เก็บเฉพาะเหตุการณ์ที่เกิดขึ้น
      จะเก็บข้อมูลเฉพาะสิ่งที่เกิดขึ้น โดยใช้หลัก 5W1H 
แต่จะไม่เก็บข้อมูลที่ถูกแก้ไขไป โดยใช้ หลักการในการเก็บข้อมูลดังนี้

  1. ใคร(Who)        คือยูสเซอร์ที่เข้าใช้งาน
  2. ทำอะไร(What)    สิ่งที่เกิดขึ้น เพิ่ม/แก้ไข/ลบ
  3. ที่ไหน(Where)    ระบุหน้าเมนู/ชื่อตารางข้อมูล/ไอดี
  4. เมื่อไหร่(When)    ระบุวันเวลาที่ทำกิจกรรม
  5. ทำไม(Why)        ระบุเหตุผล กรณีที่ แก้ไข/ลบ ข้อมูล
  6. อย่างไร(How)    หมายเหตุอื่นๆ ที่ต้องการชี้แจง (เมื่อเรียกดู)





2. เก็บข้อมูลก่อนการเปลี่ยนแปลง
      การเก็บข้อมูลก่อนการเปลี่ยนแปลงนั้น จะเป็นข้อมูลที่มีขนาดใหญ่
ยิ่งมีการแก้ไขข้อมูลบ่อยครั้ง จำนวนข้อมูลที่ต้องเก็บก็มากขึ้นตาม
ไปด้วย ดังนั้นเพื่อป้องกันฐานข้อมูลมีขนาดใหญ่เกินไป 
จึงต้องมีการลบข้อมูลที่เก่าไปแล้วออกบ้าง โดยกำหนดเงื่อนไขเป็นระยะเวลา 3 เดือน 6 เดือน 1 ปี

โดยหลักการที่กำหนดไว้ ดังนี้
  1. เมื่อมีการแก้ไขให้เก็บไว้ที่ ตาราง LOG 6 เดือน
  2. เมื่อข้อมูลที่เก็บไว้นานกว่า 6 เดือนย้ายไปที่ 1 ปี
  3. เมื่อข้อมูลที่เก็บไว้นานกว่า 1 ปี ย้ายไปเก็บเป็นไฟล์ xml
  4. เมื่อเรียกดูข้อมูล ให้ค้นหาและแสดงจากทั้ง 2 ตาราง
  5. หาไม่พบข้อมูลจากตารางทั้งสอง ให้ค้นหาจากไฟล์ xml


3. รูปแบบการจัดเก็บข้อมูล
      การ บันทึกข้อมูลจะเก็บเป็นข้อมูลต่อเนื่อง โดยมี เครื่องหมายที่กำหนดไว้คั่นกลางระหว่างข้อมู ลในแต่ละฟิลด์ เพื่อป้องกันข้อผิดพลาดจะต้องเป็น สัญลักษณ์ที่ไม่ตรงกับข้อมูลที่ต้องการเก็บ

เช่น FIELD1=>DATA1{[@]}FIELD2=>DATA2{[@]}FIELD3=>DATA3

      ฟิลด์ ที่ใช้เก็บข้อมูลจะมีเหมือนกันกับ แบบเก็บ LOG การเปลี่ยนแปลง แต่จะเพิ่มในส่วนของการเก็บข้อมูลก่อนการแก้ไขที่มีรูปแบบตามด้านบนนี้






คำแนะนำเพิ่มเติม
      ในการเก็บ LOG นั้น ถ้าเราเก็บเฉพาะชื่อผู้ใช้งานที่ล็อกอินเข้าระบบเท่านั้น อาจจะทำให้ไม่เพียงพอสำหรับใช้ยืนยันว่าใครทำรายการ ในกรณีที่มีการใช้รหัสของผู้อื่นในการทำรายการ ดังนั้นหากต้องการให้เก็บข้อมูลเจาะจงยิ่งขึ้น ให้เก็บ IP Address ของเครื่องที่ทำรายการด้วย และ IP ที่ใช้ควรจะเป็นไอพีที่ไม่ผ่านพร็อกซี่ เพราะหากมีการใช้งานพร็อกซี่ ไอพีที่ได้จะเหมือนกันหมด คือ ใช้ไอพีเดียวกันกับเครื่องพร็อกซี่นั่นเอง





PHP CI MANIA PHP Code Generator 

โปรแกรมช่วยสร้างโค้ด "ลดเวลาการเขียนโปรแกรม"
ราคาสุดคุ้ม  
http://fastcoding.phpcodemania.com


ความคิดเห็น

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

การแชร์สแกนเนอร์ ถึงทำไม่ได้แต่ก็มีวิธีช่วยประหยัดขั้นตอนการทำงาน

"พี่ครับขอใช้เครื่องพี่สแกนเอกสารหน่อยครับ" "พี่ครับขอสแกนอีกสักสองแผ่นครับ" "พี่ครับพอดีมีเอกสารต้องสแกนเพิ่มน่ะครับ" ทุกครั้งที่ต้องสแกนเอกสารเป็นไฟล์เก็บไว้ในคอมพิวเตอร์ ผมจะต้องลุกไปขอใช้เครื่องพิมพ์แบบ All-In-One ของพี่โจ้ทุกครั้ง บางครั้งก็เกรงใจแกครับ เห็นกำลังใจจดใจจ่ออยู่กับงานตรงหน้า ไหนจะต้องตอบคำถามคำโน้นคนนี้ทาง MSN บ้าง Facebook บ้าง ^___^ พอไปขอใช้เครื่องทีไรก็ดูแกจะไม่สบอารมณ์เท่าไหร่ พยายามค้นหาวิธีแชร์สแกนเนอร์จากในอินเตอร์เน็ตอยู่หลายวัน ก็ไม่เจอวิธีที่จะสามารถแชร์สแกนเนอร์ให้เครื่องอื่นได้ใช้งานได้เลย แชร์ได้แค่ให้สั่งพิมพ์จากเครื่องอื่นๆได้เท่านั้น สุดท้ายก็เลยตัดสินใจใช้เทคนิคเล็กๆ น้อยๆ ที่ได้พบเจอมาใช้ประหยัดเวลา และไม่รบกวนการทำงานและสนทนาของพี่โจ้ ได้วิธีนึง นั่นก็คือ ตั้งค่าสแกนเนอร์ให้บันทึกอัตโนมัติ ไว้ในโฟลเดอร์ที่กำหนด แล้วก็ทำการแชร์โฟลเดอร์เครื่องพี่โจ้ทิ้งไว้ซะเลย 1. ตั้งค่าให้สแกนอัตโนมัติเมื่อกดปุ่มสแกน 2. กำหนดให้บันทึกลงโฟลเดอร์ที่แชร์ไว้แล้ว (แชร์โฟลเดอร์เก็บเอกสารสแกนของคอมฯเครื่องนั้นไว้) 3. ...

เมื่อโปรแกรมเมอร์ไม่ชอบเขียนโค้ดอีกต่อไป

ในวันที่จิตใจเราเลือกหนทางใหม่ ในวันที่ทุกอย่างยังสับสนวุ่นวายเต็มหัว แต่สิ่งน่ากลัวไม่ใช่ "ทางเลือก" แต่มันคือ "ทางรอด" บางทีมันก็ยากนะ ที่จะตัดสินใจว่าสิ่งที่เลือกดีที่สุดสำหรับเราแล้วหรือไม่!! เพราะอนาคตเป็นสิ่งที่คาดเดาได้ยากเหลือเกิน แม้มันจะมีรูปแบบที่ไม่แตกต่างกันนัก และพอจะคาดเดากรรมที่ตามมาก็ตามที และเมื่อวันนั้น วันที่จะต้องตัดสินใจ มาเร็วกว่าที่คิด เราอาจจะไม่ทันตั้งตัวเลยสักนิด ความคิดที่เคยเชื่อมั่นอาจจะสั่นคลอนลงอย่างง่ายดาย ความฝันที่ไม่เคยเริ่ม มันก็เป็นได้แค่ "ความเพ้อฝัน"

FPDF ภาษาไทย กับ วรรณยุกต์ลอย

สำหรับงานเขียนโปรแกรมเว็บแอพฯ ด้วย PHP ที่ต้องทำการส่งออกข้อมูลเป็นไฟล์เอกสาร PDF นั้น เมื่อลองค้นดูแล้วก็เจอกับ FPDF เป็นคลาสที่เขียนขึ้นมาสำหรับงานนี้โดยเฉพาะ แต่กับภาษาไทยแล้วก็ต้องเจอกับปัญหาสุดคลาสสิคคือ รองรับภาษาไทยไม่ร้อยเปอร์เซ็นต์ ^^" บทความที่สอนการใช้งานเบื้องต้นที่ครอบคลุมการทำงานของ FPDF http://www.select2web.com/category/fpdf จะมีบทความแนะนำการใช้ฟอนต์ภาษไทยอยู่ที่ลิงค์นี้ http://www.select2web.com/fpdf/fpdf-lesson-10.html ดาวน์โหลดและสร้างฟอนต์มาใช้เอง http://witkub.blogspot.com/2011/11/fpdf.html สำหรับวิธีแก้ไขปัญหาวรรณยุกต์ลอย ลองดูวิธีจากที่นี่ http://punnawatt.blogspot.com/2009/07/pdf.html สุดท้ายแล้วลองทดลองมาหมด ก็ยังไม่ได้คำตอบที่ตรงใจครับ เพราะไม่สามารถแก้สระลอยได้อย่างแท้จริง เพราะเงื่อนไขข้อมูลจริงไม่อาจจะทำให้เหมือนในตัวอย่างได้ ก็เลยถอดใจเรื่องวรรณยุกต์ลอย นอกจากปัญหาเรื่องวรรณยุกต์ลอย แล้วฟอนต์บางตัวก็เกิดปัญหาวรรณยุกต์ซ้อนทับกันด้วย เช่นคำว่า "นี้" เมื่อผลลัพธ์ออกมา สระอี และวรรณยุกต์โท จะทับกัน สรุป 1. ดาวน์โหล...

PHP CI MANIA