Ugh. Jawabannya benar-benar rumit yang membutuhkan banyak latar belakang ArcSDE, jadi saya akan mencoba sesingkat mungkin.
Catatan saya akan merujuk ke beberapa diagram dari kertas putih versi super keren yang dapat Anda temukan di situs ESRI . Jika Anda berurusan dengan versi, saya sangat menyarankan Anda untuk membacanya secara menyeluruh.
Kemudian, Anda perlu memahami apa hubungan antara keadaan (yaitu simpul dari pohon negara) dan versi bernama (yaitu label yang menunjuk ke keadaan).
Database tipikal mungkin terlihat seperti diagram-negara di bawah ini:
Di sini, Anda memiliki empat versi dalam basis data (Versi A, Versi B, Versi C dan DEFAULT). Tapi mungkin, saya sedikit lebih maju. Mari kita mulai dengan apa itu negara .
Anda bisa menganggap negara sebagai "transaksi" - unit logis yang berisi beberapa pengeditan untuk satu - atau banyak - tabel. Ini mungkin termasuk dua sisipan untuk "FeatureClass A", penghapusan dari "Feature Class B" dan yang memodifikasi (secara efektif sebuah delete + a insert) ke "Feature Class X". Semua dikelompokkan menjadi satu.
Mari kita lihat diagram state ArcSDE kecil dan sederhana yang dimulai dengan state id 0:
Jika Anda mulai pada status 0 dan Anda mengedit ke satu atau banyak tabel dalam operasi edit, Anda akan membuat status anak 1 dan menjadikannya sebagai status keadaan aktif saat ini . Grup pengeditan berikutnya berikutnya akan membuat status anak 2. Jika Anda ingin membatalkan, Anda tidak perlu mengubah status id dengan cara apa pun - yang perlu Anda lakukan adalah mengubah status keadaan aktif saat ini menjadi 1, atau 0 (tergantung seberapa jauh ke belakang Anda ingin pergi). Redo adalah kebalikannya - cukup gerakkan id keadaan aktif saat ini - sejauh yang Anda inginkan.
Itulah cara undo / redo bekerja dalam versi ArcSDE.
Oke, lanjutkan. Katakan, bahwa Anda ingin membuat edit permanen (yaitu, Anda ingin menyimpan). Apa yang harus Anda lakukan? Ya, menabung hanya mengambil label versi dan memajukannya ke kondisi tertentu. Agak suka mencapnya dan mengatakan "Versi seperti apa yang harus terlihat". Jadi jika Anda melihat kembali diagram pertama, Anda akan melihat bahwa ia memiliki empat versi bernama .
- Versi B menunjukkan status id 1
- Versi A menunjukkan status id 3
- Versi C menunjukkan status id 5
Versi "SDE.DEFAULT" menunjuk ke status id 4
Harap perhatikan bahwa diagram ini, terlepas dari kepercayaan populer, tidak memberi tahu Anda apa pun tentang hubungan logis orang tua-anak yang mereka miliki. Hubungan logis orangtua-anak untuk diagram pertama dapat terlihat seperti ini:
Ini adalah hubungan orangtua-anak yang Anda lihat di ArcMap / ArcCatalog. Tujuannya adalah untuk membatasi versi mana yang dapat Anda rekonsiliasi. Pada titik ini, Anda dapat (secara sah) bertanya pada diri sendiri, mengapa saya membutuhkan ini? Jawabannya, terletak pada versi alur kerja . Ternyata, orang-orang telah menggunakan versi untuk beberapa waktu dan ada beberapa cara yang lebih disukai bagaimana menyusun ini, tapi itu adalah topik untuk hari lain sejak saya ingin menjawab pertanyaan Anda hari ini :)
Bergerak...
OK, jadi apa lagi yang dilakukan versi bernama ini? Ya, mereka memengaruhi bagaimana proses yang disebut kompres ini berperilaku.
Kompres adalah tentang meraih status perantara yang mungkin tidak diperlukan, dan menghapus yang tidak perlu serta menggabungkannya. Anda dapat memicu operasi kompres ArcSDE melalui ArcCatalog, mengatur layanan yang melakukannya setiap saat, dan beberapa operasi edit ArcMap akan memicu operasi kompres mini (yaitu hanya untuk cabang kecil yang sedang digunakan).
Diagram di sebelah kiri menunjukkan pohon keadaan sebelum dikompresi, dan yang di sebelah kanan menunjukkannya tepat setelah dikompresi:
Konsep penting untuk dipahami (yang akan saya rujuk kepada Anda begitu saya akhirnya bisa menjawab pertanyaan Anda) adalah bahwa setiap negara bagian adalah kandidat potensial untuk dikompresi - kecuali negara yang memiliki label (yaitu versi yang disebutkan) menunjuk pada mereka.
Anda dapat melihat bahwa sebelum kompres ada beberapa kondisi tambahan yang tidak perlu. Bahkan, seluruh cabang [3,4,5] dihilangkan. Seandainya ada versi bernama di 5, hasil akhirnya akan sangat berbeda.
Operasi kompres ada untuk menghemat ruang pada basis data Anda dengan menghapus catatan yang tidak Anda butuhkan lagi.
Oke, lanjutkan.
Konsep terakhir yang perlu Anda pahami adalah berdamai - yang secara efektif menggabungkan dua cabang menjadi satu.
Jadi mari kita kembali ke diagram pertama kita. Katakan bahwa Anda ingin merekonsiliasi Versi A dengan SDE.DEFAULT.
Mari kita rekap: empat versi bernama menunjuk ke berbagai id negara. Jadi hal pertama yang harus kita lakukan, adalah membuat status anak di bawah versi target, jadi kita membuat status anak di bawah status id 4, dalam contoh kita, saya sebut status id 20.
Langkah selanjutnya adalah menghitung perbedaan antara kedua versi (detailnya terlalu panjang untuk posting ini, tetapi saya dapat memberitahu Anda bahwa mereka selesai dengan kursor perbedaan ) dan kemudian menerapkan perbedaan tersebut ke id keadaan baru 20 (garis biru).
Katakanlah Anda memutuskan untuk melakukan lebih banyak pengeditan atau menemukan konflik dan memilih baris dari satu versi, atau yang lain. Itu tidak masalah. Itu hanya suntingan baru, dan dilakukan di dalam operasi edit, saat anak menyatakan di bawah cabang yang Anda gabungkan. Dalam contoh ini, saya telah melakukan dua kelompok suntingan berturut-turut setelah rekonsiliasi.
Menyenangkan.
Jadi sekarang katakan bahwa Anda siap " memposting " versi. Apa artinya? Itu hanya meraih label dan mengarahkannya ke status yang sama. Di sini, saya akan memposting Versi A ke SDE.DEFAULT. Seperti inilah tampilannya:
TADAAA! Jadi sekarang Versi A dan SDE.DEFAULT menunjuk ke state id yang sama, dan dengan demikian mereka terlihat sama.
Oke, jadi sekarang saya akhirnya bisa menjawab pertanyaan Anda.
Bisakah Anda membatalkan kiriman? Dokumentasi ArcGIS akan memberi tahu Anda tidak - jangan macam-macam dengan itu. Jangan lakukan itu, karena Anda akan mengacaukan logika ini, dan jika Anda tidak tahu apa yang Anda lakukan, Anda dapat merusak data Anda.
Namun sebenarnya, yang diperlukan hanyalah melakukan satu pembaruan dari salah satu tabel Versi ArcSDE - tabel VERSI, dan memodifikasi entri label (alias versi yang disebutkan). Dalam contoh kami, arahkan ke status id 21, dan Anda baru saja membatalkan seluruh operasi edit. Atur ke 3, dan Anda hanya membatalkan unduhan seluruh rekonsiliasi. Atur ke 5, dan sekarang Anda berada di tempat yang sama sekali berbeda. Apakah ada atau tidak ada konflik tidak relevan.
Tentu saja, ini mengasumsikan bahwa kompres belum terjadi. Mari kita perhatikan kasus di mana kompres terjadi tepat pada saat yang sama Anda memperbarui tabel SDE. Ingat, jika Anda - atau orang lain - mengeksekusi kompres setelah Anda mengeposkannya, seperti inilah struktur pohonnya:
Bisakah Anda membatalkan rekonsiliasi setelah kompres? Nah, dalam hal ini, tidak . Kompres telah menghapus seluruh cabang, jadi Anda tidak dapat membatalkan - bahwa data telah dihapus. Jika ada versi bernama lain di cabang itu, maka kompres tidak akan menghancurkan cabang itu. Saya harap sekarang ini masuk akal.
Jadi, haruskah Anda melakukan ini? Terserah Anda, jika Anda tidak tahu apa yang Anda lakukan, Anda dapat dengan mudah kehilangan data setelah kompres.