Bằng chứng hiện tại có hỗ trợ việc áp dụng Bối cảnh trên các Mô hình Dữ liệu Canonical không?


9

Ý tưởng "kinh điển" có sức lan tỏa trong phần mềm; các mô hình như Canonical Model , Canonical Schema , Canonical Data Model , v.v., dường như xuất hiện hết lần này đến lần khác trong quá trình phát triển.

Giống như nhiều nhà phát triển, tôi thường theo dõi, một cách khôn ngoan, sự khôn ngoan thông thường mà bạn cần một mô hình kinh điển, nếu không, bạn sẽ phải đối mặt với sự bùng nổ kết hợp của người lập bản đồ và dịch giả. Hoặc ít nhất, tôi đã từng làm điều đó cho đến một vài năm trước đây khi lần đầu tiên tôi đọc bài bình chọn có phần hơi khét tiếng của EF :

Các giả thuyết từng ủng hộ việc theo đuổi các mô hình dữ liệu chính tắc đã không và không thể bao gồm các yếu tố sẽ được phát hiện ra khi ý tưởng được đưa vào thực tế. Chúng tôi đã phát hiện ra, qua nhiều năm thử nghiệm và sai sót, việc sử dụng các mô hình riêng biệt cho từng bối cảnh riêng lẻ trong đó mô hình dữ liệu chính tắc có thể được sử dụng là cách tiếp cận ít phức tạp nhất, là cách tiếp cận ít tốn kém nhất và là phương pháp dẫn đến khả năng duy trì và mở rộng cao hơn về các ứng dụng và thiết bị đầu cuối sử dụng các mô hình theo ngữ cảnh và đó là một cách tiếp cận không khuyến khích entropy phần mềm mà các mô hình chính tắc thực hiện.

Bài tiểu luận trình bày không có bằng chứng dưới bất kỳ hình thức nào để hỗ trợ cho tuyên bố của mình, nhưng đã khiến tôi nghi ngờ phương pháp CDM đủ lâu để thử phương án thay thế, và phần mềm kết quả đã không bùng nổ, theo nghĩa đen hoặc nghĩa bóng. Nhưng điều đó không có nghĩa là rất nhiều sự cô lập; Tôi có thể đã may mắn.

Vì vậy, tôi tự hỏi, đã có nghiên cứu nghiêm túc nào được thực hiện trong các tác động thực tế, lâu dài của việc có một mô hình chính tắc so với các mô hình theo ngữ cảnh trong một hệ thống hoặc kiến ​​trúc phần mềm chưa?

Hoặc, nếu còn quá sớm để hỏi điều đó, thì có nhà phát triển / kiến ​​trúc sư nào viết về trải nghiệm cá nhân khi chuyển từ CDM sang mô hình ngữ cảnh độc lập hay ngược lại, và những tác động thực tế nào đối với những thứ như năng suất, độ phức tạp hoặc độ tin cậy?

Còn về sự khác biệt ở các cấp độ khác nhau, tức là sử dụng cùng một mô hình trên một ứng dụng so với sử dụng nó trên một hệ thống ứng dụng hoặc toàn bộ doanh nghiệp thì sao?

(Chỉ sự thật, xin vui lòng; câu chuyện chiến tranh được chào đón nhưng không có suy đoán.)


Tôi không biết họ đang nói gì trong bài viết "Bầu chọn không tin tưởng". Phần còn lại của bài viết có ý nghĩa, nhưng phần về Canonicalism trừu tượng đến mức nó không có nghĩa gì cả. Sẽ thật tuyệt nếu họ cung cấp một ví dụ về những gì họ đang nói.
Robert Harvey

