เป็นไปได้หรือไม่ที่จะสำรองและเรียกคืนมุมมองที่เป็นรูปธรรมด้วยข้อมูล


10

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

เป็นไปได้ใน PostgreSQL 9.4?

(ทางเลือกคือการสร้างตารางจริง แต่ยากที่จะ "รีเฟรช")


3
คุณสามารถใช้copyเพื่อสร้างการถ่ายโอนข้อมูลข้อความธรรมดา (หรือยูทิลิตี้การส่งออกอื่น ๆ ) ไม่แน่ใจว่าจะกู้คืนได้อย่างไร
a_horse_with_no_name

คุณสามารถ "ไพพ์" CSV จาก COPY ไปยัง / จากเซิร์ฟเวอร์ระยะไกลโดยใช้ psql -c "\ COPY .... " -h some_IP ฐานข้อมูลแม้ว่าเห็นได้ชัดว่าคุณต้องสร้างโครงสร้างตารางในสถานที่ที่คุณกำลังกู้คืน
John Powell

คำตอบ:


8

ไม่ได้จริงๆ คุณต้องจำไว้ว่าคำสั่ง pg_dump สร้างคำสั่ง CREATE TABLE และ INSERT อย่างง่าย ๆ อย่างมีประสิทธิภาพดังนั้นเมื่อรัน pg_restore คุณเพียงแค่เรียกใช้คำสั่ง CREATE และ INSERT บนเซิร์ฟเวอร์และการแทรกข้อมูลจะต้องใช้คำสั่ง "INSERT INTO MATERIALIZED VIEW" ที่ไม่สมเหตุสมผลเมื่อรับข้อมูลโดยทางลัดอาจเป็นอันตรายต่อ "ความสมบูรณ์" ของมุมมอง - คุณสามารถแทรกข้อมูลที่ไม่ถูกต้องในกระบวนการกู้คืนด้วยตนเองที่มุมมองจะไม่กลับมาเป็นอย่างอื่น ดังนั้นฉันสงสัยว่า PostgreSQL จะให้การสนับสนุนการเรียกคืนข้อมูลมุมมอง materialized ด้วยตนเองลงในฐานข้อมูลโดยตรง

หากคุณต้องการสำรองข้อมูลจริงฉันขอแนะนำให้ใช้ตารางแทน materialized view และเรียกใช้คำสั่ง DELETE FROM / INSERT INTO ที่กำหนดเวลาไว้ในตาราง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.