คืนค่าตารางเดลต้า

ด้วย Delta Lake คุณสามารถใช้ RESTORE คําสั่งเพื่อทําให้สถานะตารางเก่าเป็นปัจจุบันอีกครั้ง RESTORE เปลี่ยนตารางเดลต้ากลับเป็นเวอร์ชันตารางก่อนหน้าหรือเป็นสถานะตารางที่การประทับเวลาที่ระบุ

ใช้ RESTORE เมื่อคุณต้องการกู้คืนอย่างรวดเร็วจากการเปลี่ยนแปลงที่ไม่ดีโดยไม่ต้องสร้างตารางใหม่ด้วยตนเอง เนื่องจากตารางเดลต้าเก็บประวัติการทําธุรกรรม คุณจึงมักจะสามารถย้อนกลับไปยังสถานะที่ทราบว่าดีได้ในคําสั่งเดียว

RESTORE ทําอะไรได้บ้าง

RESTORE เปลี่ยนสถานะปัจจุบันของตารางเดลต้าเพื่อให้ตรงกับเวอร์ชันที่ยอมรับก่อนหน้านี้

คุณสามารถกู้คืนตารางได้เมื่อต้องการ:

  • กู้คืนจากการลบหรืออัปเดตโดยไม่ได้ตั้งใจ
  • เลิกทําการดําเนินการเขียนทับหรือผนวกที่ไม่ดีMERGE
  • ย้อนกลับการเปลี่ยนแปลง Schema ที่ทําลายปริมาณงานดาวน์สตรีม
  • กู้คืนจากความเสียหายที่เกิดจากขั้นตอนการเขียนหรือไปป์ไลน์ที่ผิดพลาด

ซึ่งแตกต่างจากคิวรีในอดีตแบบอ่านอย่างเดียว จะ RESTORE เปลี่ยนสถานะตารางสดที่ผู้อ่านใหม่เห็น

ไวยากรณ์

ใช้ฟอร์มเหล่านี้เพื่อคืนค่าตารางเดลต้า

คืนค่าเป็นเวอร์ชันตารางเดลต้าที่เฉพาะเจาะจง:

RESTORE TABLE schema_name.table_name TO VERSION AS OF 5

คืนค่าเป็นสถานะตารางที่การประทับเวลาที่ระบุ:

RESTORE TABLE schema_name.table_name TO TIMESTAMP AS OF '2026-05-01 12:00:00'

ก่อนที่คุณจะคืนค่า ให้ตรวจสอบประวัติตารางเพื่อให้คุณสามารถเลือกเวอร์ชันที่ถูกต้อง:

DESCRIBE HISTORY schema_name.table_name

เวิร์กโฟลว์การคืนค่าทั่วไปมีลักษณะดังนี้:

DESCRIBE HISTORY dbo.orders;
RESTORE TABLE dbo.orders TO VERSION AS OF 42

เมธอด PySpark DeltaTable ดําเนินการเชิงตรรกะเหมือนกับคําสั่ง SQL RESTORE TABLE

สิ่งที่เกิดขึ้นระหว่างการกู้คืน

เมื่อคุณเรียกใช้ RESTOREDelta Lake จะไม่เขียนเวอร์ชันเป้าหมายใหม่ในสถานที่ แต่จะสร้างเวอร์ชันใหม่ในบันทึกเดลต้าที่ชี้กลับไปยังไฟล์ข้อมูลที่เชื่อมโยงกับเวอร์ชันหรือการประทับเวลาที่คุณเลือก

พฤติกรรมนั้นมีผลที่สําคัญบางประการ:

  • RESTORE สร้างตารางเวอร์ชันปัจจุบันใหม่
  • ไฟล์จากจุดที่คืนค่าจะกลับมาทํางานอีกครั้ง
  • ไฟล์จากสถานะปัจจุบันการคืนค่าล่วงหน้าจะไม่ถูกลบทันที
  • ไฟล์ที่ไม่ได้อ้างอิงในขณะนี้สามารถล้างข้อมูลได้ในภายหลังด้วยVACUUM
  • การคืนค่าจะถูกบันทึกเป็นการเปลี่ยนแปลงตารางที่มีเวอร์ชัน

