Menu
ESC

Nhập từ khóa để tìm kiếm

↑↓ Di chuyển
Enter Mở
ESC Đóng

Đang tải...

Migration Planning và Data Quality

Data Modeling and ERD Mastery Bài 3/60

Mở đầu — vì sao bài này quan trọng

Hãy tưởng tượng bạn vừa thiết kế xong một mô hình dữ liệu hoàn hảo: các entity rõ ràng, quan hệ chuẩn chỉnh, chuẩn hóa đến tận răng. Nhưng khoan đã — dữ liệu thực tế của doanh nghiệp đang nằm ở đâu? Trong một hệ thống cũ chạy từ năm 2008, trong vài chục file Excel rải rác giữa các phòng ban, trong một database mà không ai còn nhớ ai thiết kế. Và nhiệm vụ của bạn — với vai trò một Business Analyst (BA) làm về dữ liệu — là đưa toàn bộ "mớ hỗn độn" ấy sang ngôi nhà mới một cách an toàn.

Đây chính là lúc Data Migration (di trú dữ liệu)Data Quality (chất lượng dữ liệu) bước lên sân khấu. Theo nhiều khảo sát ngành (Gartner, Bloor Research), khoảng 80% các dự án migration bị trễ tiến độ hoặc vượt ngân sách, và phần lớn nguyên nhân không nằm ở kỹ thuật, mà nằm ở việc không hiểu rõ chất lượng dữ liệu nguồnkhông có kế hoạch migration bài bản.

Là một BA, bạn không phải người viết script di chuyển dữ liệu (đó là việc của developer/DBA), nhưng bạn là người lập kế hoạch, định nghĩa quy tắc mapping, đặt ra tiêu chí chất lượng và nghiệm thu kết quả. Bài học này trang bị cho bạn tư duy và công cụ để làm đúng phần việc đó. Đây là kỹ năng phân biệt một BA "vẽ ERD đẹp" với một BA thực sự đưa được hệ thống lên sản xuất.

Khái niệm cốt lõi

Data Migration là gì?

Data Migration là quá trình chuyển dữ liệu từ một (hoặc nhiều) nguồn sang một đích, thường kèm theo việc chuyển đổi cấu trúc, định dạng và làm sạch dữ liệu. Nó khác với việc "sao chép" thông thường ở chỗ: dữ liệu nguồn và đích thường có mô hình dữ liệu khác nhau, nên phải có bước biến đổi (transform) ở giữa.

Ba loại migration thường gặp

1. System migration (di trú hệ thống cũ sang hệ thống mới). Đây là loại phổ biến nhất với BA. Ví dụ: một ngân hàng thay core banking cũ bằng một core banking mới, hoặc một doanh nghiệp bỏ phần mềm kế toán nội bộ để chuyển sang SAP/Oracle ERP. Thách thức lớn nhất là mô hình dữ liệu hai bên thường rất khác nhau — một bảng ở hệ cũ có thể bị tách thành ba bảng ở hệ mới, hoặc ngược lại.

2. Database migration (thay đổi schema hoặc nền tảng CSDL). Đây là khi cùng một ứng dụng nhưng đổi cấu trúc dữ liệu — ví dụ chuyển từ SQL Server sang PostgreSQL, hoặc nâng cấp schema khi ra phiên bản mới của sản phẩm. Loại này thiên về kỹ thuật hơn, nhưng BA vẫn cần xác nhận các quy tắc nghiệp vụ không bị phá vỡ.

3. Cloud migration (từ on-premise lên cloud). Khi doanh nghiệp chuyển hệ thống từ máy chủ đặt tại văn phòng (on-premise) lên các nền tảng đám mây như AWS, Azure, Google Cloud. Ngoài dữ liệu, còn phải tính đến vấn đề bảo mật, độ trễ mạng và — đặc biệt tại Việt Nam — tuân thủ luật về lưu trữ dữ liệu (data localization theo Nghị định 53/2022 và Luật An ninh mạng).

> Một dự án thực tế thường là kết hợp cả ba loại: ví dụ một doanh nghiệp vừa thay hệ thống mới, vừa đổi loại CSDL, vừa đưa lên cloud cùng lúc.

Data Quality — sáu chiều đo lường

