// vdev.academy · Học database

Nơi luyện database skill cho dev đi làm.

Nhiều người học SQL qua syntax, xong bài là tự tin. Đi làm thì gặp ticket thật, não không tự viết được câu query nào. vdev luyện database skill bám job: nghĩa nghiệp vụ và engine Postgres khi cần. Outline và giá công khai trước khi bạn trả tiền.

Bạn còn đang học đại học? Đọc mục dành cho sinh viên
Outline
Công khai
Thanh toán
Việt Nam
Sau khi mua
Trọn đời

// Bạn còn đang học đại học?

Cùng cảnh học SQL qua syntax rồi thực tập bị trống. Trang chủ nói về ticket công ty; trang sinh viên nói về đồ án, thực tập, phỏng vấn. Mình cũng từng ở đó.

Lộ trình cho sinh viên

// Quen quá rồi

Chúng ta thường học SQL như thế nào?

Thông thường là syntax trước. Đến khi đi làm, ticket đầu tiên đến tay, nhiều người nhận ra não không viết được gì dù đã "học xong SQL".

Con đường quen

  1. 01

    SELECT, WHERE, JOIN, GROUP BY. Thuộc cú pháp, tick hết bài tập.

  2. 02

    Chạy được trên database mẫu nhỏ. Cảm giác đã biết SQL.

  3. 03

    Phỏng vấn trả lời vài câu lý thuyết. Vào team, chờ ticket đầu tiên.

Rồi đi làm thì

Màn hình trống. Slack đang chờ.

  • PM gửi: doanh thu theo cohort, trừ refund sau ngày 15. Bạn không biết mở bảng nào trước.
  • Copy query cũ của team, sửa vài điều kiện. Số lên dashboard sai. Họp tranh cãi, bạn không giải thích được logic.
  • Đồng nghiệp hỏi "chỗ này JOIN vì sao". Bạn chỉ nói được "em chạy thử thì ra vậy".
  • Cuối ngày ticket vẫn dang dở. Lại mở tutorial JOIN như ngày mới học.

Tại sao?

  • Tutorial và bài tập thường cho sẵn câu hỏi và bảng gọn. Công ty thì câu hỏi business đến trước, schema thật lộn xộn sau.
  • Bạn luyện gõ lệnh, chưa luyện dịch câu hỏi product thành quan hệ bảng trong đầu. Hết đề mẫu là hết ý.
  • Nghĩa số liệu, transaction, planner gần như không nằm trong lộ trình syntax. Đi làm thì phần lớn thời gian là ở đó.

Không phải bạn kém hay thiếu cố gắng. Cách học phổ biến dừng ở "chạy được", trong khi job cần "nghĩ được" trước khi gõ.

Cảm giác "mình không đủ giỏi" thường là dấu hiệu bạn học sai kiểu, không phải thiếu IQ. Phần dưới là ticket quay lại sẽ khác thế nào.

// Cùng một ticket

Ticket khó vẫn khó. Khác là bạn không còn đứng im trong cuộc họp.

Doanh thu theo cohort đăng ký, trừ refund sau ngày 15. PM hỏi, Slack chờ, số trên dashboard không khớp Finance.

Quen không kém: mở IDE trống, sợ hỏi senior vì "em đã học SQL rồi", cuối họp im vì không giải thích được con số. Không phải lười. Là chưa từng luyện tư duy ticket thật.

Pain là số và nghĩa

Query Design từ Business

Trước

Copy query cũ, sửa vài điều kiện, cầu may số khớp. Tranh cãi thì lùi lại.

Sau khóa

Chốt metric với stakeholder trước khi chạy. Giải thích refund, cohort, restate doanh thu bằng lời người không technical hiểu được.

Từ "em thử xem" sang "em nói được vì sao số này đúng hoặc sai".

Xem outline khóa này →

Pain là chậm dù logic đã tin

Postgres Index từ bản chất

Trước

Thêm index bừa, dashboard vẫn đơ. Không dám hứa deadline vì không biết còn bao lâu mới xong.

Sau khóa

Mở EXPLAIN, chỉ node estimate sai, biết bước tiếp là ANALYZE, index order hay rewrite, không đoán.