เนื่องจาก RESTORE มีการกําหนดเวอร์ชัน คุณจึงสามารถตรวจสอบได้ในประวัติตาราง:

DESCRIBE HISTORY schema_name.table_name

ฟื้นฟู การเดินทางข้ามเวลา และ VACUUM

RESTORE และการเดินทางข้ามเวลาใช้ประวัติศาสตร์เดลต้าเดียวกัน แต่แก้ปัญหาต่างกัน

  • ใช้ การเดินทางข้ามเวลา เมื่อคุณต้องการอ่านข้อมูลเก่าโดยไม่เปลี่ยนสถานะตารางปัจจุบัน
  • ใช้ RESTORE เมื่อคุณต้องการให้สถานะเก่ากลายเป็นสถานะปัจจุบันสําหรับการอ่านและเขียนใหม่ทั้งหมด

VACUUM ส่งผลต่อการกู้คืนเนื่องจากจะลบไฟล์ที่ไม่ได้อ้างอิงออกจากที่เก็บข้อมูล หลังจากการคืนค่า ไฟล์จากสถานะปัจจุบันก่อนหน้านี้มักจะไม่มีการอ้างอิง หากคุณไม่ต้องการอีกต่อไป คุณสามารถทําความสะอาดได้ด้วยVACUUM

สิ่งที่ตรงกันข้ามก็มีความสําคัญเช่นกัน: VACUUM สามารถป้องกันการกู้คืนในอนาคตได้ ถ้า VACUUM ลบไฟล์ที่จําเป็นสําหรับเวอร์ชันที่คุณต้องการกู้คืน RESTORE แล้ว จะล้มเหลวเนื่องจากประวัติตารางไม่สามารถเข้าถึงไฟล์ทางกายภาพเหล่านั้นได้อีกต่อไป

ข้อจำกัด

RESTORE ใช้งานได้เฉพาะเมื่อเวอร์ชันเป้าหมายยังคงมีไฟล์ข้อมูลที่จําเป็นทั้งหมดพร้อมใช้งาน

โปรดคํานึงถึงขีดจํากัดเหล่านี้:

  • คุณสามารถกู้คืนได้เฉพาะเวอร์ชันที่มีไฟล์ข้อมูลยังคงอยู่
  • หาก VACUUM ลบไฟล์เหล่านั้น การดําเนินการกู้คืนจะล้มเหลว
  • ประวัติการกู้คืนจะอยู่ภายใต้การตั้งค่าการเก็บรักษาของเดลต้า ซึ่งรวมถึง delta.logRetentionDurationและการเก็บรักษาไฟล์ข้อมูลในที่เก็บข้อมูลจริง
  • ในทางปฏิบัติ ทั้งการเก็บรักษาบันทึกธุรกรรมและการเก็บรักษาไฟล์จะส่งผลต่อระยะเวลาที่คุณสามารถกู้คืนได้

แนวทางปฏิบัติที่ดีที่สุด

ใช้แนวทางปฏิบัติเหล่านี้เพื่อลดความเสี่ยง:

  • เรียกใช้ DESCRIBE HISTORY ก่อนที่คุณจะกู้คืน เพื่อให้คุณสามารถยืนยันเวอร์ชันหรือการประทับเวลาที่ถูกต้องได้
  • ใช้คิวรีการเดินทางข้ามเวลาก่อนถ้าคุณต้องการตรวจสอบข้อมูลเก่าเท่านั้น และไม่ต้องการเปลี่ยนสถานะตารางปัจจุบัน
  • เรียกใช้ VACUUM หลังจากการคืนค่าเมื่อคุณต้องการล้างไฟล์ที่ไม่ได้อ้างอิงจากสถานะการคืนค่าล่วงหน้า
  • ทดสอบเส้นทางการคืนค่าบนตารางโคลนก่อนเมื่อคุณทํางานกับข้อมูลการผลิตที่สําคัญ