Migration mà không quan tâm chất lượng dữ liệu thì giống như "đổ rác từ thùng cũ sang thùng mới" — người ta hay gọi là "Garbage In, Garbage Out". Để đánh giá chất lượng, ta dùng sáu chiều (six dimensions) kinh điển:

  • Completeness (Đầy đủ): Dữ liệu có thiếu giá trị bắt buộc không? Ví dụ 30% khách hàng thiếu số điện thoại.
  • Accuracy (Chính xác): Dữ liệu có phản ánh đúng thực tế không? Ví dụ ngày sinh ghi 30/02/1990 là sai.
  • Consistency (Nhất quán): Cùng một thông tin nhưng ở hai nơi có khớp nhau không? Ví dụ địa chỉ khách ở module bán hàng khác với module giao hàng.
  • Validity (Hợp lệ): Dữ liệu có đúng định dạng/miền giá trị quy định không? Ví dụ mã số thuế phải đủ 10 hoặc 13 chữ số.
  • Uniqueness (Duy nhất): Có bản ghi trùng lặp không? Ví dụ một khách hàng bị nhập thành 3 hồ sơ.
  • Timeliness (Kịp thời): Dữ liệu có còn cập nhật, còn dùng được không?
Là BA, bạn sẽ dùng sáu chiều này làm khung để viết tiêu chí nghiệm thu dữ liệu sau migration.

ETL — xương sống của mọi cuộc di trú

Hầu hết migration đi theo quy trình ETL: Extract – Transform – Load.

  • Extract: Rút dữ liệu ra khỏi nguồn (database cũ, file Excel, API…).
  • Transform: Biến đổi — làm sạch, chuẩn hóa, ánh xạ (mapping) sang cấu trúc đích, áp dụng quy tắc nghiệp vụ.
  • Load: Nạp vào hệ thống đích.
Một biến thể hiện đại là ELT (Load trước, Transform sau) thường dùng trong môi trường data warehouse trên cloud, nhưng tư duy của BA về mapping và chất lượng thì không đổi.

Tình huống thực tế

Ví dụ 1: Ngân hàng VN thay core banking — bài học "data profiling cứu cả dự án"

Một ngân hàng thương mại cổ phần cỡ vừa tại Việt Nam (giả định là Ngân hàng Phương Đông Việt) quyết định thay core banking đã dùng 12 năm bằng một nền tảng mới. Khối lượng: khoảng 3,2 triệu hồ sơ khách hàng8 triệu tài khoản.

Trong giai đoạn đầu, đội dự án định "bê thẳng" dữ liệu sang. Nhưng BA dữ liệu yêu cầu làm data profiling (khảo sát chất lượng dữ liệu nguồn) trước. Kết quả gây sốc:

  • 12% khách hàng cá nhân thiếu CMND/CCCD hợp lệ (ô trống hoặc ghi "0000000000").
  • 40.000 bản ghi trùng — cùng một người mở tài khoản ở nhiều chi nhánh được tạo thành nhiều CIF (Customer Information File) khác nhau.
  • Trường ngày sinh có hơn 600 giá trị kiểu 30/02 hoặc năm 1900 (giá trị mặc định khi nhân viên không nhập).
Nếu cứ migrate thẳng, hệ thống mới — vốn áp dụng quy tắc định danh theo CCCD của eKYC — sẽ từ chối hoặc khóa hàng trăm nghìn tài khoản ngay ngày go-live. BA đã xây một bộ quy tắc làm sạch và đối soát: gộp CIF trùng theo CCCD, đánh dấu hồ sơ thiếu giấy tờ để bổ sung sau, và quy đổi các ngày sinh "rác" về NULL có kiểm soát.

Bài học: Đừng bao giờ tin dữ liệu nguồn "sạch". Data profiling là bước rẻ nhất nhưng cứu được khoản tốn kém nhất — phải sửa dữ liệu trên hệ thống đã chạy thật.

Ví dụ 2: Chuỗi bán lẻ chuyển ERP — và cái bẫy "mapping ngầm hiểu"

Một chuỗi bán lẻ mỹ phẩm có 45 cửa hàng tại TP.HCM và Hà Nội chuyển từ phần mềm quản lý cũ sang một hệ ERP mới. Vấn đề nằm ở mapping danh mục sản phẩm.

Hệ cũ lưu đơn vị tính trong một trường text tự do: người ta gõ "chai", "Chai", "lọ", "hộp", "Hộp 1", thậm chí "cái". Hệ mới yêu cầu đơn vị tính phải chọn từ một danh mục chuẩn (lookup table) có mã rõ ràng. Đội kỹ thuật ban đầu nghĩ đây là chuyện nhỏ, tự "đoán" cách map. Hậu quả: sau migration, báo cáo tồn kho lệch nghiêm trọng vì "Hộp 1" bị hiểu nhầm là 1 đơn vị thay vì một quy cách đóng gói.

