Bỏ qua để đến nội dung

Mô hình dữ liệu là bộ xương

Cũng có bằng 28 ngôn ngữ khác

English · Español · 日本語 · Português (Brasil) · Français · Deutsch · Italiano · 한국어 · 简体中文 · Português (Portugal) · 繁體中文 · Bahasa Indonesia · Türkçe · Polski · ไทย · Nederlands · العربية · עברית · Українська · हिन्दी · Русский · Svenska · Dansk · Norsk bokmål · Suomi · Español (México) · Français (Canada) · Deutsch (Schweiz)

An older room opened up mid-renovation: its timber beams exposed, a new beam held on steel props, the furniture waiting under dust sheets.
Hình ảnh được tạo bằng AI

Mô-đun 2 trong 7 của chương Tư duy như một kiến trúc sư dữ liệu, chương đầu tiên của khóa học Data Architect. Mỗi mô-đun có thể đọc độc lập. Trước: Tư duy như một kiến trúc sư · Tiếp theo: Phép thử khả năng đảo ngược

Câu hỏi mô-đun này trả lời: Vì sao mô hình dữ liệu quan trọng hơn bất cứ thứ gì được xây trên nó, và bạn đánh giá một mô hình thế nào?

Khi dạy kiến trúc dữ liệu, có một câu tôi cứ quay lại mãi: mô hình dữ liệu là bộ xương.

Mô hình dữ liệu là bộ xương của hệ thống. Mọi thứ khác được xây quanh nó, và nó là thứ giữ phần còn lại của cơ thể gắn kết với nhau. Bạn không nhìn thấy bộ xương khi nhìn một người, nhưng nó quyết định người đó cao bao nhiêu, di chuyển ra sao và mang vác được gì.

Hãy nghĩ về mọi thứ chúng ta xây trong một dự án triển khai Salesforce. Chúng ta xây tự động hóa quanh mô hình dữ liệu. Chúng ta viết Apex dựa trên nó, và các Flow đọc và cập nhật nó. Chúng ta xây các tích hợp đưa dữ liệu vào và lấy dữ liệu ra khỏi nó. Chúng ta tạo báo cáo và phân tích trên nó, và thiết kế bảo mật quanh nó. Và ngày càng nhiều, chúng ta xây các tác tử AI cần hiểu và hành động dựa trên dữ liệu đó. Tất cả đều phụ thuộc vào cấu trúc bên dưới.

Đó là lý do làm đúng mô hình dữ liệu từ sớm lại quan trọng đến vậy. Bạn có thể thay bộ xương sau này. Nhưng có lẽ sẽ đau đấy.

Một mô hình dữ liệu tốt bắt đầu bằng một câu hỏi đơn giản: việc kinh doanh thực sự cần biểu diễn điều gì? Không phải “chúng ta có những đối tượng Salesforce nào?” Và chắc chắn không phải “tôi có thể xây nhanh cái gì?”

Chúng ta đang cố hiểu việc kinh doanh trước. Những thứ quan trọng trong doanh nghiệp này là gì? Chúng liên quan với nhau thế nào? Ai sở hữu chúng? Chúng thay đổi theo thời gian ra sao? Điều gì cần được ghi nhớ, và điều gì được dùng chung giữa các quy trình nghiệp vụ? Chỉ sau khi hiểu những điều đó, chúng ta mới nên bắt đầu chuyển chúng thành đối tượng, trường và quan hệ.

Nghe thì hiển nhiên. Trên thực tế, rất dễ làm ngược. Ai đó nhận ra một thứ trông giống Cơ hội, Trường hợp hay Tài sản và lập tức bắt đầu thiết kế quanh nó. Đôi khi như vậy là hoàn toàn đúng. Đôi khi chúng ta đang cố nhét cái chốt vuông vào lỗ tròn, và khi đã có đủ thứ được xây quanh quyết định đó, rút cái chốt ra sẽ rất tốn kém.

Đây là một câu hỏi tôi nghe suốt. Doanh nghiệp của một khách hàng có thể có nhiều địa điểm giao hàng. Mỗi địa điểm nên là một Tài khoản hay một đối tượng tùy chỉnh? Trước khi trả lời, hãy để ý những gì bạn cần biết trước: một địa điểm có ý nghĩa gì với doanh nghiệp này, và điều gì xảy ra với nó. Đó là mô hình hóa việc kinh doanh trước khi nghĩ đến đối tượng. (Tôi sẽ cho bạn câu trả lời của tôi ở chương 3.)

