นี่คือพื้นที่ขนาดใหญ่ - ดังนั้นคาดว่าคำถามนี้จะปิดในค่อนข้างสั้น แต่ปิดหัวของฉัน (เป็น DBA เดิมในฐานข้อมูล yuge):
มาร์ท / พื้นที่เก็บข้อมูล
คุณสามารถลดความเสี่ยงได้หากคุณมีฐานข้อมูลแยกต่างหากสำหรับการอัปเดตและฐานข้อมูลแยกต่างหากที่ทุกคนใช้ จากนั้นเป็นเพียงกรณีของการคัดลอกข้อมูลจากฐานข้อมูลหนึ่งไปยังอีกชุดหนึ่งเมื่อมีการตรวจสอบที่หลากหลายเกิดขึ้น มินิมาร์ท / ที่เก็บเป็นวิธีการอธิบายบางครั้ง แต่คุณอาจมีหลัก / รองรอง / ทาส ฯลฯ
รหัสแหล่งที่มา
สำหรับทุกสิ่งที่สามารถเปลี่ยนแปลงได้ให้มีซอร์สโค้ดซึ่งเกี่ยวข้องกับวิธีการอัปเดตข้อมูล จำนวนของสิ่งเหล่านี้คุณแตกต่างจาก DB ถึง DB แต่คุณอาจมีหนึ่งสำหรับผู้ใช้แต่ละบทบาทฟีดข้อมูลโมดูลรหัส ฯลฯ
สร้าง / อัปเดตวันที่
สิ่งที่สามารถช่วยเหลือได้อย่างมากเมื่อติดตามสิ่งที่ผิดพลาดคือการสร้างและอัปเดตข้อมูลสำหรับทุกแถว จากนั้นคุณจะเห็นได้ทันทีว่ามีการปรับปรุงแถวใด
ETL
หากการอัปเดตฐานข้อมูลมีส่วนร่วมเป็นส่วนหนึ่งของโรงงานข้อมูลคุณอาจสามารถกู้คืนไฟล์วินเทจก่อนหน้าจากไฟล์แบน
การสำรองข้อมูล
แน่นอนว่าการสำรองข้อมูลเต็มรูปแบบนั้นใช้พื้นที่จำนวนมาก แต่สถานการณ์ปกติสำหรับการสำรองข้อมูลเต็มรูปแบบจะเกิดขึ้นตามช่วงเวลาปกติ (พูดถึงรายสัปดาห์) และสำรองบางส่วนเป็นประจำบ่อยขึ้น (ทุกวัน ฯลฯ )
การกู้คืนเวลา
ขึ้นอยู่กับว่าคุณกำลังใช้ RDBMS อยู่จุดสนับสนุนบางจุดในการกู้คืนเวลา สิ่งนี้ช่วยให้คุณย้อนกลับไปยังเวลาที่ทราบสถานะที่ดี อย่างไรก็ตามสิ่งนี้ต้องการพื้นที่เก็บข้อมูลจำนวนมากซึ่งเพิ่มขึ้นตามระยะเวลาที่คุณต้องการกลับไป
การตรวจสอบบัญชี
การมีตารางการตรวจสอบจะบอกคุณว่าใคร (หรืออะไร) ทำการอัปเดตเป็นแถว นี่เป็นจุดเริ่มต้นที่ดีสำหรับการตรวจสอบ
ประวัติศาสตร์
สำหรับบางตารางที่สำคัญจะมีการคัดลอกแถวที่เกี่ยวข้องในช่วงเวลาของการอัปเดตเพื่อให้สามารถกู้คืนข้อมูลได้หากจำเป็น
การตรวจสอบข้อมูล
ตรวจสอบให้แน่ใจว่ามีการดำเนินการตรวจสอบความถูกต้องเบื้องต้นกับข้อมูลก่อนที่จะถูกจัดเก็บ - ตรวจสอบชนิดข้อมูลพื้นฐานที่มากกว่าและเหนือกว่า
ความสมบูรณ์ของการอ้างอิง
Referential integrity ไม่ใช่ bullet เงิน แต่สามารถช่วยให้มั่นใจว่าข้อมูลมีโครงสร้างที่ดี