ArcGIS Engine'in tek bir dosya yerine birden fazla dosya coğrafi veri tabanı kullanma performansı?


11

Bir ArcGIS Engine uygulaması için verilerimi düzenlemenin en iyi yoluna karar vermeye çalışıyorum. Özellikle harita görüntüleme ve sorgu hızı ile ilgileniyorum. Şu anda tüm verilerim temaya göre ayrı dosya coğrafi veritabanlarına ayrılmıştır. Bu yüzden Transportation.gdb, Utilities.gdb, vb. Var. Verilerin temalara dayalı olarak organize edilmesi gerekmiyor ve hepsini tek bir dosya coğrafi veritabanına koymayı düşünüyorum.

Kendi testimi yapacağım, ama soruyu topluma aktarmak istedim.

Genel olarak, tek bir dosya coğrafi veritabanı birden çok (kabaca 7) daha küçük olanı kullanmaktan daha mı hızlı? Ben de başka artıları / eksileri ile ilgileniyorum.

NOT: yazılım ve tüm veriler müşterinin yerel makinesinde olacaktır. Web'de veya bir ağ üzerinde veri sunulmaz ve veri miktarı oldukça azdır (kabaca 100.000 özellik).

Yanıtlar:


5

Başka bir yoldan gideceğim ve aslında hayır diyorum, tarif ettiğiniz bu özel kullanım durumu için GeoDatabases'i ayırmak iyi bir performans iyileştirmesi değildir .

Bir DB bağlantısıyla ilişkili bir maliyet olduğunu hatırlamanız gerekir. GeoDatabase durumunda, ilgili tüm meta veri tablolarını yüklüyor. Verilerinizi birden çok GDB'ye ayırdığınızda, bu maliyeti artırıyorsunuz çünkü artık bu tabloların birden çok sürümünü (her DB için bir tane) açmanız gerekiyor. Genellikle farklı DBS sorgulamak için multiplexing'i olabilir ayrıca i / o ile önbelleği geçersiz olur anlamına gelir.

Sahip birden veritabanları zaman Bununla birlikte, birkaç durum vardır olabilir daha iyi çalışır. Örneğin. Bir parça 350MB olan iki vs 700MB olan kişisel bir gdb (filegdb değil) düşünün. İrade (.mdb dosyaları ile etkileştiği için hangi) MS Jet sürücüsü bellek haritası makinesi yeterli bellek eğer öyleyse, tam herhangi diskin g / ç vs bellekte veritabanları ile etkileşim olacak - 500MB daha küçük dosyalar. Çok daha hızlı. 700MB dosya bellek eşlenmez.

Bu durumu denklemden çıkarmak, ayrı dbs yapmak mantıklı değildir. ArcMap, katmanlar arasında döngü yaptığı için, her katmanı sırayla sorgulayacaktır, böylece devam eden herhangi bir paralellik yoktur.

Bunun yerine FileGDB Dizinlerinizi yeniden oluşturmak daha iyidir.

Ve evet, bir SSD kesinlikle yardımcı olacaktır.


1
Ah. <500mb .mdb'lerin bellek eşlemesi ilginçtir. Kişisel gdb'leri, arcgis'te gerekli olan acı verici bir kopyala ve sil işlemi yerine ms-access'teki alanları yeniden sıralamak ve yeniden adlandırmaktan başka bir şey için iyi değil olarak yazmıştım. Belki şimdi onları zaman zaman kullanmak için başka bir nedenim var. 500mb devrilme noktası dosyası disk boyutunda mı yoksa başka bir şeyde mi? (örneğin, bir jpeg diskte 30 kb olabilir, ancak açıldığında çoklu megabayt ram tüketir).
matt wilkie

1
Hatırladığım kadarıyla, bu ESRI tarafından tetiklenen değil, Jet motorunun kendisinden gelen bir davranıştı. Ayrıca, 500 MB'tan biraz daha küçüktü. Dosya boyutu ve hafıza hakkında iyi bir soru. Dosya boyutu olduğunu düşünüyorum - ama tam olarak hatırlamıyorum, size karşı dürüst olmak gerekirse
Ragi Yaser Burhum

4

