SQL Academy · บทเรียน

CI สำหรับการเปลี่ยนแปลงโครงสร้างข้อมูล (GitHub Actions)

เรียกใช้การย้ายข้อมูล dbt build และการตรวจรูปแบบ SQLFluff ภายใน GitHub Actions ทุกครั้งที่มี PR พร้อมฐานข้อมูลชั่วคราว

บทเรียน 4 จาก 414 ขั้นตอน

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

เหตุใดจึงต้องใช้การผสานรวมอย่างต่อเนื่องสำหรับ SQL

การย้ายฐานข้อมูลด้วยตนเองทำให้ระบบหยุดให้บริการได้ การผสานรวมอย่างต่อเนื่องช่วยตรวจจับสิ่งต่อไปนี้:

  • การย้ายฐานข้อมูลที่นำไปใช้ไม่สำเร็จ
  • การย้ายฐานข้อมูลที่ทำให้การทดสอบเดิมไม่ผ่าน
  • การเปลี่ยนแปลงของสคีมาระหว่างสภาพแวดล้อม
  • การถดถอยจากการตรวจสอบรูปแบบและการทดสอบ

ไปป์ไลน์การผสานรวมอย่างต่อเนื่องสำหรับ SQL ที่เหมาะสม

  1. เริ่มต้น Postgres ชั่วคราว (บริการของ Docker / GitHub Actions)
  2. นำการย้ายฐานข้อมูลทั้งหมดไปใช้ใหม่ตั้งแต่ต้น
  3. นำเฉพาะการย้ายฐานข้อมูลใหม่ไปใช้กับสำเนาสคีมาของสภาพแวดล้อมก่อนใช้งานจริง
  4. เรียกใช้ dbt build / Flyway test / การทดสอบแอปพลิเคชัน
  5. ตรวจสอบรูปแบบด้วย SQLFluff
  6. สร้างรายงานเปรียบเทียบสคีมา

บริการ Postgres ของ GitHub Actions

เริ่มต้น Postgres พร้อมกับงาน:

name: ci
on: [pull_request]
jobs:
  test:
    runs-on: ubuntu-latest
    services:
      pg:
        image: postgres:16
        env:
          POSTGRES_PASSWORD: postgres
        ports: ['5432:5432']
        options: >-
          --health-cmd pg_isready
          --health-interval 10s
          --health-timeout 5s
          --health-retries 5
    steps:
      - uses: actions/checkout@v4
      - name: Run migrations
        env:
          DATABASE_URL: postgres://postgres:postgres@localhost:5432/postgres
        run: |
          ./scripts/migrate.sh

ขั้นตอนการตรวจสอบรูปแบบ

เรียกใช้การตรวจสอบรูปแบบของ SQLFluff เป็นงานแยกต่างหาก:

jobs:
  lint:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v5
      - run: pip install sqlfluff && sqlfluff lint models/

การสร้างด้วย dbt ในการผสานรวมอย่างต่อเนื่อง

สำหรับโครงการ dbt:

- name: dbt deps & build
  run: |
    pip install dbt-postgres
    dbt deps
    dbt build --profiles-dir profiles/ci

การเปรียบเทียบสคีมา

migra (หรือ apgdiff, schemahero) แสดงการเปลี่ยนแปลงที่การย้ายฐานข้อมูลนำมา:

pip install migra
migra postgres://baseline postgres://branch > diff.sql
# Comment diff.sql on the PR

กลยุทธ์เดินหน้าเท่านั้น

สร้างการย้ายฐานข้อมูลใหม่เสมอ และอย่าแก้ไขรายการที่นำไปใช้แล้ว การผสานรวมอย่างต่อเนื่องจะตรวจสอบว่าลำดับการย้ายฐานข้อมูลสามารถนำไปใช้ใหม่ตั้งแต่ต้นได้

การเปลี่ยนแปลงสคีมาที่เข้ากันได้กับเวอร์ชันก่อนหน้า

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

ข้อมูลตั้งต้นสำหรับการทดสอบ

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

- name: Seed
  run: psql $DATABASE_URL < seed/dev.sql

ค่าหมดเวลาการล็อกในการทดสอบการย้ายฐานข้อมูล

ตั้งค่า lock_timeout ในการย้ายฐานข้อมูลของการผสานรวมอย่างต่อเนื่อง เพื่อจำลองพฤติกรรมในระบบจริง:

ALTER DATABASE postgres SET lock_timeout = '5s';

การนำไปใช้ในระบบจริง

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

  • ตัวเรียกใช้การย้ายฐานข้อมูลพร้อมการลองใหม่
  • การแจ้งเตือนเมื่อไม่สำเร็จ
  • จัดทำเอกสารขั้นตอนย้อนกลับ

รูปแบบฐานข้อมูลแบบแยกสาขา

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

สรุป

SQL ควรอยู่ในการผสานรวมอย่างต่อเนื่อง

  • เริ่มต้นบริการ PG ชั่วคราว
  • นำการย้ายฐานข้อมูลไปใช้และเรียกใช้ dbt build
  • ตรวจสอบรูปแบบด้วย SQLFluff
  • เรียกใช้การทดสอบแอปพลิเคชันกับสคีมาที่ผ่านการย้ายฐานข้อมูลแล้ว
  • เปรียบเทียบสคีมาเพื่อการทบทวน

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

วิธีที่ง่ายที่สุดในการเพิ่มฐานข้อมูล Postgres ให้กับงานของ GitHub Actions คืออะไร

เริ่มต้นได้ฟรี

เรียนรู้ SQL ด้วย AI tutor — ฟรี

เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป

คอร์ส
46
บทเรียน
183

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

บทเรียน “CI สำหรับการเปลี่ยนแปลงโครงสร้างข้อมูล (GitHub Actions)” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “CI สำหรับการเปลี่ยนแปลงโครงสร้างข้อมูล (GitHub Actions)”

เรียกใช้การย้ายข้อมูล dbt build และการตรวจรูปแบบ SQLFluff ภายใน GitHub Actions ทุกครั้งที่มี PR พร้อมฐานข้อมูลชั่วคราว คุณปฏิบัติ SQL Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

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

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

บทเรียน “CI สำหรับการเปลี่ยนแปลงโครงสร้างข้อมูล (GitHub Actions)” ใช้เวลานานแค่ไหน

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

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

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

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

  1. พื้นฐาน DBT (เครื่องมือสร้างข้อมูล)
  2. SQLFluff และการตรวจรูปแบบโค้ด
  3. การทดสอบ SQL: การทดสอบ dbt, Great Expectations
  4. CI สำหรับการเปลี่ยนแปลงโครงสร้างข้อมูล (GitHub Actions)
← กลับไปที่ SQL Academy