BA đã phải làm lại một bảng mapping tường minh (source value → target value), ngồi cùng quản lý kho để thống nhất từng trường hợp mơ hồ, và thêm cột "ghi chú quy tắc". Bảng mapping này trở thành tài liệu nghiệm thu chính thức.

Bài học: Mapping không bao giờ được "ngầm hiểu". Mỗi giá trị nguồn phải có một quy tắc rõ ràng dẫn tới giá trị đích, và các trường text tự do là nơi ẩn chứa nhiều rủi ro nhất.

Ví dụ 3: Doanh nghiệp logistics lên cloud — chiến lược "big bang" suýt thành thảm họa

Một công ty logistics tại Đông Nam Á (giả định SwiftCargo) muốn đưa hệ thống quản lý vận đơn từ on-premise lên AWS. Ban đầu họ chọn chiến lược big bang: tắt hệ cũ tối thứ Sáu, migrate toàn bộ trong cuối tuần, sáng thứ Hai chạy hệ mới.

Khi diễn tập (dry run), họ phát hiện việc migrate 18 triệu bản ghi vận đơn mất tới 31 giờ — vượt xa khung cuối tuần, và nếu có lỗi giữa chừng thì không kịp rollback trước giờ làm việc. Rủi ro: nếu thất bại, toàn bộ hoạt động giao nhận tê liệt sáng thứ Hai.

BA cùng kiến trúc sư đề xuất chuyển sang phased migration (theo từng đợt): migrate dữ liệu lịch sử (đã đóng) trước trong nhiều tuần, chỉ để lại dữ liệu "đang hoạt động" cho đợt cutover cuối cùng — giảm khối lượng giờ go-live xuống còn vài trăm nghìn bản ghi, chạy trong dưới 2 giờ, có thừa thời gian rollback.

Bài học: Chọn chiến lược migration (big bang vs. phased vs. parallel run) là quyết định nghiệp vụ, không chỉ kỹ thuật. Luôn dry run để biết thời gian thật, và luôn có kế hoạch rollback.

Hướng dẫn từng bước

Đây là quy trình lập kế hoạch migration mà một BA dữ liệu nên dẫn dắt:

Bước 1 — Khảo sát và lập danh mục nguồn (Discovery). Liệt kê mọi nguồn dữ liệu: database nào, file nào, ai sở hữu. Xác định khối lượng (số bản ghi), tần suất thay đổi, và mức độ quan trọng nghiệp vụ.

Bước 2 — Data profiling. Đo chất lượng dữ liệu nguồn theo sáu chiều ở trên. Dùng SQL đơn giản (COUNT, GROUP BY, DISTINCT) hoặc công cụ chuyên dụng để phát hiện trường thiếu, trùng, sai định dạng. Đây là bước không được bỏ qua.

Bước 3 — Xây bảng Source-to-Target Mapping. Với mỗi trường đích, ghi rõ: lấy từ trường nguồn nào, quy tắc biến đổi là gì, xử lý giá trị thiếu/sai ra sao. Đây là tài liệu trung tâm của cả dự án.

Bước 4 — Định nghĩa quy tắc làm sạch và biến đổi. Ví dụ: chuẩn hóa số điện thoại về dạng +84, gộp bản ghi trùng theo CCCD, quy đổi danh mục. Mỗi quy tắc cần có người nghiệp vụ duyệt.

Bước 5 — Chọn chiến lược cutover. Big bang (chuyển một lần), phased (theo đợt), hay parallel run (chạy song song hai hệ một thời gian để đối chiếu). Cân nhắc rủi ro nghiệp vụ và thời gian dừng hệ thống chấp nhận được (downtime).

Bước 6 — Dry run (diễn tập). Migrate trên môi trường test với dữ liệu thật (đã ẩn danh nếu cần). Đo thời gian, đếm lỗi, xác nhận quy trình rollback hoạt động.

Bước 7 — Reconciliation (đối soát). Sau khi load, so khớp giữa nguồn và đích: đếm số bản ghi, đối chiếu tổng tiền, kiểm tra mẫu (sampling). Tiêu chí nghiệm thu phải định lượng được, ví dụ "sai lệch tổng dư nợ ≤ 0 đồng" hoặc "≥ 99,99% bản ghi khớp".

Bước 8 — Go-live và monitoring. Sau khi đạt tiêu chí, thực hiện cutover thật, theo dõi sát những ngày đầu, và giữ dữ liệu nguồn ở chế độ chỉ-đọc một thời gian phòng khi cần đối chiếu lại.

