ประสิทธิภาพของโปรแกรม ArcGIS โดยใช้ฐานข้อมูลไฟล์ทางภูมิศาสตร์หลายไฟล์


11

ฉันกำลังพยายามตัดสินใจวิธีที่ดีที่สุดในการจัดระเบียบข้อมูลของฉันสำหรับแอปพลิเคชัน ArcGIS Engine ฉันสนใจการแสดงแผนที่และความเร็วในการสืบค้นเป็นพิเศษ ขณะนี้ฉันมีข้อมูลทั้งหมดของฉันแยกออกเป็นฐานข้อมูลไฟล์ทางภูมิศาสตร์แยกตามธีม ดังนั้นฉันจึงมี Transportation.gdb, Utilities.gdb และอื่น ๆ ข้อมูลไม่จำเป็นต้องจัดระเบียบตามธีมและฉันกำลังพิจารณาที่จะวางทั้งหมดไว้ในฐานข้อมูลเดียว

ฉันจะทำการทดสอบของตัวเอง แต่ฉันต้องการส่งคำถามไปยังชุมชน

โดยทั่วไปแล้วการใช้ฐานข้อมูลไฟล์ทางภูมิศาสตร์เดียวจะเร็วกว่าการใช้หลาย ๆ ไฟล์ (ประมาณ 7) เล็กกว่าหรือไม่ ฉันสนใจในข้อดี / ข้อเสียอื่น ๆ เช่นกัน

หมายเหตุ: ซอฟต์แวร์และข้อมูลทั้งหมดจะอยู่ในเครื่องของลูกค้า ไม่มีการให้บริการข้อมูลบนเว็บหรือผ่านเครือข่ายและปริมาณข้อมูลมีขนาดค่อนข้างเล็ก (มีคุณสมบัติประมาณ 100,000 รายการ)

คำตอบ:


5

ฉันกำลังจะไปทางอื่นและที่จริงบอกว่าไม่มีก็ไม่ได้มีการปรับปรุงประสิทธิภาพการทำงานที่ดีที่จะแยก GeoDatabases สำหรับการนี้โดยเฉพาะการใช้งานในกรณีที่คุณอธิบาย

คุณต้องจำไว้ว่ามีค่าใช้จ่ายที่เกี่ยวข้องกับการเชื่อมต่อกับฐานข้อมูล ในกรณีของ GeoDatabase จะทำการโหลดตารางเมทาดาทาที่เกี่ยวข้องทั้งหมด ดังนั้นเมื่อใดก็ตามที่คุณแยกข้อมูลของคุณออกเป็นหลาย GDB คุณก็แค่เพิ่มค่าใช้จ่ายเพราะตอนนี้คุณต้องเปิดตารางเหล่านี้หลายเวอร์ชัน (หนึ่งสำหรับแต่ละฐานข้อมูล) การทำ Multiplexing เพื่อค้นหา DBs ที่แตกต่างกันมักจะหมายถึง i / o ด้วยแคชที่ได้รับการตรวจสอบความถูกต้อง

อย่างไรก็ตามมีบางกรณีที่การมีหลายฐานข้อมูลอาจทำงานได้ดีขึ้น ตัวอย่างเช่น. พิจารณากรณีของ gdb ส่วนบุคคล (ไม่ใช่ filegdb) ที่ 700MB เทียบกับสองที่ 350MB ต่อชิ้น ไดรเวอร์ MS Jet (สิ่งที่ใช้ในการโต้ตอบกับไฟล์. mdb) จะแม็พไฟล์หน่วยความจำน้อยกว่า 500MB - ดังนั้นหากเครื่องมีหน่วยความจำเพียงพอคุณจะโต้ตอบกับฐานข้อมูลในหน่วยความจำอย่างเต็มที่เทียบกับดิสก์ i / o ใด ๆ เร็วขึ้นมาก ไฟล์ 700MB จะไม่ถูกแมปหน่วยความจำ

เอากรณีนี้ออกจากสมการแล้วมันไม่สมเหตุสมผลเลยที่จะแยก dbs ArcMap ขณะที่มันวนลูปผ่านเลเยอร์จะทำการค้นหาแต่ละเลเยอร์ตามลำดับดังนั้นคุณจะไม่เกิดการขนานกัน

คุณควรสร้างดัชนี FileGDB ของคุณขึ้นใหม่แทน