Khi xem xét một mô hình dữ liệu, tôi muốn nó vượt qua ba phép thử: hỗ trợ việc kinh doanh, phát triển cùng việc kinh doanh, và vận hành tốt.

Hỗ trợ. Mô hình phải hỗ trợ điều doanh nghiệp thực sự đang cố đạt được. Có một khác biệt lớn giữa một mô hình về mặt kỹ thuật có thể lưu dữ liệu và một mô hình thực sự biểu diễn tốt việc kinh doanh. Nếu tôi liên tục phải thêm những trường kỳ lạ, những cờ đặc biệt, tự động hóa phức tạp và các ngoại lệ vì mô hình không hoàn toàn khớp, tôi bắt đầu tự hỏi liệu vấn đề có thực sự nằm ở tự động hóa không. Có thể mô hình sai. Một mô hình tốt nên làm cho việc kinh doanh dễ hiểu hơn, chứ không khó hơn.

Phát triển. Khi nói phát triển, tôi không chỉ nói đến nhiều bản ghi hơn. Khối lượng có quan trọng: mười nghìn bản ghi và một trăm triệu bản ghi tạo ra những vấn đề rất khác nhau. Nhưng doanh nghiệp cũng tăng trưởng về độ phức tạp. Họ thêm sản phẩm, vào thị trường mới, mua lại công ty, thay đổi quy trình, thêm kênh và kết nối hệ thống mới. Họ phát hiện ra một thứ họ tưởng là một hóa ra lại là năm thứ khác nhau. Một mô hình chạy tuyệt vời cho hôm nay có thể thành cái bẫy nếu không có chỗ cho ngày mai. Đó là lý do tôi thích những thiết kế phát triển bằng cách bổ sung hơn là những thiết kế cứ thay đổi những gì đã có. Thêm thứ mới thường dễ hơn định nghĩa lại một thứ mà hàng chục thứ khác phụ thuộc vào.

Vận hành tốt. Dữ liệu không chỉ nằm yên đó. Chúng ta ghi nó, tìm nó, truy vấn nó, chia sẻ nó, báo cáo trên nó và tích hợp nó, và ngày càng nhiều hệ thống AI truy xuất nó làm ngữ cảnh trước khi hành động. Một mô hình có thể trông đẹp trên sơ đồ mà vẫn rất tệ khi vận hành. Vì vậy chúng ta thiết kế cho cả cách dữ liệu được lưu trữ và cách dữ liệu sẽ được sử dụng.

Và nó phải tiếp tục vận hành tốt. Nó phải vận hành tốt ở quy mô lớn: khi số người dùng tăng, khi khối lượng dữ liệu tăng, trong điều kiện thực tế và vào lúc cao điểm, vào ngày bận rộn nhất trong năm chứ không phải ngày trung bình. Và nó phải tiếp tục vận hành tốt khi có chuyện bất ngờ xảy ra.

Hỗ trợ. Phát triển. Vận hành tốt. Chúng ta sẽ còn quay lại ba phép thử này suốt khóa học.

Hỗ trợ, Phát triển, Vận hành tốt Mô hình dữ liệu, nền móng của hệ thống, với ba phép thử bên dưới. Hỗ trợ: nó có phù hợp với việc kinh doanh không? Phát triển: nó có phát triển được bằng cách thêm vào, chứ không phải thay đổi? Vận hành tốt: nó có trụ vững ở quy mô lớn và vào lúc cao điểm không? Mô hình dữ liệu nền móng của hệ thống Hỗ trợ Có phù hợp với việc kinh doanh không? Phát triển Có phát triển bằng cách thêm vào, không phải thay đổi? Vận hành tốt Có trụ vững ở quy mô lớn và lúc cao điểm? Hỗ trợ. Phát triển. Vận hành tốt. Chúng ta sẽ còn quay lại ba phép thử này. © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

Quá phẳng, quá phức tạp, hay đơn giản là sai

Phần tiêu đề “Quá phẳng, quá phức tạp, hay đơn giản là sai ”

Tôi đã thấy mô hình dữ liệu đi sai theo ba cách.

Cách thứ nhất là chọn sai thứ ngay từ đầu. Chúng ta dùng một đối tượng chuẩn vì nó trông đủ gần, rồi dành nhiều năm thêm ngoại lệ vì nó chưa bao giờ thực sự phù hợp. Đó là cái chốt vuông.

