Tôi có cấu trúc dữ liệu đồ thị được hướng dẫn, nơi tôi đang cố triển khai kiểm soát phiên bản riêng lẻ cho từng đỉnh. Điều này tạo ra một số kịch bản thú vị, và tôi sẽ đánh giá cao bất kỳ ý tưởng nào mà các bạn có. Cụ thể, tôi đang tìm cách giải quyết hành vi mặc định của hệ thống khi gặp phải các kịch bản đã nêu.Đồ thị và kiểm soát phiên bản
Xem hình ảnh sau: Graph versions
Kịch bản 1: "Các Null Pointer Nghịch lý"
Vertex A được cuộn lại lên phiên bản 1.0. Kể từ khi rollback này sẽ cascade xuống subgraph của nó, C sẽ không còn trỏ đến D. Điều này có thể tạo ra một mối nguy hiểm. Nên hành vi được cho:
- 1,1: Xóa rìa C -> D, tạo ra một biểu đồ bị hỏng
- 1.2: Xóa D, để lại E mồ côi
- 1.3: Xóa D và E
- 1,4 : Từ chối thực hiện khôi phục trước khi tất cả các cạnh trỏ tới D (sẽ là E -> D trong trường hợp này) sẽ bị xóa
- 1.X: Giải pháp thay thế?
Kịch bản 2: "Tác động gián tiếp"
Vertex D được cập nhật, vì vậy mà sau giữ:
- D tại là phiên bản 1.2
- E tại là phiên bản 1.1
- C hiện là phiên bản 1.3
- A hiện là phiên bản 1.3
Vertex Một hiện đang cuộn lại lên phiên bản 1.2, do đó sau giữ:
- Một tại là phiên bản 1.2
- C tại là phiên bản 1.2
- D tại là phiên bản 1.1
nên hành vi mặc định là để:
- 2.1: Cuộn lùi E xuống 1.0
- 2.2: Từ chối quay lại do lỗi phiên bản, chức năng làm suy giảm hiệu lực
- 2.X: Giải pháp thay thế?
Xin lỗi vì không rõ ràng hơn. –
Giả sử ở đây các cạnh thuộc về và được phiên bản với đỉnh. Do đó, bằng cách mở rộng, một nút gốc subgraph, chẳng hạn như A, được phiên bản theo những thay đổi trong toàn bộ đồ thị con của nó. Như đã chỉ ra, điều này có hiệu lực tạo ra không chỉ lồng nhau, nhưng máy bay toàn vẹn đa chiều (hoặc lớp), có thể giao nhau. Rõ ràng tại thời điểm này, mọi giải pháp khả thi cho vấn đề này đều nằm ngoài khả năng cá nhân của tôi trong toán học. –
Các giải pháp khả thi duy nhất mà tôi có thể thấy tại thời điểm này là: A) Chỉ các phiên bản đỉnh không quan tâm đến hình ảnh con và siêu đồ thị. Về cơ bản, giá trị nhưng không cấu trúc B) Hạ xuống cấu trúc cây C) Một sự thỏa hiệp, trong đó bối cảnh kiểm soát phiên bản được đặt rõ ràng cho bất kỳ đồ thị con nào, nhưng không cho phép ngữ cảnh lồng nhau; hoặc, trong đó ngữ cảnh lồng nhau bị bỏ qua bởi ngữ cảnh cấp cao hơn, do đó phần nào tách cấu trúc dữ liệu và cấu trúc điều khiển phiên bản Bạn có thể chỉ cho tôi nghiên cứu mà bạn đã đề cập không? –