Tôi đã tạo ra một ứng dụng có nhiều kiến trúc dữ liệu tương tự đằng sau nó; chúng tôi có cơ sở dữ liệu SQL tại chỗ chứa hầu hết thông tin tự động hóa và nội bộ hàng ngày và sau đó là dịch vụ đám mây của bên thứ ba được sử dụng để bán hàng, quản lý tài khoản, nhân viên hiện trường, v.v. Helpdesk cần thông tin từ cả hai vị trí thực tế của khách hàng và thiết bị, và đã nhận được nó từ hai ứng dụng khác nhau cho đến khi tôi bước vào.
Dài và ngắn là một nguồn dữ liệu cần phải có một tham chiếu đến các bản ghi của dữ liệu kia. Trong trường hợp của chúng tôi, dữ liệu đám mây của bên thứ ba chứa các tham chiếu đến dữ liệu tại chỗ vì đó là sự sắp xếp mà chúng tôi có quyền kiểm soát nhiều nhất. Bây giờ, với ID cho một bản ghi từ một trong hai nguồn dữ liệu, chúng ta có thể lấy dữ liệu từ cả hai; với ID đám mây, chúng tôi lấy bản ghi từ đám mây, lấy ID tại chỗ và kéo dữ liệu tại chỗ. Với ID tại chỗ, chúng tôi thăm dò cả hai nguồn dữ liệu dựa trên ID đó.
Trong hệ thống của tôi, tôi đã không biến đối tượng thành con của người khác trong lớp miền; bất kỳ việc sử dụng dữ liệu từ cả hai cửa hàng đều phải duy trì hai trường hợp đối tượng. Không ai được đảm bảo tồn tại, đó là lý do tại sao tôi đã làm theo cách đó; ứng dụng chỉ có thể hoạt động với dữ liệu đám mây hoặc với dữ liệu tại chỗ hoặc cả hai, với nhiều hạn chế hơn, dữ liệu càng ít.
Tuy nhiên, điều đó không khó để thay đổi, đặc biệt nếu bạn chắc chắn rằng một bên sẽ luôn tồn tại; chỉ cần bao gồm một thuộc tính trong đối tượng đại diện cho phía mà dữ liệu sẽ luôn tồn tại, đó là loại đối tượng đại diện cho bản ghi của kho lưu trữ dữ liệu khác. Nâng cao "hợp nhất" hai biểu đồ thành một là có thể.
Kiểu sắp xếp này nhất thiết phải được ghép ở một số cấp độ. Bạn có thể có một DAL có thể giao tiếp với cả hai kho lưu trữ dữ liệu hoặc bạn có thể phân đoạn các DAL, mỗi DAL cho một kho lưu trữ dữ liệu và có một lớp cao hơn như Bộ điều khiển lấy dữ liệu từ mỗi và gắn chúng lại với nhau. Tuy nhiên, ở một mức độ nào đó, chương trình của bạn phải có thông minh để đặt hai dữ liệu nguồn dữ liệu khác nhau này lại với nhau.
Bạn có thể giảm khớp nối được yêu cầu trong hầu hết các trường hợp bằng cách trừu tượng hóa chi tiết chính xác nơi dữ liệu đến từ đâu. Nếu bạn nhận được dữ liệu từ một dịch vụ web, được cung cấp cho bạn dưới dạng các thể hiện của các lớp được tạo, sau đó đặt một trình chuyển đổi để tạo một bản sao sâu của lớp dịch vụ vào thứ bạn kiểm soát, sẽ không phải thay đổi nếu dữ liệu nguồn nào (chỉ khi lược đồ nào).
Bây giờ, đây có thể là một công việc rất lớn; đám mây chúng ta sử dụng có hàng tá các lớp miền, một số trong đó có hàng trăm trường dữ liệu và - đây là kicker - bạn có thể dễ dàng thực hiện các thay đổi lớn đối với loại dữ liệu trừu tượng để phù hợp với việc di chuyển sang đám mây khác hoặc từ xa khác nguồn dữ liệu. Vì lý do đó, tôi đã không bận tâm; Tôi sử dụng trực tiếp miền dịch vụ web được tạo và bây giờ thay đổi từ kho lưu trữ dữ liệu ngoài đám mây (nhưng dưới sự kiểm soát của chúng tôi) đang xuất hiện, các chi tiết mà tôi vẫn chưa biết, tôi chỉ đơn giản là dự định thay đổi các biểu mẫu và các cơ sở mã của ứng dụng, là nơi dữ liệu được "kết hợp", để phản ánh lược đồ mới và / hoặc các đối tượng dữ liệu. Đó là một công việc lớn, bất cứ cách nào bạn cắt nó.