Cách thứ hai là làm mô hình quá phẳng. Mọi thứ dồn vào một đối tượng, và lúc đầu điều đó có vẻ đơn giản tuyệt vời. Rồi doanh nghiệp phát triển, và chúng ta phát hiện một số thứ trong đó có vòng đời riêng, có thể có nhiều thực thể, cần bảo mật riêng hoặc có quan hệ riêng. Bỗng nhiên chúng ta biểu diễn một quan hệ một-nhiều bằng Field 1, Field 2 và Field 3, hoặc bằng những cờ và tự động hóa ngày càng phức tạp. Mô hình không chừa cho chúng ta chỗ nào để phát triển.

Cách thứ ba là sai lầm ngược lại: chúng ta chuẩn hóa quá mức. Chúng ta tạo một sơ đồ thanh lịch với hết đối tượng này đến đối tượng khác, mọi khái niệm được tách bạch hoàn hảo. Đẹp về kỹ thuật, khổ sở trong thực tế. Người dùng khó hiểu nó, và các bố cục trang và trang Lightning, với hết danh sách liên quan này đến danh sách liên quan khác, có thể bắt đầu sâu hun hút. Truy vấn phức tạp hơn, tự động hóa đi qua nhiều quan hệ hơn, báo cáo khó hơn, và nền tảng phải làm nhiều việc hơn để trả lời những câu hỏi nghiệp vụ bình thường.

Vậy cái nào đúng, phẳng hay chuẩn hóa? Không có công thức nào cả. Bạn giữ trong đầu hình ảnh của mô hình tối ưu và hiểu những đánh đổi khi bạn rời xa nó. Đó là nghệ thuật của kiến trúc, và chúng ta sẽ quay lại điều này ở mô-đun 4 và ở chương tiếp theo, nơi chúng ta học cách mô hình hóa. Bây giờ, hãy nhận ra rằng bản thân cấu trúc đã là một quyết định kiến trúc.

Quá phẳng, vừa phải, chuẩn hóa quá mức Ba cách mô hình hóa cùng các lần phê duyệt. Quá phẳng: một bảng Cơ hội với Người duyệt 1, 2 và 3 cùng ngày duyệt của họ làm các trường. Vừa phải: một Tài khoản có các Cơ hội, và một Cơ hội có các Phê duyệt, mỗi phê duyệt có một người duyệt và một ngày. Chuẩn hóa quá mức: Cơ hội bị tách thành sáu bảng liên kết với nhau, từ Yêu cầu phê duyệt và Bước phê duyệt đến Người duyệt của bước, Vai trò người duyệt và Quyết định phê duyệt. QUÁ PHẲNG: MỘT BẢNG LỘN XỘN VỪA PHẢI CHUẨN HÓA QUÁ MỨC có có Cơ hội Số tiền Giai đoạn Người duyệt 1 Ngày duyệt 1 Người duyệt 2 Ngày duyệt 2 Người duyệt 3 Ngày duyệt 3 Tài khoản Cơ hội Phê duyệt Người duyệt Ngày duyệt Cơ hội Yêu cầu phê duyệt Bước phê duyệt Người duyệt của bước Vai trò người duyệt Quyết định phê duyệt Không có công thức nào cả. Hãy giữ trong đầu hình ảnh của mô hình tối ưu, và hiểu các đánh đổi khi bạn rời xa nó. © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

Khi một hệ thống đã chạy, tôi trở nên rất thận trọng với những thay đổi nền tảng trong mô hình dữ liệu.

Giả sử một trường văn bản đã tồn tại nhiều năm, và ai đó nói: “Thực ra chúng ta không còn dùng nó theo cách đó nữa. Đổi nó thành số đi.” Nghe như một thay đổi trường. Nhưng cái gì phụ thuộc vào trường đó? Các Flow, Apex, báo cáo, tích hợp, đường ống dữ liệu, ứng dụng bên ngoài, tác tử AI. Và dữ liệu lịch sử sẽ ra sao? Chính nền tảng cũng không cho bạn đổi kiểu của một trường khi mã hoặc flow vẫn tham chiếu đến nó, điều đó cho bạn thấy thay đổi lan xa đến đâu.

Đôi khi câu trả lời đúng là không biến đổi những gì đã có. Tùy theo mức độ nghiêm trọng của thay đổi, tôi thà tạo một thứ mới, di chuyển dữ liệu có chủ đích, rồi ngừng dùng cấu trúc cũ:

Bổ sung thay vì biến đổi. Ngừng dùng có báo trước thay vì gây bất ngờ.

Salesforce thậm chí cho bạn cách nói điều đó trong siêu dữ liệu: Field Usage của một trường có thể đặt là DeprecateCandidate, “dự kiến ngừng dùng và không còn được sử dụng”. Điều đó đánh dấu trường cho tất cả những ai đọc đối tượng; nó không ẩn trường đi, nên việc cho trường nghỉ hưu vẫn là một quyết định bạn phải thực hiện.

