使用多个文件地理数据库而不是使用多个文件地理数据库的ArcGIS Engine的性能?


11

我正在尝试确定组织ArcGIS Engine应用程序数据的最佳方法。我对地图显示和查询速度特别感兴趣。目前,我已根据主题将所有数据分离到单独的文件地理数据库中。因此,我有Transportation.gdb,Utilities.gdb等。数据不一定需要根据主题进行组织,我正在考虑将其全部放入一个文件地理数据库中。

我将进行自己的测试,但我想将问题抛给社区。

通常,使用单个文件地理数据库是否比使用多个(大约7个)较小的文件更快?我也对其他优点/缺点感兴趣。

注意:该软件和所有数据将在客户的本地计算机上。没有数据在网络上或通过网络提供,并且数据量非常小(大约100,000个功能)。

Answers:


5

我要走另一条路,实际上是说不,对于您描述的特定用例,将GeoDatabase分开并不是一个很好的性能改进

您必须记住,与数据库的连接会产生一定的成本。对于GeoDatabase,它将加载所有相关的元数据表。因此,每当您将数据分为多个GDB时,您都在增加成本,因为现在您必须打开这些表的多个版本(每个数据库一个)。多路复用以查询不同的DB通常也可能意味着I / O的缓存无效。

但是,在某些情况下,拥有多个数据库可能会更好。例如。考虑一下个人gdb(不是filegdb)为700MB的情况,而两个为350MB。MS Jet驱动程序(用于与.mdb文件进行交互)将存储小于500MB的映射文件-因此,如果计算机具有足够的内存,则将与内存(而不是任何磁盘I / O)中的DB进行完全交互。快得多。700MB文件将不会进行内存映射。

把这种情况排除在等式之外,那么没有必要做单独的数据库。ArcMap遍历图层时,将按顺序查询每个图层,因此不会发生任何并行性。

最好改建FileGDB索引。

是的,固态硬盘肯定会有所帮助。


1
哦。<500mb .mdb的内存映射很有趣。除了重新排序和重命名ms-access中的字段,而不是在arcgis中进行繁琐的“添加-复制-删除”过程外,我已经取消了个人gdb的其他功能。也许现在我还有另一个理由不时使用它们。500mb引爆点文件在磁盘大小上还是其他?(例如,jpeg在磁盘上可以是30kb,但在打开时会消耗数兆字节的ram)。
马特·威尔基

1
据我所知,这是Jet引擎本身的行为,而不是ESRI触发的。而且,它略小于500MB。关于文件大小与内存的好问题。我认为这是文件大小-但是与您说实话,我不完全记得
Ragi Yaser Burhum 2012年

4

实际上,通常情况恰恰相反。较小的数据库查询速度更快。这就像问您是否将所有东西都扔进地下室的大堆而不是将其分类到单独的文件柜中,是否可以更快地找到东西。当您拥有单独的数据库时,就像有6个文件柜,您可以一开始就直接忽略它们,而无需浏览。当然,这假设您知道哪个数据库需要查询-如果无论如何都需要查询所有数据库,那么一个大数据库可能确实会更快(因为它可以优化整个数据集)。


3

一次,我在不是非常适合GIS的设备上使用ArcReader进行了类似的设置,并且很幸运能够与GIS服务器保持稳定的网络连接(我们说的是不稳定的有线连接...不是无线的))。

我有无数个通常被“主题”以及更新频率破坏的数据库。我按每天,每月,每年或每三年一次(这是“空中/平面”更新时间表)进行分类。由于它们是通过robocopy更新的,因此我不想将不需要的任何数据移到这些设备上。

如果您所处的环境中没有强大的地理数据库复制功能,或者您只是在接收文件地理数据库以进行分发,则通过这种方式拆分数据存储可能更易于管理。

要回答您的性能问题:我从未注意到通过将数据存储分解为单独的文件地理数据库而导致速度降低。这并不意味着没有任何东西,但是如果有的话,那是人类无法感知的。值得注意的是,这些配置将所有文件地理数据库都放在1个硬盘上-如果将它们分散在SCSI / SSD设备上,则可能会提高性能。


2

我曾经有大约五个ArcGIS Server WebADF Web应用程序,每个Web应用程序都覆盖不同的地理区域,但是它们都共享公共数据集。杀手was是应用程序都是动态的(什么都没有缓存),并且其中有油气井,数量可能达到数十万(实际上整个美国有数百万)。在整个数据集上进行查询很痛苦-实际上,它们通常只是超时。将每个区域的数据裁剪出来并放在单独的数据存储中,可以提高性能,让客户满意。像您一样,我们还将文件地理数据库存储在服务器的HDD上,这也对ALOT有所帮助。我们有一个自动化的过程,每天晚上将数据剪切到每个文件地理数据库中。

这不完全是一个答案,而是更多的案例研究,与您正在考虑的事情类似。如果我们没有那么多动态功能要处理,那么我们可能就不必这样做了。有时做一些与众不同的事情是必要的。


感谢你的回答。这与我的情况不太匹配,但对于其他情况类似的人来说却是很好的见解。我没有提及所有数据和软件都将在客户的本地计算机上。Internet上没有提供任何数据(其他情况下需要安装软件更新时除外)。另外,我正在使用的数据量只是您正在使用的数据量的一小部分。
Tanner

4
我不认为您是通过Web进行服务的,但是即使将FGDB放在网络共享上,也可能因管道中的数据流而减慢速度。如果您不使用庞大的数据集,那么我认为单独的FGDB不会对您有多大好处-可能比要付出的代价更痛苦。
乍得·库珀2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.