และใช่ SSD จะช่วยได้แน่นอน


1
โอ้ การแมปหน่วยความจำของ <500mb .mdb นั้นน่าสนใจ ฉันได้เขียน gdb ส่วนตัวว่าไม่ดีสำหรับสิ่งอื่นใดนอกเหนือจากการสั่งซื้อใหม่และการตั้งชื่อใหม่ใน ms-access แทนกระบวนการ add-a-copy-and-delete ที่เจ็บปวดที่จำเป็นใน arcgis บางทีตอนนี้ฉันมีเหตุผลอื่นที่จะใช้พวกเขาเป็นครั้งคราว ไฟล์จุดเปลี่ยนขนาด 500mb มีขนาดดิสก์หรืออย่างอื่นหรือไม่ (เช่น jpeg สามารถมีขนาด 30kb บนดิสก์ได้ แต่กินหน่วยความจำหลายเมกะไบต์เมื่อเปิด)
แมตต์วิลคี

1
เท่าที่ฉันจำได้นี่เป็นพฤติกรรมจากเครื่องยนต์ Jet เองและไม่ใช่ ESRI ที่ถูกกระตุ้น นอกจากนี้มันยังเล็กกว่า 500MB เล็กน้อย เป็นคำถามที่ดีเกี่ยวกับขนาดไฟล์และหน่วยความจำ ฉันคิดว่ามันเป็นขนาดไฟล์ - แต่ฉันจำไม่ได้ว่าจะซื่อสัตย์กับคุณ
Ragi Yaser Burhum

4

จริงๆแล้วมันเป็นวิธีอื่น ๆ การสืบค้นฐานข้อมูลขนาดเล็กเร็วขึ้น มันเหมือนกับถามว่าคุณสามารถค้นหาสิ่งต่าง ๆ ได้เร็วขึ้นหรือไม่ถ้าคุณทิ้งทุกอย่างไว้ในกองใหญ่ในห้องใต้ดินแทนที่จะจัดเก็บไว้ในตู้เก็บเอกสารส่วนตัว เมื่อคุณมีฐานข้อมูลส่วนบุคคลนั่นก็เหมือนกับการมีตู้เก็บเอกสาร 6 ตู้ที่คุณสามารถมองข้ามตั้งแต่เริ่มแรกและไม่ต้องมองผ่าน แน่นอนว่าคุณรู้ว่าฐานข้อมูลใดที่ต้องการสืบค้นหากคุณต้องการตรวจสอบฐานข้อมูลทั้งหมดแล้วฐานข้อมูลขนาดใหญ่อาจเร็วกว่า (เพราะสามารถเพิ่มประสิทธิภาพของชุดข้อมูลโดยรวมได้)


3

ในครั้งเดียวฉันมีการตั้งค่าคล้ายกับ ArcReader บนอุปกรณ์ที่ไม่ได้ระบุไว้เป็นอย่างดีสำหรับ GIS และโชคดีที่รักษาการเชื่อมต่อเครือข่ายที่เสถียรกับเซิร์ฟเวอร์ GIS ( เรากำลังพูดถึงการเชื่อมต่อแบบมีสายที่ไม่เสถียร ... )

ฉันมีฐานข้อมูลจำนวนมากที่โดยทั่วไปขาด "ธีม" และตามความถี่ในการอัปเดต ฉันแยกพวกเขาออกเป็นรายวันรายเดือนรายปีหรือสามปี (ซึ่งเป็นกำหนดการอัปเดตทางอากาศ / Planimetric) เนื่องจากพวกเขาอัปเดตผ่าน robocopy ฉันไม่ต้องการย้ายข้อมูลใด ๆ ที่ไม่จำเป็นไปยังอุปกรณ์เหล่านี้

หากคุณอยู่ในสภาพแวดล้อมที่คุณไม่มีความสามารถในการจำลองแบบฐานข้อมูลทางภูมิศาสตร์ที่แข็งแกร่งหรือคุณเพียงแค่ได้รับไฟล์ฐานข้อมูลทางภูมิศาสตร์เพื่อการแจกจ่ายมันอาจจะง่ายกว่าที่จะจัดการด้วยการแยกที่เก็บข้อมูลออกด้วยวิธีนี้

