02 วางแผนและออกแบบ
คู่มือผู้สอนสำหรับโมดูลการวางแผน — เหตุใดการข้ามโมดูลนี้จึงบั่นทอนทุกอย่างที่ตามมา และวิธีคุมช่วงใบงาน 90 นาทีให้อยู่ในกำหนดเวลา
คู่มือประกอบสำหรับผู้สอนของบทเรียนผู้เรียน 02 วางแผนและออกแบบ
การจัดเวลา
ประมาณ 90 นาที และแทบไม่มีส่วนใดที่รันเองได้ นี่เป็นโมดูลเดียวที่สร้างขึ้นรอบงานใบงาน
แบบเดี่ยวหรือจับคู่ ไม่ใช่สคริปต์ที่รันอยู่เบื้องหลัง ขั้นตอนที่ 1
(สคริปต์ทำโปรไฟล์) เป็นส่วนเดียวที่เป็นระบบอัตโนมัติและเสร็จในไม่กี่นาที
ทุกอย่างที่เหลือ — ใบงานห้าใบของขั้นตอนที่ 2 และ migration-plan.md ของขั้นตอนที่ 3 — คือที่ที่
เวลา 90 นาทีหมดไปจริง ๆ อย่าวางช่วงพักไว้ภายในโมดูลนี้ หากห้องต้องการพัก
ให้พักที่รอยต่อกับโมดูล 03 ไม่ใช่ระหว่างกลางใบงาน
แนวการบรรยาย
- เริ่มด้วยการบอกว่าโมดูลนี้ไม่ใช่อะไร: มันไม่ใช่การถ่วงเวลาก่อนการย้ายข้อมูล "จริง" ใน โมดูล 03 เหตุผลที่พบบ่อยที่สุดที่การย้ายไป ClickHouse ให้ผลไม่ถึงเป้าคือปัญหาด้าน สถาปัตยกรรม ไม่ใช่ปัญหาการปรับแต่ง — ทีมย้ายข้อมูลก่อนแล้วออกแบบทีหลัง
- พูดเรื่องนี้ออกมาตรง ๆ เพราะเป็นเหตุผลที่หนักแน่นที่สุดที่มีในการใช้เวลา 90
นาทีนี้: นี่คือโมดูลที่พาร์ตเนอร์อยากข้ามมากที่สุด เพราะ
setup.shของโมดูล 03 เพียงเตือนเมื่อmigration-plan.mdหายไปหรือไม่สมบูรณ์ — มันไม่ได้ ขวางเลย - อธิบายว่าจะเกิดอะไรขึ้นหากพาร์ตเนอร์ข้ามมันไปอยู่ดี: พวกเขายังจะทำสำเร็จ
ในเชิงกลไกในโมดูล 03 —
fact_tripsยังขึ้นมาเป็นReplacingMergeTreeข้อมูลยังเคลื่อนย้ายได้ — แต่พวกเขาจะไม่รู้ว่าทำไมต้องเป็นเอนจินนั้นและไม่ใช่MergeTreeธรรมดา จะไม่รู้ว่าคีย์ORDER BYถูกอนุมานมาจากปริมาณงานคำสั่งค้นหาอย่างไร จะไม่ รู้จักdelete_insertและFINALในไฟล์คอนฟิก dbt และจะไม่สามารถ อธิบายหรือทำซ้ำผลการเร่งความเร็วในเบนช์มาร์กของโมดูล 05 ให้ลูกค้าฟังได้ - ชี้ไปที่หน้าอ้างอิงตัวอย่างที่ทำไว้แล้วเฉพาะหลังจากที่พาร์ตเนอร์ได้ลองทำแผน ของตัวเองแล้ว — มันคือเครื่องมือตรวจความสมเหตุสมผล ไม่ใช่แม่แบบให้คัดลอกก่อนจะคิดจนตกผลึก
ปัญหาที่พบบ่อย
ACCOUNT_USAGEใช้ไม่ได้เมื่อสคริปต์ทำโปรไฟล์ของขั้นตอนที่ 1 รัน มันต้องรอ ช่วงหน่วงการแพร่กระจายข้อมูล 1-3 ชั่วโมงหลังจากสร้างบัญชี Snowflake หรือต้องมีบทบาทACCOUNTADMINสคริปต์จะถอยไปใช้INFORMATION_SCHEMAโดยอัตโนมัติและ ระบุว่าอะไรที่วัดไม่ได้ — นี่คือการลดทอนอย่างนุ่มนวล ไม่ใช่การพัง แต่ พาร์ตเนอร์อาจไม่สังเกตว่าเกิดการถอยไปใช้ทางเลือกสำรอง ชี้ให้พวกเขาไปที่scripts/02_query_history.sqlซึ่งรันด้วยมือได้ใน Snowflake UI หากโปรไฟล์อัตโนมัติดูข้อมูลบางเกินไป- พาร์ตเนอร์มองว่ารายการตรวจสอบความสมบูรณ์ใน
migration-plan.mdเป็นสิ่งที่ทำหรือไม่ก็ได้ มัน ไม่ใช่ —setup.shของโมดูล 03 อ่านมัน และช่องที่ไม่ได้ติ๊กคือสัญญาณว่าโมดูล นี้ถูกข้ามในเนื้อหาแม้ว่าไฟล์จะมีอยู่ก็ตาม - TODO: ไม่มีหัวข้อการแก้ปัญหาใน README ของโมดูลนี้เอง ต่างจากโมดูล 01 และ 03 เติมส่วนนี้จากการซ้อมเมื่อได้ลองรันส่วนใบงานกับ ห้องเรียนจริงแล้ว
ขั้นตอนการรีเซ็ต
profile_report.md(ผลลัพธ์ของขั้นตอนที่ 1) ถูก gitignore ไว้และสร้างขึ้นใหม่สด ๆ จาก บัญชี Snowflake ที่ใช้งานจริงของพาร์ตเนอร์ในทุกครั้งที่รัน — หากดูเก่าหรือผิด ก็เพียง รัน./scripts/01_profile_snowflake.shใหม่ ไม่มีอะไรต้องรื้อถอน- ใบงานทั้งห้าใบกรอกบนไซต์ โดยคำตอบถูกตรวจให้คะแนนทันทีและ
บันทึกไว้ในเบราว์เซอร์ของผู้เข้าร่วม (localStorage) ไม่ใช่ในรีโป ส่วน
migration-plan.mdยังแก้ไขในที่ตั้งเดิมในรีโป — โมดูลนี้ไม่ได้จัดเตรียมสิ่งใดในคลาวด์ทั้งสอง ดังนั้นจึงไม่มีteardown.shและไม่มีแฟล็กของ setup ให้ใช้ - หากผู้เข้าร่วมทำให้ใบงานอยู่ในสภาพที่ผิดพลาด ให้ชี้พวกเขาไปที่ตัวควบคุม "Clear answers" ของใบงานนั้นเอง แทนที่จะใช้ git checkout — คำตอบของพวกเขาไม่เคยแตะ git ดังนั้น checkout จึงไม่ช่วยอะไร