在使用ArcGIS 10.1 for Server发布服务的时候,如果没有将数据所在的工作空间(个人数据库或者SDE数据库)注册到ArcGIS Server中,那么发布地图文档所使用的数据会被copy到ArcGIS Server的一个配置目录中,位置在:E:\Server10.1\arcgisserver\directories\arcgissystem\arcgisinput(根据安装路径定,我在ArcGIS Server站点的配置目录在E:\Server10.1\arcgisserver)。
在一些情况下我们并不需要copy数据,比如要发布要素服务,或者当地图文档所使用的数据很多的时候,我们不希望对数据进行copy,这样会造成磁盘空间的浪费或者耗费一定的等待时间,对于这种情况我们只需要将数据所在的工作空间注册到ArcGIS 10.1 for Server中即可,那么这在发布数据的时候就不会copy数据。
在ArcGIS Server中下面三种数据源可以被注册
· 数据库
· 企业地理数据库
· 包含文件数据库的文件夹
为什么要注册数据,这个也是我在思考的,因为以前10版本之前是没有这种方式的,Esri之所以这么做肯定有这么做的道理,我们看一下使用场景便一目了然。
如果不想在服务器上存在数据的一个copy,那么可以采用这种方式,发布者的数据库连接和服务器的数据库连接应保持相同。
如果想在企业内部保留一个供web使用数据的一个copy,则可以采用这种方式。在这种情况下,服务器的数据库中的数据是发布者的地理数据库中的数据的一个副本,且必须存在,并且这种情况只能用于企业级地理数据库,而不是数据库。让数据到服务器的企业数据库的方法之一在注册的时候选择Create geodata service for server database。
这种场景有一个好处就是可以使用geodata service同步企业级地理数据库的,从而确保发布者的数据库中所进行的任何后续变化同步到服务器的数据库中。
这种情况也适用于在局域网内或云服务器上发布要素服务。例如,如果您使用此方案发布要素服务,局域网内的编辑可可以被推送到服务器的地理数据库相反,如果对服务器的地理数据库中进行编辑,可以将编辑与发布者的地理数据库同步。
这种情况在Linux部署,云计算部署或者其他任何发布者和web使用者使用不同的数据的部署方式中。例如,从桌面发布一个基于Linux的ArcGIS Server的网站,你可以创建一个完全相同的地图文档数据的副本,并放置在linux服务器上。
对于发布一个基于云计算的服务器,这种方案也有好处,例如Amazon Web Services上的ArcGIS Server。例如,可以复制内部要发布的数据,并把它放在任何你想要的云服务器的目录中,发布的数据路径会自动修改为引用的云服务器上的目录。这种方法的缺点是,它需要有人登录到云计算机,并将数据传输到云中(可以通过FTP,远程桌面复制并粘贴等)。
如果要发布要素服务或支持事务的(WFS-T)服务。发布服务的时候,ArcGIS服务器会自动把数据copy到ArcGIS Server的托管数据库中,因为这些服务类型明确要求企业级地理数据库。 ArcGIS Server的托管数据库只能使用要素服务或WFS-T服务,以及同时发布这些服务类型的任何功能,例如,可以发布一个要素服务并含有KML功能。ArcGIS Server 只能注册一个托管的地理数据库。
这种方案有下面的特点:
•必须显式创建的ArcGIS Server托管的地理数据库,然后将其注册。
•ArcGIS Server的托管数据库必须是一个企业级地理数据库(文件和个人地理数据库是不允许的)。
•一个空的地理数据库是允许被注册的
•当发布要素服务或WFS-T服务,这些服务的数据可以来自任何地方(shape文件,文件地理数据库等等)。
•删除服务的时候数据也被删除
这种情况不适用下面的场景
•发布要素服务或WFS-T服务以外的服务类型。
•数据已经存在于企业级地理数据库。
•想在发布者机器和ArcGIS Server的托管数据库之间进行数据同步变化。