0Pricing
SQL Academy · บทเรียน

การจำลองแบบเชิงตรรกะสำหรับการแบ่งข้อมูล

ใช้การจำลองแบบเชิงตรรกะแบบ PUBLICATION/SUBSCRIPTION เพื่อย้ายตารางระหว่างคลัสเตอร์และรองรับการอัปเกรดรุ่นใหญ่

การจำลองแบบเชิงตรรกะสำหรับการแบ่งข้อมูล เป็นบทเรียน SQL Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน SQL Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส SQL Academy มีบทเรียนทั้งหมด 4 บทเรียน

การจำลองข้อมูลแบบตรรกะเทียบกับแบบกายภาพ

แบบกายภาพจำลอง BYTES ของ WAL ซึ่งครอบคลุมทั้งคลัสเตอร์และต้องใช้เวอร์ชันเดียวกัน ส่วนแบบ ตรรกะจำลอง ROWS ของตารางที่เลือก และอาจทำงานข้ามเวอร์ชัน PG ได้:

  • สมัครรับข้อมูลเฉพาะตารางที่ต้องการ
  • จำลองจาก PG 14 → PG 16 เพื่ออัปเกรด
  • ทำงานสองทางหรือแบบหลายเซิร์ฟเวอร์หลักได้เมื่อกำหนดค่าอย่างระมัดระวัง
  • อนุญาตให้ใช้โครงสร้างสคีมาที่แตกต่างกัน

การตั้งค่า: ผู้เผยแพร่

กำหนดให้เซิร์ฟเวอร์หลักเป็นผู้เผยแพร่:

-- postgresql.conf
wal_level = logical

-- Create a publication:
CREATE PUBLICATION pub_orders FOR TABLE orders, order_items;

-- Or all tables in the database:
CREATE PUBLICATION pub_all FOR ALL TABLES;

การตั้งค่า: ผู้สมัครรับข้อมูล

บนฐานข้อมูลปลายทาง:

CREATE SUBSCRIPTION sub_orders
  CONNECTION 'host=primary port=5432 user=repl dbname=mydb'
  PUBLICATION pub_orders;

การซิงค์ครั้งแรก

การสมัครรับข้อมูลจะคัดลอกตารางที่ตรงกันทั้งหมดในครั้งแรก จากนั้นจึงสตรีมการเปลี่ยนแปลง สคีมาของปลายทางต้องตรงกับต้นทาง

กรณีใช้งาน: อัปเกรดเวอร์ชันหลัก

การจำลองข้อมูลแบบตรรกะเป็นวิธีสมัยใหม่ในการอัปเกรด PostgreSQL โดยมีเวลาหยุดทำงานน้อยที่สุด:

  1. สร้างคลัสเตอร์ PG16
  2. จำลองข้อมูลแบบตรรกะจาก PG14 ไปยัง PG16
  3. เปลี่ยนเส้นทางแอปเมื่อ PG16 ตามข้อมูลทันแล้ว
  4. ปิด PG14

กรณีใช้งาน: แยกฐานข้อมูล

หากต้องการแยกฐานข้อมูลขนาดใหญ่ออกเป็นฐานข้อมูลขนาดเล็กหลายฐาน:

  1. เผยแพร่เฉพาะตารางที่บริการใหม่ต้องใช้
  2. สมัครรับข้อมูลในฐานข้อมูลใหม่
  3. ย้ายการเขียนข้อมูลหลังจากข้อมูลตามทันแล้ว

กรณีใช้งาน: แบบจำลองที่มีโครงสร้างต่างกัน

จำลองข้อมูลไปยังแบบจำลองสำหรับอ่านที่มีดัชนีแตกต่างกัน หรือไปยัง PostgreSQL ในคลังข้อมูลที่มีคอลัมน์สำหรับรายงานเพิ่มเติม

ข้อขัดแย้ง