@Robert: Tôi không biết có sự thật nào với nó không nhưng với tôi nó khá rõ ràng về ý nghĩa của nó ... chắc chắn bạn đã quen thuộc với các mẫu CM / CDM? Trong phiên bản đơn giản nhất của nó, nó chia sẻ một mô hình / bối cảnh nguyên khối duy nhất (hoặc Linq thành SQL, hoặc bất cứ thứ gì) trên toàn bộ ứng dụng thay vì cách tiếp cận ống dẫn (nhận thức) hơn về cách viết các truy vấn cụ thể cho các phần cụ thể của ứng dụng. Ở cấp độ cao hơn, nó chấp nhận một lược đồ phổ quát cho toàn bộ tổ chức mà tất cả các ứng dụng / hệ thống riêng lẻ phải dịch sang.
Aaronaught

1
Nghe có vẻ như các cuộc tranh luận của EF tập trung vào bảng đầu tiên so với thiết kế đầu tiên của lớp, vì thiết kế đầu tiên của bảng (nơi các lớp được tạo từ các bảng) gợi ý một mô hình nguyên khối (mặc dù luôn có các truy vấn và khung nhìn chuyên biệt), trong khi thiết kế đầu tiên của lớp (nơi các bảng được tạo từ các lớp) gợi ý mô hình OO linh hoạt hơn, dễ uốn hơn. Tôi hơi già, thích cách tiếp cận đầu tiên, nhưng tôi có thể thấy cách tiếp cận đầu tiên của lớp sẽ hấp dẫn với một số người.
Robert Harvey

@Robert, đó không phải là ý định của tôi để đưa ra "cuộc tranh luận về EF", tôi chỉ lấy một trích dẫn từ trang đó vì đó là lần đầu tiên tôi nghe thấy cuộc tranh luận (và tôi không chắc là tôi có nghe thấy không thể hiện rõ ràng ở bất cứ nơi nào khác). Một cách riêng biệt, tôi không chắc chắn rằng tôi đồng ý rằng thiết kế đầu tiên thực sự đại diện cho một mô hình nguyên khối; bản thân cơ sở dữ liệu là vậy, nhưng chỉ DBMS thực sự nhận thức được điều đó - các phần khác nhau của ứng dụng có xu hướng chỉ nhận thức được các bảng và truy vấn cụ thể mà chúng phụ thuộc.
Aaronaught

Câu trả lời:


5

Trả lời bài viết về bình chọn không tin tưởng của EF , Tim Mallalieu viết:

Chúng tôi không khuyến nghị mọi người quay trở lại những ngày mà chúng tôi đang truyền giáo việc sử dụng XSD cho các lược đồ kinh điển của Hồi giáo. Tôi không tin rằng mọi người nghĩ rằng điều này là dễ hiểu. Tuy nhiên, điều chúng tôi tin là mong muốn có một mô hình meta đơn (EDM nếu bạn muốn) mà bạn có thể mô tả nhiều mô hình miền và bằng cách có một ngữ pháp duy nhất, chúng tôi có thể cung cấp một bộ dịch vụ chung trên bất kỳ mô hình miền cho trước.

Ví dụ, hãy xem xét một ứng dụng được viết dựa trên cơ sở dữ liệu với 600 bảng. Tôi có tin rằng ứng dụng này nên có một mô hình duy nhất với 600 Loại thực thể trong đó không? Không có Hơn nữa, tôi có tin rằng bất kỳ thực thể miền cụ thể nào (giả sử Khách hàng) chỉ có một hình dạng trong ứng dụng đó và hình dạng này phải là hình dạng chính tắc cho toàn bộ Doanh nghiệp không?

Bài viết Wikipedia cho Mô hình Canonical tham khảo những thứ như Bus dịch vụ doanh nghiệp , Kiến trúc hướng dịch vụCORBA , những thứ dường như không còn được nói đến nữa. Tất cả đều được đặt ra như là giải pháp cho các thách thức phổ biến dữ liệu và truyền thông của doanh nghiệp, One Ring để cai trị tất cả. TM Họ đã thành công? Hay họ đã sụp đổ dưới trọng lượng của chính họ?


