Transaction Design Principles

ผมพบว่าทีมพัฒนาจำนวนมาก โดยเฉพาะ system analyst กับ programmer ในบ้านเราที่ขาดทักษะด้านการออกแบบและจัดการทรานแซกชั่น หลายคนใช้ auto commit กันจนเคยชิน หรือใช้ begin-commit-rollback ธรรมดาๆ โดยไม่สัมพันธ์กับ business process และ business rule เอาเสียเลย ทั้งที่ควรจะสัมพันธ์กัน

การออกแบบทรานแซกชั่นนั้นต้องอาศัยทักษะและความรู้เชิงเทคนิคค่อนข้างมาก ทั้งยังต้องเข้าใจ business process และ business rule ของงานนั้นๆ มากทีเดียว ครั้งนี้ขอแนะนำพื้นฐานเล็กๆ น้อยๆ เกี่ยวกับ unit of work, ACID (atomicity, durability, consistency, isolation) ความรู้นอกเหนือจากนี้ อาทิ isolation level, locking (ซึ่งมีเทคนิคการล็อกหลายแบบมากๆ), nested transaction, transaction attribute, transaction process, transaction monitoring, transaction session/context ฯลฯ ไว้มีเวลาจะมาเล่าแบบละเอียดอีกที ว่าพื้นฐานสำคัญและกลเม็ดเด็ดพรายในการออกแบบทรานแซกชั่นนั้นมีอะไรอีกบ้างนะครับ…

Unit of Work

  • Unit of Work คือ หน่วยการประมวลผลภายใน process หนึ่งๆ มี context เป็นของตนเองโดยองค์ประกอบสามารถทราบได้ถึงการใช้ทรัพยากรจำนวนหนึ่ง อาทิ ซีพียู, หน่วยความจำ, ดิสก์ องค์ประกอบอื่นๆ อาทิ transaction ID, operation ที่เกี่ยวข้อง (เช่น create, delete), ข้อมูลที่ประกอบและเกิดจากการประมวลผล operation, ระยะเวลาที่ถูกสร้าง, user ที่เกี่ยวข้อง, ความคืบหน้า (progress) ที่มักมีหน่วยเป็นเปอร์เซ็นต์ เป็นต้น
  • Unit of Work มีความสำคัญมากในการออกแบบส่วนการประมวลผลและการจัดการทรานแซกชั่น เพื่อประกอบกิจกรรมต่างๆ อาทิ commit, rollback, undo, redo, save state เพื่อประกอบการทำ backup & recovery
  • ในระบบ transaction monitor ใช้ Unit of Work เพื่อผูกโยงกับเซสชั่นประเภทต่างๆ อาทิ user session, transaction session
  • ปกติ Unit of Work จัดเก็บไว้ในหน่วยความจำ ดังนั้นจึงต้องจัดการอย่างดี ไม่เช่นนั้นอาจทำให้ใช้หน่วยความจำมากเกินไป การออกแบบทรานแซกชั่นจึงต้องออกแบบหรือจัดการ Unit of Work ให้ดี

Atomicity

  • Atomicity คือ หน่วย (atom) ของ transaction โดย transaction ควรแบ่งเป็น atom หรือ transaction เล็กๆ ย่อยๆ ซึ่งแต่ละ atom มีการจัดการ transaction เป็นของตัวเอง หรือขึ้นกับการจัดการ ผลลัพธ์คือสำเร็จทั้งหมดหรือไม่ก็ rollback ทั้งหมด

Durability

  • Durability คือ ระยะเวลาของ atom หรือ transaction ที่ประมวลผล สังเกตุได้ว่าหาก atom มีขนาดใหญ่จะส่งผลต่อระยะเวลาที่นานขึ้น

Consistency

  • Consistency คือ การจัดการความน่าเชื่อถือ ความถูกต้อง และความสอดคล้องของ resource เมื่อเกิดเหตุการณ์ที่มีหลายงานเข้าถึง resource เดียวกันพร้อมๆ กัน

Isolation

  • Isolation คือ การป้องกันการผิดพลาดจากการเข้าถึง resource พร้อมๆ กัน เป็นลักษณะของการจัดการด้านการ lock resource และเพื่อป้องกันการการเกิด dead-lock

ใส่ความเห็น

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / เปลี่ยนแปลง )

Twitter picture

You are commenting using your Twitter account. Log Out / เปลี่ยนแปลง )

Facebook photo

You are commenting using your Facebook account. Log Out / เปลี่ยนแปลง )

Google+ photo

You are commenting using your Google+ account. Log Out / เปลี่ยนแปลง )

Connecting to %s