span8
span4
Let-the-Database-Do-the-Work.fmw
有很多方法可以“让你的数据库工作”,我们将研究如何使用FME执行更高效、更快的Oracle读取。通过利用数据库功能,如视图,索引,SELECT语句,WHERE子句;我们可以将读取的数据量(特性和属性)限制为只读取翻译中需要的数据量。
虽然这个练习使用了甲骨文数据库,讨论的概念和方法可以应用于其他数据库,比如PostgreSQL/PostGIS,和SQL Server。
只读取工作流所需的数据(属性和特性)可以提高整体性能。亚搏在线通过限制视图从数据库中读取的特性,WHERE子句,或SELECT语句,您可以简化工作区中的数据流,从而提高其速度。
下表比较了在练习工作区中从Oracle数据库访问较小的功能子集(19,412个功能)时的转换时间:
* -没有几何体
使用Oracle空间阅读器读取所有数据,使用一个测试器来过滤COUNTRYCODE = CA大约需要300秒。
用更少的功能,where子句,select语句,视图方法非常相似。使用更大的功能子集,select语句被证明是更快的读取速度,因为它还限制了正在读取的属性的数量。
阅读的方法 | 读取313,270条记录的时间(秒) |
Where子句 | 25.0 |
Select语句 | 18.0 |
视图 | 24.9 |
注意:上述时间是在只启用所需读取器的工作区中记录的,在完全检查关闭的情况下运行,所有连接的检查人员都被禁用。
The attached Let the Database Do the Work.fmw demonstrates a number of ways to efficiently read in features from a database.我们将使用Oracle数据库中的Countries表,它有超过200万个特性。练习将强调有选择地阅读我们需要的特性的重要性:让数据库完成工作。
确保每次只启用一个书签,这将有助于验证每种读取方法之间的性能差异。
例1 -带有Where子句的表
注意,通过在导航器中使用Where子句,FME将把读取的特性限制为满足条件的特性。
例2 -带有Select语句和Where子句的表
您可以使用SELECT语句而不是WHERE语句来减少读取的数据量,减少读取的特性数量,只读取感兴趣的属性。然而,如果使用SELECT语句,您正在替换FME的默认选择,如果你有一个空间列你需要显式地将它包含在SELECT语句中,例如:
选择GEONAMEID,的名字,ASCIINAME,纬度,经度,COUNTRYCODE,时区,GEOM from FME.COUNTRIES where COUNTRYCODE='CA' and FEATURECLASS='P'
减少读取属性数量的另一种方法是使用“公开属性”选项,与a一起:
例3 -读取视图
此书签中的阅读器已配置为从Oracle数据库读取视图。这个视图是由nations基表生成的,其中where子句设置为COUNTRYCODE = CA和FEATURECLASS = P。
您还可以将视图与在其中对读取的数据提供更大灵活性的视图组合在一起。
例4 -读取数据并使用FME过滤或细化
注意,当使用where子句(COUNTRYCODE = ' CA'),然后使用AttributeFilter或Tester进一步细化数据,使其记录的FEATURECLASS值为' P'时,会对性能产生影响。在两个变压器之间,AttributeFilter具有更好的性能。
示例5 - SQLCreator和SQLExecutor
这两个SQLCreator和SQLExecutor可以用来查询数据库。在这个书签,我们根据国家代码和特性类选择国家的所有属性。尽管这两种变压器产生的结果相同,您可以使用SQLCreator简化您的工作空间,以消除对创建者/启动程序的需求。
当已读取的其他数据用于初始化数据库查询时,SQLExecutor非常有用
例6 -带索引和不带索引的阅读
使用sqlcreator在COUNTRYCODE和FEATURECLASS上创建复合索引。在特征类型属性中,where子句已被设置为使用为更有效读取而创建的索引。这比示例1中使用的where子句更快地读取特性。
创建索引IDX_COUNTRIES ON COUNTRIES (COUNTRYCODE,FEATURECLASS);
例7 -使用FeatureReader
使用FeatureReader执行空间查询。创建属性或空间索引会对读取的数据的性能产生很大影响。FME的数据库阅读器大多利用空间索引进行MBR相交。你可以使用初始化功能,本例中的Shapefile,执行空间查询以限制读取时传入的数据。
例8 -使用搜索信封
在导航器,您可以定义一个搜索信封来帮助限制正在读取的特性的数量。指定四个坐标和坐标系。还有一个选项,以剪辑搜索信封。这比读取所有数据然后通过工作区中的坐标进行剪切要快。
©2019安全亚搏在线软件公司法律