Kinerja ArcGIS Engine menggunakan banyak file geodatabases dan bukan satu?

11

Saya mencoba memutuskan cara terbaik untuk mengatur data saya untuk aplikasi ArcGIS Engine. Saya sangat tertarik dengan tampilan peta dan kecepatan permintaan. Saat ini saya memiliki semua data saya dipisahkan menjadi file geodatabases terpisah berdasarkan tema. Jadi saya punya Transport.gdb, Utilities.gdb, dll. Data tidak perlu diatur berdasarkan tema, dan saya mempertimbangkan untuk meletakkan semuanya dalam satu file geodatabase.

Saya akan melakukan pengujian sendiri, tetapi saya ingin mengajukan pertanyaan kepada masyarakat.

Secara umum, apakah menggunakan satu file geodatabase lebih cepat daripada menggunakan banyak (sekitar 7) yang lebih kecil? Saya tertarik pada pro / kontra lainnya juga.

CATATAN: perangkat lunak dan semua data akan berada di mesin lokal pelanggan. Tidak ada data yang disajikan di web atau melalui jaringan, dan jumlah data cukup kecil (sekitar 100.000 fitur).

Penyamak
sumber

Jawaban:

5

Saya akan pergi ke arah lain dan benar-benar mengatakan bahwa tidak, itu bukan peningkatan kinerja yang baik untuk memisahkan GeoDatabases untuk kasus penggunaan khusus yang Anda jelaskan ini .

Anda harus ingat bahwa ada biaya yang terkait dengan koneksi ke DB. Dalam kasus GeoDatabase, ini memuat semua tabel metadata terkait. Jadi, setiap kali Anda memisahkan data Anda menjadi beberapa GDB, Anda hanya menambah biaya itu, karena sekarang Anda harus membuka beberapa versi tabel ini (satu untuk setiap DB). Multiplexing untuk query DB yang berbeda biasanya mungkin juga berarti i / o dengan cache yang akan valid.

Namun demikian, ada beberapa kasus ketika memiliki banyak DB mungkin bekerja lebih baik. Sebagai contoh. Pertimbangkan kasus gdb pribadi (bukan filegdb) yaitu 700MB vs dua yang berukuran 350MB. Driver MS Jet (apa yang digunakan untuk berinteraksi dengan file .mdb) akan memetakan file memori lebih kecil dari 500MB - jadi jika mesin memiliki cukup memori, Anda akan berinteraksi dengan DB sepenuhnya dalam memori vs disk i / o. Jauh lebih cepat. File 700MB tidak akan dipetakan memori.

Mengambil kasus ini dari persamaan, maka tidak masuk akal untuk melakukan dbs terpisah. ArcMap, karena perulangan melalui lapisan, akan meminta setiap lapisan secara berurutan, sehingga Anda tidak memiliki paralelisme yang terjadi.

Anda lebih baik membangun kembali Indeks FileGDB Anda sebagai gantinya.

Dan ya, SSD pasti akan membantu.

Ragi Yaser Burhum
sumber
1
Oh Pemetaan memori <500mb .mdb's menarik. Saya telah menulis gdb pribadi sebagai tidak baik untuk apa pun selain memesan ulang dan menamai ulang bidang di ms-akses daripada proses add-a-copy-and-delete yang menyakitkan diperlukan di arcgis. Mungkin sekarang saya punya alasan lain untuk menggunakannya dari waktu ke waktu. Apakah file tipping point 500MB pada ukuran disk atau yang lainnya? (misal, jpeg bisa 30kb pada disk namun mengonsumsi multi megabita ram saat dibuka).
matt wilkie
1
Sejauh yang saya ingat, ini adalah perilaku dari mesin Jet itu sendiri, dan tidak dipicu ESRI. Juga, itu sedikit lebih kecil dari 500MB. Pertanyaan bagus tentang ukuran file vs memori. Saya pikir itu ukuran file - tapi saya tidak ingat persisnya, jujur ​​dengan Anda
Ragi Yaser Burhum
4