Từ "không biết tại sao chậm" sang "biết engine đang chọn gì và vì sao".

Xem outline khóa này →

Hai khóa không thay nhau. Chọn khóa trùng cảm giác bất an hôm nay. Khóa còn lại để khi ticket đổi hướng.

// Outcome trong đầu học viên

Không phải "hiểu sâu hơn". Là bạn tự tin khi không có tutorial bên cạnh.

Mỗi dòng dưới đây là hành vi bạn làm được khi ticket tới, không phải buzzword trên CV.

Query Design từ Business

Khi phòng ban hỏi một câu nghe đơn giản mà số vẫn cãi nhau.

  • Dừng lại hỏi lại trước khi gõ SQL, vì nhận ra câu hỏi còn mơ hồ.
  • Viết query người khác đọc hiểu, không phải file copy từ người trước.
  • Tách refund, return, COD và restate doanh thu đúng người đang đọc số.
Xem 6 outcome đầy đủ + outline →

Postgres Index từ bản chất

Khi production hỏi vì sao chậm và bạn không muốn trả lời "thêm index thử xem".

  • Đọc EXPLAIN bottom-up và chỉ ra node estimate sai nhất.
  • Giải thích Seq Scan dù có index, không dùng ví dụ mục lục sách cho xong.
  • Chọn loại index và thứ tự cột vì hiểu selectivity, không phải đoán rồi deploy.
Xem 6 outcome đầy đủ + outline →

// Hai khóa đang mở

Chọn khóa trùng cảm giác lo lắng hiện tại

Không cần quyết định "suốt đời nghề nghiệp". Chọn khóa giải ticket đang làm bạn mất ngủ. Giá và cách mua nằm ngay dưới, outline đầy đủ trên trang khóa.

Planner, index, MVCC từ bản chất

PostgreSQL Index từ bản chất

Query chậm mà bạn chỉ quen thêm index? Khóa này giúp bạn đọc EXPLAIN, hiểu B-tree và vì sao planner vẫn chọn Seq Scan dù đã có index.

699k với mã HOCTOT · giá gốc 899k

VietQR, kích hoạt tự động sau thanh toán

Xem outline và mua khóa Index
Mới ra mắt

Query design từ business · NovaShop

PostgreSQL Query Design từ Business

Mỗi bài mở bằng câu hỏi vận hành thật trên sàn thương mại. Bạn chốt metric, tránh query chạy được nhưng sai nghĩa, rồi mới đi sâu construct khi bài toán cần.

Early bird 499k · full khóa 1.399.000đ

Đặt trước qua Facebook trên trang khóa

Xem outline và đặt trước

// Chọn lộ trình

Bạn đang phân vân không biết nên học khóa học nào?

Hai khóa không thay thế nhau. Một bên trả lời query có đúng nghĩa business không. Một bên trả lời Postgres đang làm gì khi query chậm. Dưới đây là cách tự xếp mình vào level.

Level 1

Mới quen Postgres, viết được SELECT và WHERE

Vì sao: Bạn chưa cần planner sâu. Pain thường là chưa viết được query trả lời câu hỏi business.

Nên chọn: Bắt đầu Query Design từ Business (early bird). Prerequisite: xem video SQL cơ bản trên trang khóa nếu cần.

Level 2

Query chạy được nhưng số không ai chịu nhận

Vì sao: Stakeholder, Sales và Ops hiểu metric khác nhau. Vấn đề là định nghĩa và logic, không phải ms latency.

Nên chọn: Query Design từ Business là ưu tiên số một. NovaShop và Decision Canvas giúp bạn chốt nghĩa trước khi tối ưu.

Level 3

Logic đã ổn, production hỏi vì sao chậm

Vì sao: Bạn đã tin query đúng. Pain là Seq Scan, index không ăn, write chậm sau khi thêm index.

Nên chọn: Postgres Index từ bản chất. Đi từ storage, B-tree, MVCC tới EXPLAIN và planner.

Level 4

Backend / fullstack / DA, muốn lên middle thật

