Leistung von ArcGIS Engine unter Verwendung mehrerer Datei-Geodatabases im Gegensatz zu einer?

11

Ich versuche zu entscheiden, wie ich meine Daten für eine ArcGIS Engine-Anwendung am besten organisieren kann. Ich interessiere mich besonders für Kartenanzeige und Abfragegeschwindigkeit. Derzeit sind alle meine Daten je nach Thema in separate Datei-Geodatabases unterteilt. Ich habe also Transportation.gdb, Utilities.gdb usw. Die Daten müssen nicht unbedingt nach Themen organisiert werden, und ich erwäge, alles in einer Geodatabase für Dateien zusammenzufassen.

Ich werde meine eigenen Tests durchführen, aber ich wollte die Frage an die Community richten.

Ist die Verwendung einer einzelnen Datei-Geodatabase im Allgemeinen schneller als die Verwendung mehrerer (ungefähr 7) kleinerer? Ich interessiere mich auch für andere Vor- und Nachteile.

HINWEIS: Die Software und alle Daten befinden sich auf dem lokalen Computer des Kunden. Keine Daten im Web oder über ein Netzwerk bereitgestellt, und die Datenmenge ist relativ gering (ungefähr 100.000 Funktionen).

Gerber
quelle

Antworten:

5

Ich werde den anderen Weg gehen und tatsächlich sagen, dass es keine gute Leistungsverbesserung ist, die GeoDatabases für diesen speziellen Anwendungsfall, den Sie beschrieben haben, zu trennen .

Sie müssen sich daran erinnern, dass mit einer Verbindung zu einer Datenbank Kosten verbunden sind. Bei der GeoDatabase werden alle zugehörigen Metadatentabellen geladen. Wenn Sie also Ihre Daten in mehrere GDBs aufteilen, erhöhen Sie nur diese Kosten, da Sie jetzt mehrere Versionen dieser Tabellen öffnen müssen (eine für jede Datenbank). Multiplexing zum Abfragen der verschiedenen DBs kann normalerweise auch E / A mit Cache bedeuten, der ungültig wird.

Es gibt jedoch einige Fälle, in denen mehrere DBs möglicherweise besser funktionieren. Beispielsweise. Betrachten Sie den Fall einer persönlichen GDB (nicht Filegdb) mit 700 MB gegenüber zwei mit 350 MB pro Stück. Der MS Jet-Treiber (der für die Interaktion mit MDB-Dateien verwendet wird) ordnet Speicherzuordnungsdateien mit weniger als 500 MB zu. Wenn der Computer also über genügend Speicher verfügt, interagieren Sie mit DBs, die sich vollständig im Speicher befinden, mit allen Festplatten-E / A. Viel viel schneller. Die 700-MB-Datei wird nicht dem Speicher zugeordnet.

Wenn Sie diesen Fall aus der Gleichung herausnehmen, ist es nicht sinnvoll, separate DBS zu erstellen. ArcMap fragt beim Durchlaufen der Ebenen jede Ebene nacheinander ab, sodass keine Parallelität besteht.

Sie sollten stattdessen Ihre FileGDB-Indizes neu erstellen.

Und ja, eine SSD würde definitiv helfen.

Ragi Yaser Burhum
quelle
1
Oh. Interessant ist die Speicherzuordnung von <500mb .mdb. Ich hatte persönliche GDBs als nicht gut für etwas anderes abgeschrieben, als Felder in ms-access neu zu ordnen und zu benennen, anstatt den in arcgis erforderlichen schmerzhaften Prozess des Hinzufügens, Kopierens und Löschens. Vielleicht habe ich jetzt einen anderen Grund, sie von Zeit zu Zeit zu benutzen. Befindet sich die 500-MB-Kipppunktdatei auf der Festplattengröße oder etwas anderes? (zB kann ein JPEG 30 KB auf der Festplatte sein, verbraucht jedoch im geöffneten Zustand mehrere Megabyte RAM).
Matt Wilkie
1
Soweit ich mich erinnere, war dies ein Verhalten des Jet-Triebwerks selbst und kein ESRI-Auslöser. Es war auch etwas kleiner als 500 MB. Gute Frage zur Dateigröße im Vergleich zum Speicher. Ich denke, es war Dateigröße - aber ich erinnere mich nicht genau, um ehrlich zu sein
Ragi Yaser Burhum
4