เพื่อตอบคำถามด้านประสิทธิภาพของคุณ: ฉันไม่เคยสังเกตเห็นว่าความเร็วลดลงด้วยการแยกที่เก็บข้อมูลของฉันออกเป็นฐานข้อมูลไฟล์ภูมิศาสตร์แยกต่างหาก นั่นไม่ได้หมายความว่าไม่มี แต่ถ้าเป็นเช่นนั้นมันก็ไม่ใช่มนุษย์ที่รับรู้ได้ เป็นที่น่าสังเกตว่าการกำหนดค่าเหล่านี้มีฐานข้อมูลไฟล์ทางภูมิศาสตร์ทั้งหมดในฮาร์ดดิสก์ 1 ตัว - คุณอาจได้รับประสิทธิภาพเพิ่มขึ้นหากคุณมีการแพร่กระจายไปทั่วอุปกรณ์ SCSI / SSD


2

ฉันเคยมีแอปพลิเคชั่นเว็บ ArcGIS Server WebADF ประมาณห้ารายการที่แต่ละแห่งครอบคลุมพื้นที่ทางภูมิศาสตร์ที่แตกต่างกัน แต่พวกเขาทั้งหมดมีชุดข้อมูลที่ใช้ร่วมกันทั้งหมด นักฆ่าคือแอพพลิเคชั่นล้วนแล้วแต่มีชีวิตชีวา (ไม่มีแคชใด ๆ ) และเรามีบ่อน้ำมันและก๊าซในตัวพวกเขาที่สามารถนับได้เป็นหลักแสน (นับล้านจริงๆสำหรับทั้งสหรัฐอเมริกา) การทำแบบสอบถามในชุดข้อมูลทั้งหมดนั้นเจ็บปวด - จริง ๆ แล้วพวกเขามักจะหมดเวลา การตัดข้อมูลออกสำหรับแต่ละพื้นที่และวางไว้ในที่เก็บข้อมูลแยกต่างหากทำให้ประสิทธิภาพของเราดีขึ้นและลูกค้าของเรามีความสุข เช่นเดียวกับคุณเรายังเก็บฐานข้อมูลไฟล์ทางภูมิศาสตร์ที่เก็บไว้ใน HDD บนเซิร์ฟเวอร์ซึ่งก็ช่วยได้มากเช่นกัน เรามีกระบวนการอัตโนมัติที่ตัดข้อมูลออกเป็นไฟล์ฐานข้อมูลแต่ละไฟล์ในแต่ละคืน

ไม่ใช่คำตอบที่แน่ชัด แต่มีกรณีศึกษามากกว่าในสิ่งที่คล้ายกับสิ่งที่คุณคิดเกี่ยวกับการทำ หากเราไม่มีคุณสมบัติแบบไดนามิกมากมายที่จะจัดการกับเราอาจไม่ต้องทำเช่นนั้น บางครั้งการทำสิ่งต่าง ๆ ออกไปเล็กน้อยเป็นสิ่งจำเป็น


ขอบคุณสำหรับคำตอบ. มันไม่ค่อยตรงกับสถานการณ์ของฉัน แต่มันมีความเข้าใจที่ดีสำหรับคนอื่น ๆ ที่มีสถานการณ์คล้ายกัน ฉันไม่ได้พูดถึงว่าข้อมูลทั้งหมดจะอยู่ในเครื่องของลูกค้าพร้อมกับซอฟต์แวร์ ไม่มีการให้บริการข้อมูลผ่านอินเทอร์เน็ต (นอกเหนือจากนั้นเมื่อพวกเขาต้องการติดตั้งการอัปเดตสำหรับซอฟต์แวร์) นอกจากนี้ปริมาณข้อมูลที่ฉันทำงานด้วยก็เป็นเพียงเศษเสี้ยวของจำนวนเงินที่คุณทำงานด้วย
แทนเนอร์

4
ฉันไม่คิดว่าคุณกำลังให้บริการผ่านเว็บ แต่ถึงแม้ว่าการใช้ FGDBs บนเครือข่ายร่วมกันอาจทำให้ข้อมูลช้าลงเมื่อมีข้อมูลไหลผ่านท่อ หากคุณไม่ได้ทำงานกับชุดข้อมูลขนาดใหญ่ฉันไม่คิดว่า FGDB ที่แยกจากกันจะทำให้คุณดีมาก - มันอาจจะเจ็บปวดมากกว่าที่ควรจะเป็น
ชาดคูเปอร์
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.