Vì sao: Middle không phải thuộc thêm syntax. Là vừa đúng nghĩa nghiệp vụ vừa biết engine phản ứng thế nào.

Nên chọn: Học cả hai, nhưng lần lượt theo ticket đang cháy. Báo cáo và đối soát trước thì Query Business. Alert query chậm trước thì Index.

Khóa nào quan trọng hơn?

Không có thứ tự tuyệt đối. Nếu số liệu hay báo cáo hay bị tranh cãi, Query Design từ Business quan trọng hơn lúc này: tối ưu query sai nghĩa chỉ làm sai nhanh hơn. Nếu query đã đúng nghĩa mà production vẫn kêu chậm, Postgres Index từ bản chất là bước tiếp theo đáng tiền.

Muốn nâng level thì cần gì?

  • Sau Query Design từ BusinessBạn viết và review query theo metric, refund, funnel, đối soát. Khi data lớn dần hoặc EXPLAIN trở thành câu hỏi hàng ngày, bổ sung khóa Index để hiểu planner và index bên dưới.
  • Sau Postgres Index từ bản chấtBạn tự debug query chậm và đọc plan. Khi ticket chuyển sang báo cáo phức tạp, tier khách theo thời gian, restate doanh thu, bổ sung Query Design để không chỉ nhanh mà còn đúng nghĩa stakeholder.
  • Muốn gom cả haiKhông bắt buộc học song song. Chọn khóa trùng pain hiện tại trước. Nhiều dev backend làm Query Business trước, Index sau khi job bắt đầu đụng performance.

// Lo ngại thường gặp

Trước khi trả tiền, não hay hỏi mấy câu này

Hợp lý. Mình trả lời thẳng. Nếu vẫn chưa yên, xem outline trên trang khóa trước, không cần inbox xin phép.

Mình junior / mới vào job, có học quá sớm không?
Khóa không dành cho người chưa từng SELECT. Nếu bạn đã có ticket báo cáo hoặc query trên tay và cảm thấy lúng túng, đó là đúng thời điểm, không cần đợi title senior.
Sợ mua xong bận rồi không học nỡ?
Truy cập trọn đời, không gia hạn. Nhiều người học theo ticket thật từng tuần, không cần "block 8 tuần". Outline chia module nhỏ để bạn nhảy đúng chỗ đang đau.
Query Business early bird mà chưa đủ video, có phải móc tiền không?
Early bird nghĩa là giá thấp đổi lấy bạn học phần đã quay ngay và nhận thêm module miễn phí khi mình bổ sung. Outline công khai từng bài. Không thích thì đừng mua, xem free trên YouTube vẫn được.
Hai khóa, sợ chọn nhầm?
Số tranh cãi, metric mơ hồ: Query Business trước. Query đúng nghĩa mà vẫn chậm: Index trước. Không bắt mua cả hai. Cuộn tới mục phân vân level nếu vẫn lăn tăn.

// Có hợp với bạn không

Khóa này hợp khi bạn nhận ra mình trong câu chuyện trên

  • Bạn đã đi làm, Postgres chạm tới vì ticket thật, không phải side project CRUD.
  • Bạn muốn tự tin giải thích số hoặc query, không chỉ "chạy ra kết quả rồi".
  • Bạn sẵn sàng xem outline trước, không cần ai thuyết phục qua inbox.

Nên bỏ qua nếu

  • Bạn muốn học SQL từ con số 0 trong một khóa duy nhất.
  • Bạn chỉ cần chứng chỉ / checklist phỏng vấn, chưa cần xử lý ticket production.
  • Bạn tìm video ngắn xem cho vui, chưa sẵn sàng luyện tư duy qua case dài.

// Bước nhỏ tiếp theo

Bạn không cần quyết định hôm nay. Chỉ cần xem outline 10 phút.

Mở trang khóa trùng pain hiện tại. Đọc curriculum và phần không dành cho ai. Nếu thấy "đúng cái mình đang thiếu", lúc đó mới nghĩ tới tiền.

P.S. Ticket khó sẽ còn. Khác là sau khóa bạn không còn cảm giác mình chỉ may mắn hoặc chỉ biết copy.