Eigentlich ist es normalerweise umgekehrt; kleinere Datenbanken fragen schneller ab. Es ist, als würde man fragen, ob man etwas schneller finden kann, wenn man alles auf einen großen Haufen im Keller wirft, anstatt es in einzelne Aktenschränke zu sortieren. Wenn Sie über einzelne Datenbanken verfügen, haben Sie 6 Aktenschränke, die Sie von Anfang an ignorieren können und die Sie nicht durchsehen müssen. Dies setzt natürlich voraus, dass Sie wissen, welche Datenbank abgefragt werden muss. Wenn Sie ohnehin alle Datenbanken durchsehen müssen, ist eine große Datenbank möglicherweise schneller (da sie den gesamten Datensatz optimieren kann).

Martin Gjaldbaek
quelle
3

Zu einer Zeit hatte ich ein ähnliches Setup mit ArcReader auf Geräten, die nicht sehr gut für GIS spezifiziert waren, und hatte das Glück, eine stabile Netzwerkverbindung zum GIS-Server aufrechtzuerhalten ( wir sprechen von instabilen Kabelverbindungen ... nicht von WLAN ).

Ich hatte zahlreiche Datenbanken, die im Allgemeinen nach "Thema" und auch nach Häufigkeit der Aktualisierung aufgeschlüsselt waren . Ich habe sie täglich, monatlich, jährlich oder alle drei Jahre aufgeschlüsselt (dies war der Zeitplan für die Aktualisierung der Luft- / Planimetrie). Da sie per Robocopy aktualisiert wurden, wollte ich keine unnötigen Daten auf diese Geräte verschieben.

Wenn Sie sich in einer Umgebung befinden, in der Sie nicht über eine robuste Geodatabase-Replikationsfunktion verfügen oder einfach die Datei-Geodatabase zur Verteilung erhalten, ist die Verwaltung möglicherweise einfacher, indem Sie Ihren Datenspeicher auf diese Weise aufteilen.

Um Ihre Leistungsfrage zu beantworten: Ich habe nie bemerkt, dass die Geschwindigkeit abnimmt, wenn ich meine Datenspeicher in separate Geodatabases für Dateien aufteile. Das heißt nicht, dass es keine gab, aber wenn ja, war es nicht von Menschen wahrnehmbar. Es ist erwähnenswert, dass diese Konfigurationen alle Datei-Geodatabases auf einer Festplatte hatten - Sie könnten einen Leistungsgewinn erzielen, wenn Sie sie auf SCSI / SSD-Geräte verteilen würden.

Jay Cummins
quelle
2

Ich hatte einmal ungefähr fünf ArcGIS Server WebADF-Webanwendungen, die jeweils ein anderes geografisches Gebiet abdeckten, aber alle gemeinsame Datasets hatten. Der Mörder war, dass die Apps alle dynamisch waren (nichts wurde zwischengespeichert) und wir Öl- und Gasquellen hatten, die Hunderttausende (tatsächlich Millionen für die gesamten USA) zählen konnten. Das Durchführen von Abfragen für den gesamten Datensatz war schmerzhaft - tatsächlich würden sie normalerweise nur eine Zeitüberschreitung verursachen. Das Ausschneiden der Daten für jeden Bereich und das Speichern in einem separaten Datenspeicher haben unsere Leistung und unsere Kunden zufrieden gestellt. Wie Sie haben auch wir die Datei-Geodatabases auf der Festplatte auf dem Server gespeichert, was auch VIEL geholfen hat. Wir hatten einen automatisierten Prozess, der die Daten jede Nacht in jede Datei-Geodatabase ausschneidet.

Nicht gerade eine Antwort, sondern eher eine Fallstudie in einer Art ähnlichem, wie Sie es sich vorgestellt haben. Wenn wir nicht so viele dynamische Funktionen hätten, hätten wir das möglicherweise nicht tun müssen. Manchmal ist es notwendig, etwas Außergewöhnliches zu tun.

Chad Cooper
quelle
Danke für die Antwort. Es passt nicht ganz zu meiner Situation, aber es ist ein guter Einblick für andere Menschen mit einer ähnlichen Situation. Ich habe nicht erwähnt, dass sich alle Daten zusammen mit der Software auf dem lokalen Computer des Kunden befinden. Es werden keine Daten über das Internet bereitgestellt (außer wenn Updates für die Software installiert werden müssen). Außerdem ist die Datenmenge, mit der ich arbeite, ein winziger Bruchteil der Datenmenge, mit der Sie gearbeitet haben.
Tanner
4
Ich habe nicht gedacht, dass Sie über das Internet arbeiten, aber selbst wenn die FGDBs auf einer Netzwerkfreigabe verfügbar sind, kann dies die Daten verlangsamen, die über die Pipes übertragen werden. Wenn Sie nicht mit großen Datenmengen arbeiten, werden Ihnen separate REA nicht viel nützen - es könnte mehr schmerzhaft sein, als es wert wäre.
Chad Cooper