หมายเหตุ
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลอง ลงชื่อเข้าใช้หรือเปลี่ยนไดเรกทอรีได้
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลองเปลี่ยนไดเรกทอรีได้
ด้วย 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หลังจากการคืนค่าเมื่อคุณต้องการล้างไฟล์ที่ไม่ได้อ้างอิงจากสถานะการคืนค่าล่วงหน้า - ทดสอบเส้นทางการคืนค่าบนตารางโคลนก่อนเมื่อคุณทํางานกับข้อมูลการผลิตที่สําคัญ