Ừ Câu trả lời thực sự là một câu hỏi phức tạp đòi hỏi nhiều nền tảng ArcSDE, vì vậy tôi sẽ cố gắng ngắn gọn nhất có thể.
Lưu ý Tôi sẽ đề cập đến một số sơ đồ từ sách trắng phiên bản siêu tuyệt vời mà bạn có thể tìm thấy trong trang web ESRI . Nếu bạn đang xử lý phiên bản, tôi cực kỳ khuyến khích bạn đọc nó xuyên suốt.
Sau đó, bạn cần hiểu mối quan hệ giữa một trạng thái (tức là một nút từ cây trạng thái) và một phiên bản được đặt tên (tức là một nhãn trỏ đến một trạng thái).
Một cơ sở dữ liệu điển hình có thể trông giống như sơ đồ trạng thái bên dưới:
Tại đây, bạn có bốn phiên bản trong cơ sở dữ liệu (Phiên bản A, Phiên bản B, Phiên bản C và DEFAULT). Nhưng có lẽ, tôi đang đi trước một chút. Hãy bắt đầu với trạng thái của nó.
Bạn có thể nghĩ về một trạng thái như một "giao dịch" - một đơn vị logic có chứa một số chỉnh sửa cho một - hoặc nhiều - bảng. Nó có thể bao gồm hai phần chèn vào "FeatureClass A", xóa từ "Lớp tính năng B" và sửa đổi (có hiệu quả là xóa + chèn) thành "Lớp tính năng X". Tất cả được nhóm lại thành một.
Hãy xem sơ đồ trạng thái ArcSDE nhỏ, đơn giản bắt đầu ở trạng thái id 0:
Nếu bạn bắt đầu ở trạng thái 0 và bạn chỉnh sửa thành một hoặc nhiều bảng trong thao tác chỉnh sửa, bạn sẽ tạo trạng thái con 1 và biến đó thành trạng thái hoạt động hiện tại . Một nhóm chỉnh sửa tiếp theo sẽ tạo trạng thái con 2. Nếu bạn muốn hoàn tác, bạn không cần sửa đổi id trạng thái theo bất kỳ cách nào - tất cả những gì bạn cần làm là thay đổi id trạng thái hoạt động hiện tại thành 1 hoặc 0 (tùy thuộc vào bạn muốn đi bao xa Làm lại là ngược lại - chỉ cần di chuyển id trạng thái hoạt động hiện tại về phía trước - xa như bạn muốn đi.
Đó là cách hoàn tác / làm lại trong phiên bản ArcSDE.
OK, di chuyển trên. Giả sử bạn muốn chỉnh sửa vĩnh viễn (nghĩa là bạn muốn lưu). Làm những gì bạn phải làm? Chà, tiết kiệm chỉ là lấy một nhãn phiên bản và chuyển nó sang một trạng thái cụ thể. Kiểu như dập nó và nói "đây là phiên bản A phải như thế nào". Vì vậy, nếu bạn nhìn lại sơ đồ đầu tiên, bạn sẽ thấy rằng nó có bốn phiên bản được đặt tên .
- Phiên bản B trỏ đến trạng thái id 1
- Phiên bản A trỏ đến trạng thái id 3
- Phiên bản C trỏ đến trạng thái id 5
Phiên bản "SDE.DEFAULT" trỏ đến trạng thái id 4
Xin lưu ý rằng sơ đồ này, mặc dù có niềm tin phổ biến, không cho bạn biết bất cứ điều gì về mối quan hệ cha-con hợp lý mà họ có. Mối quan hệ cha-con hợp lý cho sơ đồ đầu tiên có thể có hiệu quả như sau:
Đây là mối quan hệ cha-con mà bạn thấy trong ArcMap / ArcCatalog. Mục đích của nó là hạn chế những phiên bản nào bạn có thể dung hòa được. Tại thời điểm này, bạn có thể (chính xác) tự hỏi mình, tại sao tôi cần cái này? Câu trả lời, nằm trong quy trình làm việc phiên bản . Hóa ra, mọi người đã sử dụng phiên bản khá lâu và có một số cách ưa thích về cách cấu trúc những thứ này, nhưng đó là một chủ đề cho một ngày khác kể từ khi tôi muốn trả lời câu hỏi của bạn ngày hôm nay :)
Tiếp tục ...
OK, vậy những phiên bản được đặt tên này làm gì khác? Chà, chúng ảnh hưởng đến cách quá trình này được gọi là hành vi nén .
Nén là tất cả về việc lấy các trạng thái trung gian có thể không cần thiết và loại bỏ các trạng thái không cần thiết cũng như kết hợp chúng. Bạn có thể kích hoạt hoạt động nén ArcSDE thông qua ArcCatalog, thiết lập một dịch vụ thực hiện từng bước một và một số thao tác chỉnh sửa ArcMap sẽ kích hoạt các hoạt động nén mini (tức là chỉ cho các nhánh nhỏ đang được sử dụng).
Biểu đồ bên trái hiển thị một cây trạng thái trước khi nó được nén và cây bên phải hiển thị nó ngay sau khi nó được nén:
Một khái niệm quan trọng cần hiểu (mà tôi sẽ đề cập đến bạn một khi cuối cùng tôi cũng trả lời được câu hỏi của bạn) là mỗi trạng thái là một ứng cử viên tiềm năng cần được nén - ngoại trừ các trạng thái có nhãn (tức là phiên bản được đặt tên) chỉ vào chúng.
Bạn có thể thấy rằng trước khi nén, có một số trạng thái không cần thiết. Trên thực tế, toàn bộ [3,4,5] chi nhánh đã bị xóa. Đã có một phiên bản được đặt tên ở mức 5, kết quả cuối cùng sẽ rất khác.
Hoạt động nén có sẵn để tiết kiệm không gian trên cơ sở dữ liệu của bạn bằng cách xóa các bản ghi bạn không cần nữa.
OK, di chuyển trên.
Khái niệm cuối cùng mà bạn cần hiểu, là hòa giải - đó là hợp nhất hiệu quả hai nhánh thành một.
Vì vậy, hãy quay trở lại sơ đồ đầu tiên của chúng tôi. Giả sử bạn muốn điều hòa Phiên bản A với SDE.DEFAULT.
Chúng ta hãy tóm tắt lại: bốn phiên bản được đặt tên chỉ vào các id trạng thái khác nhau. Vì vậy, điều đầu tiên chúng ta phải làm là tạo trạng thái con theo phiên bản đích, vì vậy chúng ta tạo trạng thái con theo trạng thái id 4, trong ví dụ của chúng ta, tôi gọi trạng thái đó là id 20.
Bước tiếp theo là tính toán sự khác biệt giữa cả hai phiên bản (chi tiết quá dài cho bài đăng này, nhưng tôi có thể nói với bạn rằng chúng được thực hiện với các con trỏ khác nhau ) và sau đó áp dụng những khác biệt đó cho id trạng thái mới 20 (dòng màu xanh).
Giả sử bạn quyết định thực hiện thêm các chỉnh sửa hoặc bạn đã tìm thấy xung đột và đang chọn các hàng từ một phiên bản hoặc phiên bản khác. Nó không thành vấn đề. Đó chỉ là những chỉnh sửa mới và được thực hiện trong một thao tác chỉnh sửa, vì các trạng thái con bên dưới nhánh mà bạn đã hợp nhất. Trong ví dụ này, tôi đã thực hiện thêm hai nhóm chỉnh sửa liên tiếp sau khi hòa giải.
Đáng yêu.
Vì vậy, bây giờ nói rằng bạn đã sẵn sàng " đăng " phiên bản. Điều đó nghĩa là gì? Đó chỉ là lấy các nhãn và trỏ chúng vào cùng một id trạng thái. Ở đây, tôi sẽ đăng Phiên bản A lên SDE.DEFAULT. Đây là những gì nó trông giống như:
TADAAA! Vì vậy, bây giờ Phiên bản A và SDE.DEFAULT đang trỏ đến cùng một id trạng thái và do đó chúng trông giống nhau.
OK, vì vậy bây giờ tôi cuối cùng có thể trả lời câu hỏi của bạn.
Bạn có thể hoàn tác một bài viết? Tài liệu ArcGIS sẽ cho bạn biết không - đừng gây rối với nó. Đừng làm điều đó, bởi vì bạn sẽ bị rối với logic này và nếu bạn không biết bạn đang làm gì, bạn có thể làm hỏng dữ liệu của mình.
Nhưng trên thực tế, tất cả chỉ cần thực hiện một bản cập nhật của một trong các bảng Phiên bản ArcSDE - bảng VERSION và sửa đổi mục nhập của nhãn (còn gọi là phiên bản có tên). Trong ví dụ của chúng tôi, hãy trỏ đến trạng thái id 21 và bạn vừa hoàn tác toàn bộ thao tác chỉnh sửa đó. Đặt nó thành 3 và bạn chỉ cần hủy toàn bộ phần đối chiếu. Đặt nó thành 5, và bây giờ bạn đang ở một nơi hoàn toàn khác. Cho dù có hay không có xung đột là không liên quan.
Tất nhiên, điều này giả định rằng việc nén đã không xảy ra. Hãy xem xét trường hợp nén xảy ra đúng vào cùng thời điểm bạn đang cập nhật bảng SDE. Hãy nhớ rằng, nếu bạn - hoặc ai đó - thực hiện nén sau khi bạn đăng thì đây là cây trông như thế nào:
Bạn có thể hoàn tác việc hòa giải sau khi nén không? Vâng, trong trường hợp này, không . Việc nén đã thổi bay toàn bộ chi nhánh, do đó bạn không thể hoàn tác - dữ liệu đó đã bị xóa. Nếu có một phiên bản được đặt tên khác trên nhánh đó, thì nén sẽ không phá hủy nhánh đó. Tôi hy vọng rằng bây giờ điều này có ý nghĩa.
Vì vậy, bạn nên làm điều này? Tùy thuộc vào bạn, nếu bạn không biết những gì bạn đang làm, bạn có thể dễ dàng mất dữ liệu sau khi nén.