PlusMagi's Blog By Pitt Phunsanit Technology ระยะเวลาในการเก็บรักษาและทำลาย (Data Retention & Destruction – กำหนดระยะเวลาการจัดเก็บและการทำลายข้อมูลที่ชัดเจน)

ระยะเวลาในการเก็บรักษาและทำลาย (Data Retention & Destruction – กำหนดระยะเวลาการจัดเก็บและการทำลายข้อมูลที่ชัดเจน)

ในโลกดิจิทัลที่ข้อมูลคือสินทรัพย์หลัก องค์กรต่างๆ ต้องเผชิญกับความท้าทายที่ซับซ้อนกว่าแค่การจัดเก็บข้อมูล แต่คือการบริหารจัดการวงจรชีวิตของข้อมูล (Data Lifecycle Management) อย่างมีประสิทธิภาพ การปล่อยให้ข้อมูลสะสมตัวโดยไม่มีขอบเขตเวลาที่ชัดเจนไม่เพียงแต่เพิ่มภาระในการจัดเก็บและเพิ่มความเสี่ยงด้านการปฏิบัติตามกฎหมาย (Compliance Risk) เท่านั้น แต่ยังทำให้เกิด ‘ข้อมูลขยะ’ (Data Sprawl) ที่บดบังมูลค่าของข้อมูลเชิงลึกที่แท้จริง

หลักการของ Data Retention & Destruction Policy

การกำหนดนโยบายระยะเวลาในการเก็บรักษาและการทำลายข้อมูล (Data Retention and Destruction Policy) ไม่ใช่เพียงแค่การลบข้อมูล แต่คือกลไกเชิงกำกับดูแลที่ช่วยให้องค์กรสามารถพิสูจน์ได้ว่าข้อมูลแต่ละชุดถูกจัดเก็บไว้ด้วยเหตุผลทางธุรกิจหรือข้อกำหนดทางกฎหมายใดโดยเฉพาะ (เช่น ข้อกำหนดของ PDPA หรือกฎหมายบัญชี) การมีนโยบายที่ชัดเจนจึงช่วยลดความเสี่ยงจากการละเมิดความเป็นส่วนตัว (Privacy Breach) และการถูกฟ้องร้องจากการเก็บข้อมูลเกินความจำเป็น

หัวใจของการกำกับดูแลข้อมูลคือการสร้างสมดุลระหว่าง ‘ความจำเป็นทางธุรกิจ’ กับ ‘ภาระผูกพันทางกฎหมาย’ ซึ่งต้องมีการกำหนดระยะเวลา (Retention Period) ที่แน่นอนสำหรับตารางข้อมูลแต่ละตาราง

การจัดการวงจรชีวิตข้อมูลด้วย PostgreSQL

ในระดับสถาปัตยกรรมระบบ (System Architecture) การจัดการวงจรชีวิตข้อมูลควรถูกฝังอยู่ในระดับฐานข้อมูล การใช้ PostgreSQL ทำให้เราสามารถใช้ฟังก์ชันวันที่และเวลา (Date/Time Functions) เพื่อกำหนดเงื่อนไขในการทำลายข้อมูลที่หมดอายุได้อย่างแม่นยำ โดยทั่วไป เราจะใช้คอลัมน์ที่บันทึกเวลาสร้าง (เช่น created_at) เป็นตัวอ้างอิงหลัก

🛠️ ตัวอย่างการเขียนโค้ดเพื่อทำลายข้อมูลตามระยะเวลา (Hard Deletion)

สมมติว่าเรามีตาราง user_logs ที่เก็บข้อมูลการใช้งาน และตามนโยบายบริษัทกำหนดให้ต้องเก็บข้อมูลนี้ไว้เพียง 5 ปี เราสามารถใช้คำสั่ง SQL ในการลบข้อมูลที่เกินระยะเวลาดังกล่าวออกไปได้:

SQL

-- คำสั่งนี้จะลบข้อมูลทั้งหมดในตาราง user_logs ที่มีวันที่สร้าง (created_at) เกินกว่า 5 ปีที่ผ่านมา<br>DELETE FROM user_logs<br>WHERE created_at < NOW() - INTERVAL '5 years';

คำอธิบายโค้ด:
NOW() คือการดึงวันที่และเวลาปัจจุบัน
INTERVAL '5 years' คือการกำหนดช่วงเวลา 5 ปี
การใช้ DELETE ร่วมกับเงื่อนไขวันที่ ทำให้มั่นใจได้ว่าข้อมูลที่ถูกลบนั้นเป็นไปตามนโยบายที่กำหนดไว้เท่านั้น

ข้อควรระวัง: การทำลายข้อมูลอย่างปลอดภัย (Secure Destruction)

ในฐานะ Senior Architect เราต้องไม่ใช้แค่คำสั่ง DELETE ทั่วไป เพราะข้อมูลที่ถูกลบยังคงอยู่ในพื้นที่จัดเก็บชั่วคราว (Recycle Bin/Transaction Logs) ดังนั้น สำหรับข้อมูลที่มีความอ่อนไหวสูง (Highly Sensitive Data) ควรพิจารณาใช้กลไกที่เหนือกว่าการลบเชิงตรรกะ (Logical Deletion) เช่น การเข้ารหัสข้อมูล (Encryption) หรือการใช้ระบบ Data Masking ก่อนการทำลายจริง เพื่อให้แน่ใจว่าข้อมูลไม่สามารถกู้คืนได้

บทสรุป: การทำให้เป็นระบบอัตโนมัติ

การบริหารจัดการ Data Retention ไม่ควรเป็นงานที่ทำด้วยมือ (Manual Task) แต่ควรถูกทำให้เป็นระบบอัตโนมัติ (Automated Process) โดยการตั้งเวลาให้ PostgreSQL รันสคริปต์ DELETE นี้เป็นประจำทุกคืนผ่านเครื่องมืออย่าง pg_cron หรือ Job Scheduler ภายนอก เพื่อให้องค์กรสามารถรักษาความสะอาดของข้อมูล (Data Hygiene) ลดความเสี่ยงทางกฎหมาย และยังคงรักษามูลค่าของข้อมูลที่จำเป็นต่อการดำเนินธุรกิจได้อย่างยั่งยืน

Exit mobile version