Aslında normalde tam tersidir; daha küçük veritabanları daha hızlı sorgu. Bu, her şeyi ayrı dosya dolaplarına ayırmak yerine bodrumda büyük bir yığın halinde atıyorsanız, daha hızlı bir şeyler bulabileceğinizi sormak gibidir. Bireysel veritabanlarınız olduğunda, bu, en baştan doğrudan göz ardı edebileceğiniz ve bakmanıza gerek olmayan 6 dosya dolabına sahip olmak gibidir. Tabii ki bu, hangi veritabanının sorgulanması gerektiğini bildiğinizi varsayar - yine de hepsine bakmanız gerekiyorsa, büyük bir veritabanı gerçekten daha hızlı olabilir (çünkü veri kümesini bir bütün olarak optimize edebilir).


3

Bir keresinde, GIS için çok iyi olmayan cihazlarda ArcReader ile benzer bir kurulum yaptım ve GIS sunucusuna istikrarlı bir ağ bağlantısı sürdürdüğü için şanslıydım ( kararsız kablolu bağlantılar konuşuyoruz ... kablosuz değil) ).

Genellikle "tema" ve ayrıca güncelleme sıklığı ile kırılmış çok sayıda veritabanı vardı . Onları günlük, aylık, yıllık veya üç yılda bir (Hava / Planimetrik güncelleme programı) çıkardım. Robocopy ile güncellendiğinden, gereksiz olan hiçbir veriyi bu cihazlara taşımak istemedim.

Güçlü coğrafi veritabanı çoğaltma özelliğine sahip olmadığınız bir ortamdaysanız veya dağıtım için coğrafi coğrafi veritabanını kolayca alıyorsanız, veri depolama alanınızı bu şekilde dağıtarak yönetmek daha kolay olabilir.

Performans sorunuzu cevaplamak için: Veri depolarımı ayrı dosya coğrafi veritabanlarına ayırarak hiçbir hız düşüşü fark etmedim . Bu, hiç olmadığı anlamına gelmez, ancak varsa, insan tarafından algılanabilir değildi. Bu yapılandırmaların tüm sabit disk dosyalarında 1 sabit diskte bulunduğunu belirtmek gerekir; SCSI / SSD aygıtlarına yayılmış olmaları durumunda bir performans kazancı elde edebilirsiniz.


2

Bir keresinde, her biri farklı bir coğrafi alanı kapsayan yaklaşık beş ArcGIS Server WebADF web uygulamam vardı, ancak hepsi ortak veri kümelerini paylaştı. Katil, uygulamaların tümünün dinamik olduğu (hiçbir şey önbelleğe alınmamıştı) ve içinde yüz binlerce (aslında tüm ABD için milyonlarca) sayılabilecek petrol ve gaz kuyuları vardı. Tüm veri kümesinde sorgular yapmak acı vericiydi - aslında sadece zaman aşımı olurdu. Her alan için verilerin kesilmesi ve ayrı bir veri deposuna konulması performansımızı ve müşterilerimizi mutlu etti. Sizin gibi, sunucudaki HDD'de depolanan coğrafi veri tabanlarını da sakladık, bu da ALOT'a yardımcı oldu. Her gece verileri her dosya coğrafi veritabanına kırpan otomatik bir işlem gerçekleştirdik.

Tam olarak bir cevap değil, daha çok yapmayı düşündüğünüze benzer bir vaka çalışması. Eğer uğraşacak çok fazla dinamik özelliğe sahip olmasaydık, bunu yapmak zorunda kalmayabilirdik. Bazen sıradan bir şeyler yapmak gerekebilir.


Cevap için teşekkürler. Durumumla tam olarak eşleşmiyor, ancak benzer durumdaki diğer insanlar için iyi bir fikir. Yazılımla birlikte tüm verilerin müşterinin yerel makinesinde olacağını söyleyemedim. İnternet üzerinden veri sunulmuyor (yazılım için güncelleme yüklemeleri gerektiğinde). Ayrıca, birlikte çalıştığım veri miktarı, üzerinde çalıştığınız miktarın küçük bir kısmıdır.
Tanner

4
Web üzerinden hizmet verdiğinizi düşünmüyordum, ancak FGDB'lerin bir ağ paylaşımına sahip olması bile veri boruları üzerinden geçerken işleri yavaşlatabilir. Büyük veri kümeleriyle çalışmıyorsanız, ayrı FGDB'lerin sizi çok iyi yapacağını düşünmüyorum - değerinden daha fazla acı olabilir.
Chad Cooper
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.