Lỗi thường gặp & mẹo

Lỗi 1: Bỏ qua data profiling. Đây là sai lầm tốn kém nhất. Mẹo: dành ít nhất 15–20% thời gian dự án cho việc hiểu dữ liệu nguồn trước khi viết bất kỳ script nào.

Lỗi 2: Mapping ngầm hiểu. Để developer "tự đoán" cách chuyển đổi. Mẹo: mọi quy tắc mapping phải nằm trong tài liệu Source-to-Target và được người nghiệp vụ ký duyệt.

Lỗi 3: Không có tiêu chí nghiệm thu định lượng. Nói "dữ liệu trông ổn" là không đủ. Mẹo: định nghĩa trước con số cụ thể (số bản ghi khớp, sai lệch tài chính bằng 0) để reconciliation.

Lỗi 4: Không có kế hoạch rollback. Nếu migration thất bại giữa chừng mà không quay lui được, doanh nghiệp có thể tê liệt. Mẹo: luôn backup nguồn trước, luôn thử rollback trong dry run.

Lỗi 5: Quên các trường hợp biên (edge cases). Khách hàng có hai quốc tịch, đơn hàng bị hủy một phần, tài khoản đã đóng… Mẹo: chủ động hỏi người nghiệp vụ về các tình huống bất thường ngay từ giai đoạn mapping.

Lỗi 6: Coi nhẹ vấn đề pháp lý khi lên cloud. Mẹo: với dữ liệu cá nhân của người dùng Việt Nam, cần kiểm tra yêu cầu lưu trữ dữ liệu trong nước và bảo vệ dữ liệu cá nhân trước khi chọn vùng (region) cloud.

Mẹo vàng: Hãy coi migration là một dự án có vòng đời riêng, không phải một bước phụ của dự án phần mềm. Nó cần kế hoạch, ngân sách và người chịu trách nhiệm rõ ràng.

Bài tập thực hành

Bài tập 1 — Data profiling trên giấy. Cho một bảng khach_hang ở hệ cũ gồm các cột: ho_ten, so_dien_thoai, cccd, ngay_sinh, dia_chi. Hãy liệt kê với mỗi cột ít nhất một câu hỏi profiling theo các chiều chất lượng (ví dụ: "Bao nhiêu % cccd không đủ 12 chữ số?"). Viết cả câu SQL GROUP BY/COUNT tương ứng nếu có thể.

Bài tập 2 — Lập bảng Source-to-Target Mapping. Giả sử hệ mới có bảng customer với cột full_name, phone_e164, national_id, birth_date, status. Hãy vẽ bảng mapping ba cột: Trường đích | Trường nguồn | Quy tắc biến đổi. Đặc biệt nêu rõ cách bạn xử lý số điện thoại "0912 345 678" thành định dạng +84912345678, và xử lý ngay_sinh rác.

Bài tập 3 — Chọn chiến lược. Một bệnh viện muốn chuyển hệ thống bệnh án sang phần mềm mới. Bệnh viện hoạt động 24/7, không chấp nhận downtime quá 30 phút. Hãy đề xuất chiến lược cutover phù hợp (big bang / phased / parallel run) và giải thích vì sao, kèm hai rủi ro chính cần kiểm soát.

Tóm tắt

  • Data migration là chuyển dữ liệu từ nguồn sang đích kèm biến đổi cấu trúc — gồm ba loại chính: system migration (hệ cũ sang hệ mới), database migration (đổi schema/CSDL), và cloud migration (on-premise lên cloud); thực tế thường kết hợp cả ba.
  • Quy trình kỹ thuật xương sống là ETL: Extract – Transform – Load (hoặc ELT).
  • Data quality đo bằng sáu chiều: completeness, accuracy, consistency, validity, uniqueness, timeliness — và là khung để viết tiêu chí nghiệm thu.
  • Vai trò BA: dẫn dắt discovery → profiling → mapping → quy tắc làm sạch → chọn chiến lược → dry run → reconciliation → go-live.
  • Những sai lầm chết người: bỏ qua profiling, mapping ngầm hiểu, thiếu tiêu chí định lượng, không có rollback.
  • Nguyên tắc cốt lõi: "Garbage In, Garbage Out" — chất lượng dữ liệu nguồn quyết định thành bại của cả cuộc di trú. Hãy coi migration là một dự án có vòng đời riêng với kế hoạch và trách nhiệm rõ ràng.