Bởi vì khi các phần khác của kiến trúc đã phụ thuộc vào một thứ, thay đổi ý nghĩa của nó có thể nguy hiểm hơn nhiều so với đổi tên nó. Trường hợp tệ nhất là trường giữ nguyên tên trong khi nội dung thay đổi: mọi thứ phía sau vẫn tin vào cái tên.

Ngừng dùng, đừng biến đổi: thay thế một trường Cùng một bản ghi Giao hàng được thể hiện ba lần. Trước: trường Số kiện lưu dưới dạng văn bản. Trong khi: Số kiện (văn bản) bị gạch ngang và đánh dấu ngừng dùng, một trường mới Số lượng kiện (số) nằm bên cạnh, đánh dấu mới, trong lúc mọi flow, báo cáo và tích hợp chuyển sang. Sau: chỉ còn Số lượng kiện (số). Bổ sung thay vì biến đổi; ngừng dùng có báo trước thay vì gây bất ngờ. TRƯỚC TRONG KHI SAU thêm trường mới chuyển mọi nơi dùng Giao hàng Ngày giao Trạng thái Số kiện (văn bản) Giao hàng Ngày giao Trạng thái Số kiện (văn bản) NGỪNG DÙNG Số lượng kiện (số) MỚI Giao hàng Ngày giao Trạng thái Số lượng kiện (số) Bổ sung thay vì biến đổi. Ngừng dùng có báo trước thay vì gây bất ngờ. © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

Ngay cả việc đơn giản như đánh dấu ô Bắt buộc trên một trường cũng có thể thành quả bom hẹn giờ. Nếu bạn đã thu thập dữ liệu, một số bản ghi sẽ không có giá trị ở trường đó. Rồi vài ngày, vài tuần hay vài tháng sau, ai đó cập nhật một trong những bản ghi ấy, và lệnh lưu thất bại vì trường bắt buộc, mà không ai có giá trị đó. Một thay đổi đơn giản như đánh dấu một trường là bắt buộc có thể gây ra hệ quả ngoài ý muốn và đến muộn. Chúng ta sẽ quay lại chuyện Bắt buộc, và khi nào một giá trị thực sự được biết, ở chương 3.

Ngoài kỳ thi: AI cũng xây trên bộ xương. Hãy nhờ một công cụ AI xây một ứng dụng và nó sẽ sinh ra các đối tượng, trường, Flow, Apex, thành phần và bài kiểm thử trong vài phút. Nếu mô hình dữ liệu ban đầu sai, chúng ta không tránh được hệ quả của một quyết định tồi; chúng ta đẩy nhanh nó, vì mỗi lớp được sinh ra lại là thêm một thứ phụ thuộc vào cấu trúc đó. Đó là lý do tôi muốn một kiến trúc sư con người xem xét mô hình dữ liệu do AI sinh ra, hiểu nó và chịu trách nhiệm về nó. Mô-đun 7 đi xa hơn về điều này.

Trong suốt khóa học này, chúng ta sẽ nói về rất nhiều công nghệ: đối tượng và quan hệ, khối lượng dữ liệu lớn, truy vấn, tích hợp, di chuyển dữ liệu, giao dịch, bảo mật, Data 360 và AI. Bên dưới tất cả là mô hình dữ liệu.

Nếu mô hình hỗ trợ việc kinh doanh, có thể phát triển cùng việc kinh doanh và vận hành tốt cho những cách chúng ta sẽ dùng dữ liệu, chúng ta đã xây một nền móng vững chắc. Nếu làm sai nền móng, mọi thứ sau đó đều khó hơn.

Mô hình dữ liệu là bộ xương. Kiến trúc sư nên hết sức cẩn thận khi thiết kế bộ xương. Thay đổi những cấu trúc đã có có thể gây ra hệ quả dây chuyền.

  • Mô hình có hỗ trợ việc kinh doanh, có phát triển cùng nó và có vận hành tốt cho những cách dữ liệu sẽ được dùng hay không.
  • Một khái niệm phù hợp với một đối tượng chuẩn hay là một cái chốt vuông.
  • Làm mô hình phẳng đến mức nào hay chuẩn hóa đến mức nào, và tại sao.
  • Một thay đổi ở bộ xương nên là một sự bổ sung, một lần di chuyển dữ liệu hay một lần ngừng dùng, thay vì thay đổi tại chỗ.