ฮึ. คำตอบนั้นซับซ้อนจริงๆที่ต้องใช้พื้นหลัง ArcSDE จำนวนมากดังนั้นฉันจะพยายามสรุปให้สั้นที่สุด
หมายเหตุ: ฉันจะหมายถึงแผนภาพบางส่วนจากกระดาษสีขาวที่น่ากลัวสุดเวอร์ชันที่คุณจะพบในเว็บไซต์ ESRI หากคุณกำลังจัดการกับเวอร์ชันฉันขอแนะนำให้คุณอ่านมันอย่างละเอียด
จากนั้นคุณต้องเข้าใจว่าอะไรคือความสัมพันธ์ระหว่างสถานะ (เช่นโหนดจากแผนผังต้นไม้) และรุ่นที่ระบุชื่อ (เช่นป้ายชี้ไปที่รัฐ)
ฐานข้อมูลทั่วไปอาจมีลักษณะแผนภาพสถานะด้านล่าง:
ที่นี่คุณมีสี่รุ่นในฐานข้อมูล (เวอร์ชัน A, เวอร์ชัน B, เวอร์ชัน C และ DEFAULT) แต่บางทีฉันอาจได้รับล่วงหน้า เริ่มจากสิ่งที่เป็นรัฐกันก่อน
คุณสามารถนึกถึงสถานะว่าเป็น "ธุรกรรม" - หน่วยทางลอจิคัลที่มีการแก้ไขหลายอย่างในตารางเดียวหรือหลายตาราง มันอาจรวมสองแทรกไว้ใน "FeatureClass A", การลบจาก "Feature Class B" และการแก้ไข (การลบ + การแทรกอย่างมีประสิทธิภาพ) เป็น "Feature Class X" ทั้งหมดจัดกลุ่มเป็นหนึ่งเดียว
ลองดูแผนภาพสถานะ ArcSDE ขนาดเล็กง่ายที่เริ่มต้นที่สถานะ id 0:
หากคุณเริ่มต้นที่ 0 และรัฐที่คุณทำแก้ไขใดอย่างหนึ่งหรือหลายตารางในการดำเนินการแก้ไขคุณจะสร้างรัฐเด็ก 1 คนและให้ที่หนึ่งรัฐ ID กลุ่มการแก้ไขอื่น ๆ ที่ตามมาจะสร้างสถานะลูก 2 หากคุณต้องการเลิกทำคุณไม่จำเป็นต้องแก้ไขรหัสสถานะไม่ว่าด้วยวิธีใด - สิ่งที่คุณต้องทำคือเปลี่ยนรหัสสถานะปัจจุบันที่ใช้งานเป็น 1 หรือ 0 (ขึ้นอยู่กับ คุณต้องการไปไกลแค่ไหน) การทำซ้ำเป็นสิ่งที่ตรงกันข้าม - เพียงแค่ย้ายรหัสสถานะที่ใช้งานปัจจุบันไปข้างหน้า - ไปข้างหน้าไกลที่สุดเท่าที่คุณต้องการไป
นั่นคือวิธีการเลิกทำ / ทำซ้ำในเวอร์ชัน ArcSDE
ตกลงย้ายต่อไป สมมติว่าคุณต้องการแก้ไขแบบถาวร (เช่นคุณต้องการบันทึก) คุณต้องทำอะไร การประหยัดเป็นเพียงการคว้าป้ายกำกับเวอร์ชันและย้ายไปข้างหน้าไปยังสถานะเฉพาะ ชนิดเหมือนประทับมันและพูดว่า "นี่คือสิ่งที่รุ่น A ต้องมีลักษณะ" ดังนั้นถ้าคุณมองกลับไปที่แผนภาพแรกคุณจะเห็นว่ามันมีสี่ชื่อรุ่น
- เวอร์ชัน B ชี้ไปที่สถานะ id 1
- รุ่น A ชี้ไปที่สถานะ id 3
- เวอร์ชัน C ชี้ไปที่ id id 5
รุ่น "SDE.DEFAULT" ชี้ไปที่สถานะ id 4
โปรดทราบว่าแผนภาพนี้แม้จะมีความเชื่อที่ได้รับความนิยมไม่ได้บอกอะไรคุณเกี่ยวกับความสัมพันธ์แบบพ่อแม่และลูกเชิงตรรกะ ความสัมพันธ์แบบพ่อแม่และลูกแบบลอจิคัลสำหรับไดอะแกรมแรกอาจมีลักษณะเช่นนี้:
นี่คือความสัมพันธ์พาเรนต์ - ลูกที่คุณเห็นใน ArcMap / ArcCatalog มีวัตถุประสงค์คือเพื่อจำกัดเวอร์ชันที่คุณสามารถกระทบยอดได้ ณ จุดนี้คุณสามารถถามตัวเองได้ว่าทำไมฉันถึงต้องการสิ่งนี้ คำตอบอยู่ในขั้นตอนการทำงานเวอร์ชัน กลับกลายเป็นว่าผู้คนใช้เวอร์ชันมาหลายครั้งแล้วและมีวิธีที่นิยมใช้ในการจัดโครงสร้างเหล่านี้ แต่นั่นเป็นหัวข้อสำหรับอีกวันหนึ่งเนื่องจากฉันต้องการตอบคำถามของคุณในวันนี้ :)
กำลังเดินทางไป...
ตกลงดังนั้นเวอร์ชันที่ชื่อนี้จะทำอะไรได้อีก ดีที่พวกเขาส่งผลกระทบต่อกระบวนการนี้เรียกว่าการบีบอัดพฤติกรรม
การบีบอัดเป็นข้อมูลเกี่ยวกับการจับสถานะกลางที่อาจไม่จำเป็นและการลบสิ่งที่ไม่จำเป็นออกรวมถึงการรวมเข้าด้วยกัน คุณสามารถเรียกใช้การบีบอัด ArcSDE ผ่าน ArcCatalog ตั้งค่าบริการที่ทำได้ทุกอย่างในชั่วขณะหนึ่งและการดำเนินการแก้ไข ArcMap บางอย่างจะทำให้เกิดการบีบอัดขนาดเล็ก (เช่นสำหรับสาขาขนาดเล็กที่ใช้)
ไดอะแกรมทางด้านซ้ายแสดงแผนผังสถานะก่อนที่จะถูกบีบอัดและแผนผังทางด้านขวาแสดงให้เห็นทันทีหลังจากที่ถูกบีบอัด:
แนวคิดสำคัญที่จะเข้าใจ (ซึ่งฉันจะอ้างถึงคุณเมื่อฉันตอบคำถามของคุณได้ในที่สุด) คือทุก ๆ สถานะเป็นผู้สมัครที่มีศักยภาพที่จะถูกบีบอัด - ยกเว้นรัฐที่มีป้ายกำกับ (เช่นชื่อรุ่น) ชี้ไปที่พวกเขา
คุณสามารถเห็นได้ว่าก่อนการบีบอัดมีบางสถานะที่ไม่จำเป็น ที่จริงแล้ว [3,4,5] สาขาทั้งหมดถูกลบออกไป หากมีรุ่นที่ชื่อ 5 ผลลัพธ์ที่ได้จะแตกต่างกันมาก
การบีบอัดข้อมูลจะช่วยประหยัดพื้นที่บนฐานข้อมูลของคุณโดยการลบบันทึกที่คุณไม่ต้องการอีกต่อไป
ตกลงย้ายต่อไป
แนวคิดสุดท้ายที่คุณต้องเข้าใจคือการกระทบยอดซึ่งเป็นการรวมสาขาสองสาขาเข้าด้วยกันอย่างมีประสิทธิภาพ
ลองกลับไปดูแผนภาพแรกของเรากัน สมมติว่าคุณต้องการกระทบยอดเวอร์ชัน A กับ SDE.DEFAULT
ขอปะยางรถ: รุ่นที่มีชื่อสี่แบบซึ่งชี้ไปยังรหัสสถานะต่าง ๆ ดังนั้นสิ่งแรกที่เราต้องทำคือสร้างสถานะลูกภายใต้รุ่นเป้าหมายดังนั้นเราจึงสร้างรัฐย่อยภายใต้สถานะ id 4 ในตัวอย่างของเราฉันเรียกว่าสถานะ id 20
ขั้นตอนต่อไปคือการคำนวณความแตกต่างระหว่างทั้งสองเวอร์ชัน (รายละเอียดยาวเกินไปสำหรับโพสต์นี้ แต่ฉันสามารถบอกคุณได้ว่าพวกเขาทำด้วยเคอร์เซอร์ที่ต่างกัน ) จากนั้นใช้ความแตกต่างเหล่านั้นกับสถานะ id ใหม่ 20 (สีน้ำเงิน)
สมมติว่าคุณตัดสินใจที่จะทำการแก้ไขเพิ่มเติมหรือพบความขัดแย้งและกำลังเลือกแถวจากรุ่นหนึ่งหรือรุ่นอื่น มันไม่สำคัญ สิ่งเหล่านี้เป็นเพียงการแก้ไขใหม่และดำเนินการภายในการดำเนินการแก้ไขเนื่องจากสถานะลูกภายใต้สาขาที่คุณรวมเข้าด้วยกัน ในตัวอย่างนี้ฉันได้ทำการแก้ไขต่อเนื่องอีกสองกลุ่มหลังจากการกระทบยอด
น่ารัก
ตอนนี้บอกว่าคุณพร้อม " โพสต์ " เวอร์ชันแล้ว นั่นหมายความว่าอย่างไร? นั่นเป็นเพียงการคว้าป้ายกำกับและชี้ไปที่รหัสรัฐเดียวกัน ที่นี่ฉันจะโพสต์เวอร์ชัน A ถึง SDE.DEFAULT นี่คือสิ่งที่ดูเหมือนว่า:
tadaaa! ดังนั้นตอนนี้เวอร์ชั่น A และ SDE.DEFAULT จะชี้ไปที่ id สถานะเดียวกันและทำให้ดูเหมือนกัน
ตกลงดังนั้นตอนนี้ในที่สุดผมก็สามารถตอบคำถามของคุณ
คุณสามารถเลิกทำการโพสต์ได้หรือไม่? เอกสาร ArcGIS จะบอกคุณไม่ - อย่าไปยุ่งกับมัน อย่าทำเพราะคุณจะยุ่งกับตรรกะนี้และถ้าคุณไม่รู้ว่าคุณกำลังทำอะไรอยู่คุณสามารถทำลายข้อมูลของคุณได้
แต่ในความเป็นจริงสิ่งที่ต้องทำก็คือทำการอัปเดตหนึ่งในตารางการกำหนดเวอร์ชัน ArcSDE - ตาราง VERSIONS และปรับเปลี่ยนรายการของฉลาก (aka ชื่อรุ่น) ในตัวอย่างของเราชี้ไปที่สถานะ id 21 และคุณเพิ่งเลิกทำการแก้ไขทั้งหมด ตั้งค่าเป็น 3 และคุณเพียงแค่ยกเลิกการกระทบยอดทั้งหมด ตั้งไว้ที่ 5 และตอนนี้คุณอยู่ในสถานที่ที่แตกต่างอย่างสิ้นเชิง ไม่ว่าจะมีหรือไม่มีความขัดแย้งก็ไม่เกี่ยวข้อง
แน่นอนว่านี่ถือว่าการบีบอัดไม่ได้เกิดขึ้น ลองพิจารณากรณีที่การบีบอัดเกิดขึ้นในเวลาเดียวกันกับที่คุณกำลังอัปเดตตาราง SDE โปรดจำไว้ว่าถ้าคุณ - หรือคนอื่น ๆ - ดำเนินการบีบอัดหลังจากที่คุณโพสต์นี้เป็นต้นไม้ที่มีลักษณะ:
คุณสามารถยกเลิกการกระทบยอดหลังจากการบีบอัดได้หรือไม่? ทั้งในกรณีนี้ไม่มี การบีบอัดทำให้สาขาทั้งหมดหายไปดังนั้นคุณจึงไม่สามารถเลิกทำ - ข้อมูลนั้นถูกลบไปแล้ว หากมีอีกเวอร์ชันหนึ่งชื่อในสาขานั้นการบีบอัดจะไม่ทำลายสาขานั้น ฉันหวังว่าตอนนี้มันสมเหตุสมผลแล้ว
ดังนั้นคุณควรทำเช่นนี้? ขึ้นอยู่กับคุณถ้าคุณไม่รู้ว่าคุณกำลังทำอะไรคุณสามารถหลุดข้อมูลได้อย่างง่ายดายหลังจากทำการบีบอัดข้อมูล