การจำลองข้อมูลแบบตรรกะไม่แก้ข้อขัดแย้งโดยอัตโนมัติ หากมีการอัปเดตแถวเดียวกันทั้งสองฝั่ง ผู้สมัครรับข้อมูลจะหยุดทำงานพร้อมข้อผิดพลาด หลีกเลี่ยงปัญหานี้โดย:

  • เขียนข้อมูลเพียงฝั่งเดียว
  • ใช้ REPLICA IDENTITY FULL เพื่อวินิจฉัยได้ดีขึ้น
  • แก้ข้อขัดแย้งด้วยตนเอง แล้วเริ่มการสมัครรับข้อมูลใหม่

การเปลี่ยนแปลงสคีมา

DDL จะไม่ถูกจำลอง ต้องใช้การเปลี่ยนแปลงสคีมาด้วยตนเองทั้งสองฝั่ง โดยทั่วไปให้ทำฝั่งผู้สมัครรับข้อมูลก่อน แล้วจึงทำฝั่งผู้เผยแพร่ หรือใช้ส่วนขยาย pglogical ซึ่งสามารถจำลอง DDL ได้

การจำลองข้อมูลบางส่วน

PG รุ่นปัจจุบันอนุญาตให้กำหนดตัวกรองแถวและรายการคอลัมน์แยกตามสิ่งพิมพ์ได้:

CREATE PUBLICATION us_only FOR TABLE customers
  WHERE (country = 'US');

CREATE PUBLICATION compact FOR TABLE users (id, email);

การแบ่งชาร์ดด้วยการจำลองข้อมูลแบบตรรกะ

ย้ายผู้เช่าไปยังชาร์ดเฉพาะ:

  1. สร้างสิ่งพิมพ์บนต้นทางโดยกรองให้เหลือผู้เช่ารายเดียว
  2. สมัครรับข้อมูลจากปลายทาง
  3. เปลี่ยนแอปให้ใช้ชาร์ดใหม่
  4. ลบข้อมูลของผู้เช่าออกจากต้นทาง

ประสิทธิภาพและความล่าช้า

การจำลองข้อมูลแบบตรรกะทำงานแบบเธรดเดียวต่อการสมัครรับข้อมูลเป็นหลัก แหล่งข้อมูลที่มีปริมาณสูงอาจได้รับประโยชน์จากสิ่งพิมพ์หรือการสมัครรับข้อมูลหลายชุด หรือเครื่องมือจากผู้พัฒนาภายนอก เช่น pglogical / Debezium

สรุป

การจำลองข้อมูลแบบตรรกะทำให้สามารถสตรีมข้อมูลในระดับแถวได้

  • ทำงานข้ามเวอร์ชันและเลือกจำลองเพียงบางตารางได้
  • อัปเกรดเวอร์ชันหลักโดยมีเวลาหยุดทำงานน้อยที่สุด
  • การแก้ข้อขัดแย้งเป็นหน้าที่ของ YOUR
  • DDL จะไม่ถูกจำลอง

ตรวจสอบความเข้าใจ

คุณต้องอัปเกรดจาก PostgreSQL 14 เป็น 16 โดยมีเวลาหยุดทำงานน้อยที่สุด ควรใช้การจำลองข้อมูลแบบใด

คำถามที่พบบ่อย

บทเรียน “การจำลองแบบเชิงตรรกะสำหรับการแบ่งข้อมูล” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การจำลองแบบเชิงตรรกะสำหรับการแบ่งข้อมูล” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส SQL Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส SQL Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การจำลองแบบเชิงตรรกะสำหรับการแบ่งข้อมูล”

ใช้การจำลองแบบเชิงตรรกะแบบ PUBLICATION/SUBSCRIPTION เพื่อย้ายตารางระหว่างคลัสเตอร์และรองรับการอัปเกรดรุ่นใหญ่ คุณปฏิบัติ SQL Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน SQL Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน SQL Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน

บทเรียน “การจำลองแบบเชิงตรรกะสำหรับการแบ่งข้อมูล” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน SQL Academy นี้ได้ไหม

ได้ บทเรียน SQL Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การจำลองแบบสตรีมมิงและ WAL
  2. การจำลองแบบเชิงตรรกะสำหรับการแบ่งข้อมูล
  3. การสลับระบบสำรองและการเลือกผู้นำ (Patroni, Stolon)
  4. แบบจำลองสำหรับอ่านและการกำหนดเส้นทางการเชื่อมต่อ
← กลับไปที่ SQL Academy