Bạn hỏi kinh nghiệm cá nhân, vì vậy tôi sẽ cung cấp cho bạn một. Trong ngành hàng không vũ trụ, chúng tôi sử dụng từ xa rất nhiều. Một trong những thách thức với các hệ thống đo từ xa là tìm cách cho các phạm vi thử nghiệm khác nhau giao tiếp dữ liệu thử nghiệm với nhau một cách có ý nghĩa. Vấn đề đó có vẻ đủ đơn giản, cho đến khi bạn cố gắng xác định một từ điển dữ liệu của các thuật ngữ phổ biến.

"Độ cao" nghĩa là gì? Đây có phải là chiều cao so với mặt đất, hay nó là chiều cao so với mực nước biển? Nếu bạn đang nói về tàu ngầm thì sao? Sau đó, độ sâu của nó, không phải độ cao. Đối với Quân đội, từ "truyền" có một ý nghĩa khác khi bạn đang đề cập đến một món ăn radar so với một phương tiện trên mặt đất. Bề mặt cánh khiến máy bay lăn được gọi là "máy bay" trên một số mặt phẳng và "thang máy" trên các máy bay khác.

Đó chỉ là một gợi ý về hàng núi vấn đề tiếp theo. Mặc dù có các tiêu chuẩn cho truyền thông dữ liệu, mọi phạm vi thử nghiệm đều khác nhau và có các nhu cầu, mục tiêu và ưu tiên khác nhau. Các tiêu chuẩn có thể khác nhau ngay cả giữa các dự án khác nhau trên cùng một phạm vi. Vì lý do này, phạm vi kiểm tra hiểu rằng giải pháp sẽ không đến bằng cách thay thế mọi thứ bằng một hệ thống đơn, nguyên khối, nhưng bằng cách đồng ý với các giao thức giao tiếp đơn giản và cung cấp cách dịch từ từ vựng này sang phạm vi khác.


Những vấn đề mà các công ty lớn phải đối mặt là tương tự. Microsoft có xu hướng suy nghĩ theo thuật ngữ nguyên khối, nhưng đó là bởi vì công ty của họ, nói chung, lớn, nguyên khối. Ngay khi bạn cần liên lạc giữa các công ty khác nhau với các nền văn hóa và cách thức kinh doanh khác nhau (hoặc thậm chí giữa các bộ phận khác nhau trong cùng một công ty), One Ring to Rule Them All. TM ngay lập tức bắt đầu đổ vỡ.


Thật thú vị khi biết rằng chính các nhà thiết kế của Microsoft không đề xuất mô hình lớn được chia sẻ; thật không may, đó chính xác là cách Linq đối với SQL và EF và nhiều ORM khác có xu hướng được sử dụng. Bất kể, vẫn còn rất nhiều người ngoài kia quảng bá khái niệm Mô hình Canonical và tôi vẫn muốn biết giá vé trong thực tế so với giải pháp thay thế.
Aaronaught

@Aaronaught: Xem chỉnh sửa của tôi.
Robert Harvey

Đây là một bản chỉnh sửa tốt và FYI tôi đã nâng cấp nó. Tuy nhiên, tôi đã nhận thức được nhiều vấn đề không thống nhất cụ thể xuất hiện khi cố gắng chuẩn hóa một mô hình; Tôi đặc biệt thích tìm hiểu về kinh nghiệm hoặc dữ liệu dài hạn về các nhóm đã đầu tư thời gian để giải quyết những điểm không phù hợp đó, để có một trình ánh xạ cho mỗi điểm cuối (kết thúc mô hình), so với đầu tư thời gian vào đầu cuối riêng biệt thay vào đó, những người lập bản đồ kết thúc và phương pháp tiếp cận thực sự mang lại giải pháp phức tạp chi phí thấp nhất / thấp nhất.
Aaronaught

Hoặc nói một cách ngắn gọn hơn: Tôi biết rằng việc tạo và duy trì một mô hình kinh điển là rất nhiều công việc, điều tôi muốn biết là khi nào (nếu có), lợi ích đã được quan sát để vượt xa chi phí.
Aaronaught
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.