Snowflake MigrationClickHouse Workshops
ใบงานการวางแผน

ใบงานที่ 4: แผนระลอกการย้ายระบบ

จัดลำดับอ็อบเจกต์ NYC Taxi สิบรายการเป็นระลอกการย้ายระบบ และให้เกรดความซับซ้อนของแต่ละรายการ พร้อมผลตรวจทันทีในทุกคำตอบ

เวลาที่ใช้โดยประมาณ: 15–20 นาที เอกสารอ้างอิง: โมดูล 03 — จัดเตรียมและย้ายข้อมูล → โมดูล 04 — สร้างไปป์ไลน์ dbt ขึ้นใหม่ → โมดูล 05 — เบนช์มาร์กและตัดสวิตช์ สำหรับลำดับการดำเนินการ

แนวคิด

อ็อบเจกต์ในฐานข้อมูลมี dependency view ที่คิวรี fact_trips ไม่สามารถสร้างได้ก่อนที่ fact_trips จะมีอยู่ materialized view ที่อ่านจาก trips_raw ไม่สามารถถูกเติมข้อมูลได้ ก่อนที่ trips_raw จะมีข้อมูล การย้ายข้อมูลผิดลำดับทำให้การสร้างตารางล้มเหลว ได้ผลลัพธ์ว่างเปล่า หรือได้ข้อมูลไม่ครบซึ่งวินิจฉัยยาก

ทางออก: การวางแผนระลอก จัดทุกอ็อบเจกต์ลงในระลอกที่มีหมายเลข โดยแต่ละระลอกบรรจุ เฉพาะอ็อบเจกต์ที่ dependency ของมันถูกเติมเต็มโดยระลอกก่อนหน้าแล้ว

การให้เกรดความซับซ้อน ช่วยจัดลำดับความสำคัญของแรงที่ต้องลงในการย้ายระบบ เส้นแบ่งระหว่าง B กับ C คือว่า คำสั่ง ต้องถูกปรับโครงสร้างใหม่ หรือเพียงเปลี่ยนชนิดข้อมูลใหม่:

  • เกรด A — ง่ายมาก: ตารางมาตรฐานหรือ view ที่ส่งผ่านตรง ๆ ไม่มีตรรกะพิเศษ การแมปชนิดข้อมูลตรงไปตรงมา
  • เกรด B — ปานกลาง: มีโครงสร้างเฉพาะของ ClickHouse หนึ่งอย่างที่ต้องเรียนและทดสอบ แต่การแปลงตัวมันเองเป็นการแทนที่ — เอนจิน ClickHouse บวกคอนฟิก incremental, CREATE DICTIONARY, REFRESH EVERY ของ MV ที่รีเฟรชได้ หรือ path JSONExtract* ที่มาแทนการอ่าน VARIANT
  • เกรด C — ซับซ้อน: คำสั่งต้องถูกสร้างใหม่ ไม่ใช่แค่เปลี่ยนชนิดข้อมูล (QUALIFY ที่ห่อไว้ใน subquery, MERGE INTO ที่แทนด้วยกลยุทธ์ incremental) และการเขียนใหม่นั้น ต้องสอดคล้องกับการเลือกเอนจินและการวาง FINAL ในทุกสิ่งที่อยู่ปลายน้ำ ทดสอบอย่างรอบคอบ
  • เกรด D — ต้องออกแบบใหม่: ฟีเจอร์เฉพาะของ Snowflake ที่ไม่มีสิ่งเทียบเท่าโดยตรง (Stream → การตัดสวิตช์ producer มายัง ClickHouse, Task → MV ที่รีเฟรชได้ หรือการรัน dbt ตามกำหนดเวลา)

แบบฝึกหัดที่ 3 ด้านล่างให้คุณให้เกรดบนสเกลสามระดับที่ย่อลงแทนที่จะเป็นสี่ตัวอักษร ด้านบน — Low (เกรด A), Medium (เกรด B), High (เกรด C หรือ D) — เพราะ ความแตกต่างที่สำคัญที่สุดต่อการจัดลำดับแรงงานคือ ง่ายมาก / ต้องทดสอบ / ต้องออกแบบใหม่ ไม่ใช่การแบ่งสี่ทาง คำอธิบายของแต่ละคำตอบระบุว่าเข้ากับตัวอักษรใดใน A–D คุณจึงยังแมปกลับไปยังเกรดตัวอักษรได้

แบบฝึกหัดที่ 1: DAG ของ dependency

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

แบบฝึกหัดที่ 2: การกำหนดระลอกการย้ายระบบ

ระลอก 0 และ 1 ถูกกรอกไว้เป็นบริบท สำหรับระลอก 2 ถึง 4 ให้เลือกว่าอ็อบเจกต์ใดอยู่ใน ระลอกนั้น แล้วตอบว่าเกิดอะไรขึ้นจริง ๆ ในระลอกนั้น

แบบฝึกหัดที่ 3: การให้เกรดความซับซ้อน

ให้เกรดแต่ละอ็อบเจกต์ แล้วตอบคำถามเรื่องความท้าทายหลักของมันใต้ตาราง

คำถามทบทวน

คำถามสองข้อสุดท้ายครอบคลุมสามรายการในทะเบียนความเสี่ยงของเฉลย — การตรวจสอบ fact_trips (เกรด C) และ agg_hourly_zone_trips หลังจากที่มันลงจอด และการตรวจสอบ การตัดสวิตช์ producer ที่มาแทน TRIPS_CDC_STREAM และ CDC_CONSUME_TASK (เกรด D) ทะเบียนนี้ไม่ใช่แค่ชุดของเกรด C/D เท่านั้น: agg_hourly_zone_trips ได้เกรด Medium แต่หน้าต่างการคำนวณซ้ำแบบเลื่อนของมันคือสิ่งที่ผิดพลาดแบบละเอียดอ่อนได้ง่ายที่สุด ในไปป์ไลน์นี้

Loading worksheet...

ถ่ายลงใน migration-plan.md

คัดลอกแผนระลอกและเกรดความซับซ้อนของคุณไปยังส่วนที่ 6 ของ migration-plan.md และ ติ๊กช่อง:

- [ ] Migration wave plan: completed

ในหน้านี้

Track your progress?

Optional. We email a link to confirm your address; progress records once you open it.

Please use your work email address, not a personal one.

Progress tracking also requires accepting the current Terms of Service in Privacy settings.

TH