02 Lập kế hoạch và thiết kế
Hướng dẫn cho người hướng dẫn về module lập kế hoạch — vì sao bỏ qua nó làm suy yếu mọi thứ diễn ra sau đó, và cách giữ đúng tiến độ cho một khối 90 phút làm phiếu bài tập.
Tài liệu đồng hành của người hướng dẫn cho bài học của học viên 02 Lập kế hoạch và thiết kế.
Thời lượng
Khoảng 90 phút, và gần như không có phần nào tự chạy. Đây là module duy nhất được xây quanh
việc làm phiếu bài tập cá nhân hoặc theo cặp, chứ không phải các script chạy ở nền. Bước 1
(script profiling) là phần tự động duy nhất và xong trong vài phút; mọi thứ còn lại — năm
phiếu bài tập ở Bước 2 và migration-plan.md ở Bước 3 — là nơi 90 phút thực sự tiêu tốn.
Đừng xếp giờ nghỉ vào giữa module này; nếu lớp cần nghỉ, hãy nghỉ ở ranh giới với module 03,
không phải giữa lúc đang làm phiếu bài tập.
Nội dung trình bày
- Mở đầu bằng việc nói rõ module này không phải cái gì: nó không phải một khoảng chờ trước khi migration "thật" diễn ra ở module 03. Lý do phổ biến nhất khiến các cuộc migration sang ClickHouse không đạt hiệu năng mong đợi là vấn đề kiến trúc, không phải vấn đề tuning — các đội chuyển dữ liệu trước rồi mới thiết kế sau.
- Hãy nói điều này thẳng thắn, vì đó là lập luận mạnh nhất bạn có để biện minh cho 90 phút:
đây là module mà các đối tác dễ bị dụ bỏ qua nhất, bởi vì
setup.shcủa module 03 chỉ cảnh báo khi thiếu hoặc chưa hoàn chỉnhmigration-plan.md— nó không bao giờ chặn. - Đi qua chuyện gì xảy ra nếu một đối tác vẫn bỏ qua nó: về mặt máy móc họ vẫn sẽ thành công
ở module 03 —
fact_tripsvẫn được tạo ra dưới dạngReplacingMergeTree, dữ liệu vẫn di chuyển — nhưng họ sẽ không biết vì sao là engine đó mà không phảiMergeTreethuần, sẽ không biết khóaORDER BYđược suy ra từ workload truy vấn như thế nào, sẽ không nhận radelete_insertvàFINALtrong các cấu hình dbt, và sẽ không thể giải thích hay tái lập các mức tăng tốc trong benchmark của module 05 cho một khách hàng. - Chỉ chỉ vào trang tham chiếu Worked Example sau khi các đối tác đã tự thử làm kế hoạch của mình — đó là công cụ kiểm tra đối chiếu, không phải một template để sao chép trước khi tự suy nghĩ cho hết.
Các lỗi thường gặp
ACCOUNT_USAGEkhông khả dụng khi script profiling ở Bước 1 chạy. Nó cần hoặc một khoảng chờ lan truyền 1-3 giờ sau khi tài khoản Snowflake được tạo, hoặc quyềnACCOUNTADMIN. Script tự động chuyển sang dùngINFORMATION_SCHEMAvà ghi lại những gì nó không đo được — đây là cơ chế giảm cấp có kiểm soát, không phải crash, nhưng một đối tác có thể không nhận ra là cơ chế dự phòng đã kích hoạt. Hãy chỉ họ tớiscripts/02_query_history.sql, có thể chạy thủ công trong Snowflake UI, nếu bản profile tự động trông sơ sài.- Một đối tác coi Completion Checklist trong
migration-plan.mdlà không bắt buộc. Nó bắt buộc —setup.shcủa module 03 đọc nó, và một ô chưa tick là dấu hiệu cho thấy module này đã bị bỏ qua về mặt nội dung dù bản thân tệp có tồn tại. - TODO: không có mục Troubleshooting nào trong README của chính module này, khác với module 01 và 03. Hãy điền vào đây từ buổi tổng duyệt, sau khi phần phiếu bài tập đã được chạy với một lớp học thật.
Các bước reset
profile_report.md(đầu ra của Bước 1) được gitignore và được tạo lại mới từ tài khoản Snowflake trực tiếp của chính đối tác ở mỗi lần chạy — nếu nó trông cũ hoặc sai, chỉ cần chạy lại./scripts/01_profile_snowflake.sh. Không có gì phải teardown.- Năm phiếu bài tập được điền trực tiếp trên site, với đáp án được chấm ngay lập tức và lưu
trong trình duyệt của người tham gia (localStorage), không lưu trong repo.
migration-plan.mdvẫn được sửa trực tiếp trong repo — module này không cấp phát gì ở cả hai cloud, nên không cóteardown.shvà không có cờ setup nào để dùng. - Nếu một người tham gia làm phiếu bài tập rơi vào trạng thái xấu, hãy chỉ họ tới nút "Clear answers" của chính phiếu đó thay vì một lệnh git checkout — câu trả lời của họ chưa bao giờ đi vào git, nên checkout cũng chẳng giúp được gì.
01 Môi trường nguồn
Hướng dẫn cho người hướng dẫn về việc cấp phát môi trường nguồn Snowflake — thời lượng, producer phải chạy liên tục, và cách xử lý sự cố.
03 Cấp phát và di chuyển dữ liệu
Hướng dẫn cho người hướng dẫn về module cấp phát ClickHouse và di chuyển dữ liệu — quá trình truyền dữ liệu tự chạy 40 đến 50 phút và profile dbt bị thiếu.