Sebenarnya itu sebaliknya; permintaan basis data yang lebih kecil lebih cepat. Ini seperti menanyakan apakah Anda dapat menemukan barang dengan lebih cepat jika Anda membuang semuanya di tumpukan besar di ruang bawah tanah daripada menyortirnya ke dalam lemari arsip individu. Ketika Anda memiliki database individual, itu seperti memiliki 6 lemari arsip yang dapat Anda abaikan sejak awal, dan tidak perlu melihat-lihat. Tentu saja ini mengasumsikan bahwa Anda tahu database mana yang perlu di-query - jika Anda perlu melihat semuanya, maka yang besar mungkin lebih cepat (karena dapat mengoptimalkan dataset secara keseluruhan).

Martin Gjaldbaek
sumber
3

Pada suatu waktu, saya memiliki pengaturan yang serupa dengan ArcReader pada perangkat yang tidak terlalu baik untuk GIS dan beruntung dapat mempertahankan koneksi jaringan yang stabil ke server GIS ( kita berbicara koneksi kabel yang tidak stabil ... bukan nirkabel ).

Saya memiliki banyak basis data yang pada umumnya rusak karena "tema", dan juga oleh frekuensi pembaruan. Saya membaginya dengan harian, bulanan, tahunan, atau tiga tahunan (yang merupakan jadwal pembaruan Aerial / Planimetric). Karena mereka diperbarui melalui robocopy, saya tidak ingin memindahkan data apa pun yang tidak perlu ke perangkat ini.

Jika Anda berada di lingkungan di mana Anda tidak memiliki kemampuan replikasi geodatabase yang kuat atau Anda hanya menerima file geodatabase untuk distribusi, mungkin lebih mudah untuk mengelola dengan memecah penyimpanan data Anda dengan cara ini.

Untuk menjawab pertanyaan kinerja Anda: Saya tidak pernah melihat ada penurunan kecepatan dengan memecah data saya menyimpan ke file geodatabases terpisah. Itu tidak berarti tidak ada, tetapi jika ada, itu tidak dapat dilihat manusia. Perlu dicatat bahwa konfigurasi ini memiliki semua file geodatabas pada 1 hard disk - Anda mungkin mendapatkan peningkatan kinerja jika Anda membuatnya tersebar di perangkat SCSI / SSD.

Jay Cummins
sumber
2

Saya pernah memiliki sekitar lima aplikasi web ArcGIS Server WebADF yang masing-masing mencakup area geografis yang berbeda, tetapi semuanya berbagi dataset umum. Pembunuhnya adalah bahwa aplikasinya semuanya dinamis (tidak ada yang di-cache) dan kami memiliki sumur minyak dan gas di dalamnya yang bisa berjumlah ratusan ribu (jutaan sebenarnya untuk seluruh AS). Melakukan query pada seluruh dataset itu menyakitkan - sebenarnya mereka biasanya hanya timeout. Memotong data untuk setiap area dan memasukkannya ke dalam datastore terpisah membuat kinerja kami tetap tinggi dan pelanggan kami senang. Seperti Anda, kami juga menyimpan file geodatabases yang tersimpan di HDD di server, yang juga membantu ALOT. Kami memiliki proses otomatis yang memotong data ke setiap file geodatabase setiap malam.

Bukan jawaban yang tepat, tetapi lebih dari studi kasus dalam sesuatu yang mirip dengan apa yang Anda pikirkan tentang lakukan. Jika kita tidak memiliki begitu banyak fitur dinamis untuk ditangani, kita mungkin tidak harus melakukannya. Terkadang melakukan hal-hal yang sedikit tidak biasa diperlukan.

Chad Cooper
sumber
Terima kasih atas jawabannya. Itu tidak cocok dengan situasi saya, tetapi itu wawasan yang bagus untuk orang lain dengan situasi yang sama. Saya gagal menyebutkan bahwa semua data akan berada di mesin lokal pelanggan, bersama dengan perangkat lunaknya. Tidak ada data yang dilayani melalui internet (selain itu ketika mereka perlu menginstal pembaruan untuk perangkat lunak). Juga, jumlah data yang saya kerjakan adalah sebagian kecil dari jumlah yang Anda kerjakan.
Tanner
4
Saya tidak berpikir Anda melayani melalui web, tetapi bahkan memiliki FGDB di jaringan berbagi dapat memperlambat segalanya dengan data masuk ke dalam pipa. Jika Anda tidak bekerja dengan kumpulan data besar, saya tidak berpikir FGDB terpisah akan banyak membantu Anda - mungkin lebih menyebalkan daripada nilainya.
Chad Cooper