Maping设计优化技术
Mapping设计
描述
尽管PowerCenter的应用有多种不同的方式,大多数sessions/mappings能够,下面提到的方法和规则能够对你创建mapping有所帮助
对于优化的普遍建议
1.减少transformations的数量,数据流在各个transformation之间总会有一些消耗。
2.考虑增加transformation的共享内存。比如Session的共享内存(share memory)应该在12MB到40MB之间差不多了
3.一次计算,多次使用
避免再三对同一个结果进行运算或者比较,而应该只计算一次表达式,并设置一个True/False的标志。在表达式里可以使用变量(variable port)计算一值,同一个transformation里面该变量能够被多次使用
4.仅仅连通需要的
4、Only connect what is used.
删除transformation之间不必要的连线,尽量减小数据流动,特别是在Source Qualifier里面,这么做同样有利于维护。如果一个transformation需要再一次连接,最好只把那些必须的字段标示为input和output。
在lookup transformation里面,对于那些不需要用到的字段 既不要设置为input也不要为output,这样能够使transformation看起来比较干净整洁,也能够让它自动产生的SQL语句尽可能的小,从而减小整个缓存的开销,也就提高了性能。
5、观察数据类型Watch the data types.
PowerCenter引擎可以自动把转为数据类型。有时候一些转化是我们不需要的。当连线两端的数据类型不一致的时候自动转化就会发生。因此从设计mapping的时候就应该考虑这一问题,避免过多的数据转换。
6、设计的可重用性Facilitate reuse.
从一开始就应该计划好可重用的transformation.
使用变量:包括mapping variable和varialbe port.
Variable port可以发挥一些特别的用处,他们可以多次重复使用而只要一次赋值,特别是被用于计算一个复杂的表达式,或者需要多次使用一个取自于非连接方式的lookup调用的时候。
使用mapplet以封装多个可重用的transformation
使用mapplet可以最大限度的利用有限的开发人员,并且能够减小实现类似功能时候所犯的错误。
7、只操作需要运算(move)和转换的数据
Only manipulate data that needs to be moved and transformed.
减少非必要的数据不经改变的在mapping里传递,在mapping中尽量早使用Acitve transformation以达到降低数据量的目的 (例如, 把 filters, aggregators尽可能的靠近source).
使用join的时候选择合适的driving/master table. 记录数少的小表更适合做driving/master table
8、Utilize single-pass reads.
重新设计mapping,一个Source Qualifier对应多个目标表。这种办法能够让服务器只读一次源表。如果针对同一个源表设计了多个的Source Qualifier (比如, 一个用于delete一个用于 update/insert), 服务器将从源表多次读取同一批数据。
去掉或者减少针对字段的存储过程,如果你是使用了字段级别的存储过程,PowerCenter将会针对每一行记录都调用一次存储过程,这将极大的影响性能。
Lookup Transformation优化技巧
1.当数据源很大的时候,并且lookup表在50w行以下的时候,设置为cache方式的lookup,这将明显的提升性能10-20个百分点。
2.一些估算认为不要缓存任何超过50w条记录的表,这仅对标准行长不超过1024字节的情况起作用。如果行长大于1024,那么50w行这个数值将不得不依据增加的行长而减小(例如,2048字节的行大约缓存的行数到25w和30w之间)
,这仅仅是个通用的估算方法,分别以缓存和非缓存方式运行session试试看,即使很大的表缓存的方式通常还是比较快
3.当使用Lookup Table Transformaition的时候,匹配条件中首先放置等于操作符=的条件,能够提高lookup的性能
4.当lookup调用次数超过所有lookup table的10%-20%时候才使用缓存的lookup.如果lookup调用次数过少就不需要缓存那些大表,对于比较小表(少于5000行的)超过5到10次lookup调用就可以使用缓存技术了。
5.对于特别小的值域,可以用decode/IIF函数代替Lookup.
6.如果用了缓存的lookup性能不好,可以修改为非连接方式的,非缓存的lookup.
7.对于特别大的lookup table,可以用动态缓存的方式保留一个永久的缓存文件。当第一次运行的时候把整个表缓存到一个永久文件里面去,打开update else insert选项,服务器就不用去数据库把这张表又读取一次了。
8.反复检查复杂的表达式(没搞懂讲什么)
使用repository reporting和依赖性报告(Dependency Reporting)检查mapping。
减少汇总函数的调用。
对于特定类型的Aggregation可以使用Expression Transformation和一个Update Strategy代替Aggregate Transformation.
Operations and Expression Optimizing Tips
1.数字操作比字符串快
2.优化字符型的比较(比如,在比较前用trim去掉空格)
3.操作符比函数快(比如,|| vs CONCAT)
4.优化IIF表达式
5.在lookup里面避免使用date类型的条件。用string类型代替。
6.Test expression timing by replacing with constant. 用常量代替什么?
7.使用平板文件
使用服务器上的平板文件快于该服务器上的数据库
定长的文本文件快于装载分隔符的文件,因为分隔符需要花额外的解析成本。如果处理复杂的tansformation,可以考虑先把文件装载到关系型数据库,这样可以 利用filter过滤和也可以自定义的合适的SELECT语句
8.如果不方便从源数据取得已经排序的数据(例如,WebLogs),可以使用Sorter Advanced Extenal Procedure.
9.用Router分离数据流,从而避免使用多个Filter。
10.为了优化汇总的过程,可以在Aggregator之前使用Sorter或者采用hash-auto keys的分区方式。即使数据源不能排序,也可以使用Sorter Transformation,就可以打开Sorted Ports选项。
11.用Normalizer Transformation可以实现行到列
12. Update strategy会把不符合条件的行保存到一个文件中(bad file)。如果这些记录不是必要的,可以在UPDATE Strategy之前就过滤掉 ,因为保留这些记录需要花费额外的成本。这时候在设置Update strategy的参数为discard rejected rows.
13.当使用Joiner Transformation时候,确保Master的数据量相对较小
14.在装载到数据库的过程中,如果必须要用update覆盖的这种方式,可以在target之前用Lookup transformation取得主键,根据主键的update大大快于没有索引的lookup override。
Suggestions for Using Mapplets
Mapplet是一种可重用的元素,它意味着一系列transformation的组合。能够让你重用transformation的逻辑,能够包含你所需要的很多transformation。使用Mapplet Desinger创建maaplet.
1.当你打算在多个maaping中应用标准化转换逻辑的时候,你可以创建一个mapplet。举个例子,如果你有几个事实表需要多个维上的键值,你可以做一个包含一系列Lookup Tranformation得到各个维的键值的mapplet。然后你只需要在每个事实表的mapping里面使用这个mapplet,这样远胜于在每一个mapping里面设计同样的lookup逻辑
2.一旦创建了一个mapplet,你可以为了完成需要的转换逻辑,添加,连接,设置里面的transformation。mapplet保存并应用到mapping里面可以起到它所含所有transformation逻辑的作用。当mapping里面包含一个mapplet,会创建一个实例。所有的mapplet实例都来源于原mapplet.因此任何原mapplet改变都会被这些子实例所继承。当服务器执行session时,它会还原整个mapplet,就好像执行其他sssion一样,依照mapplet的设计数据从一个transformation传递给下一个transformation.
3.一个mapplet可以是主动的(active)的也可以是被动的(passive),依赖于mapplet里面的transformation。主动型mapplet至少包含一个主动型的transformation。被动型的mapplet只能全部是被动型的transformation。这个属性可以在调试错误的mapping使用它节省时间
4.以下的transformation还不支持,不能使用在mapplet里面,包括,COBOL source definitions, normalizer, non-reusable sequence generator, pre- or post-session stored procedures, target definitions, and PowerMart 3.5-style lookup functions.
5.当你只打算使用mapplet的一两个transformation的时候, 不要重用mapplet。这时所有的其他计算过的端口和transformation都被浪费了。
6.对于mapplet来说数据来源是来自于以下两者之一
数据源在mapplet里面:用一个或者多个连接到Source Qualifier上的source definition或者ERP Source Qualifier transformation。当你在mapping当中使用
Mapplet的时候,mapplet作为数据源的提供者,并且成为这个mappling的数据流里面的第一个成员。
数据源在mapplet之外:用一个mapplet Input transformation定义mapplet的输入,当你使用mapplet 的时候,数据在mapplet里面如同mapping数据流的一部分一样。
7.Mapplet的数据输出。创建mapplet output prot,每一个Output transformation的字段并且相连接于mpplet的另外transformation都成为mapplet的输出字段
分享到:
相关推荐
Windows API中的内存映射(File Mapping)是一种高效的数据交换技术,它允许进程将磁盘上的文件直接映射到进程的虚拟地址空间,从而实现对文件的高速读写操作。这种方式比传统的I/O操作更快,因为它减少了系统调用的...
简洁的界面设计、清晰的操作流程以及丰富的在线帮助文档(如MapingHelp.doc),都使得用户可以快速上手,无需深厚的GIS背景知识也能轻松操作。 总的来说,JUNO Maping软件是将测试数据转化为有意义的地图信息的理想...
博文链接:https://shaqiang32.iteye.com/blog/201330
由于MyBatis属于一种半自动的ORM框架,所以主要的工作将是书写Mapping映射文件,但是由于手写映射文件很容易出错,所以查资料发现有现成的工具可以自动生成底层模型类、Dao接口类甚至Mapping映射文件。
Castor是一款强大的Java库,它提供了Java对象到XML数据的自动转换功能,反之亦然。这个插件的主要目的是简化XML处理,特别是在Java应用程序中。它通过创建映射文件(Mapping Files)来定义Java对象和XML元素之间的...
Castor是一个Java库,它提供了一种将Java对象序列化为XML和反序列化XML回Java对象的能力。这个工具在处理XML数据时非常有用,尤其是当你需要在Java应用程序和XML数据之间建立映射关系时。在Java开发中,XML常用于...
除了默认的生成模板,Mybatis-Generator还允许用户自定义模板,以满足特定需求,例如添加自定义注解、优化生成的代码结构等。 **七、集成到构建工具** 为了在每次构建时自动执行代码生成,可以将Mybatis-Generator...
测图精灵MAPING GENUIS则进一步优化了用户体验,提供了一体化的内外业作业模式。 总的来说,《数字化测绘系统》PPT课件详尽展示了测绘行业如何通过数字化技术应对信息时代的挑战,提供了全面的解决方案,并揭示了...
### Java中的Map接口详解 #### 一、Map接口概述 Map接口是Java集合框架中的一个核心接口,它并不...不同的实现类针对不同的应用场景提供了优化和支持。开发者可以根据实际需求选择合适的Map实现类来满足项目的需求。
5. **多媒体元素**:“Maping Sample”可能指的是地图模板,这在展示地理位置、市场分布或物流路线时非常有用。同时,模板还强调了“Mobile & Tablet”,意味着它可能包含专门为展示移动应用或响应式设计而设计的...
- "Maping Sample":可能涉及地理位置或市场分布的展示,例如业务覆盖区域、客户分布等。 - "Mobile & Tablet":针对iOS项目,可能展示应用程序在不同移动设备上的界面设计和用户体验。 - "Our Working":讲述...
今天我们来学习下映射的用法,具体以网站的注册过程为例。 一、solidity中,映射的关键字为mapping,首先我们先来定义两个mapping, mapping(address =>uint) idmapping和mapping(uint =>string) namemapping。... ...
该原型无法完全实现我们提出的设计: 。测试工具超级精益样式:)我已经添加了文件功能的保存/加载功能,因此您现在可以通过编辑json模板,然后将其上传到工具中,亲自尝试一下(回旋方式!)。 TLDR; 截屏视频: : ...
#maping - 邮件帐户 ping - 用于检查邮件服务器集 (SMTP/IMAPv4) 的实用程序。 将结果保存到数据库,并能够从结果生成 SVG 数据可视化矩阵。 #特征 跨平台 - 针对所有平台成为目标 没有硬 CGO 依赖,虽然它需要...
详细描述selenium在test过程中设计到得UI Map方面的问题,涉及UI Element以及UI Maping等等问题
"Chart Diagram"可以用来展示数据和统计信息,"Maping Sample"可能提供地理位置或市场分布的可视化,"Mobile & Tablet"部分则可能涉及移动设备或应用程序的展示。 模板中的"First Section"是一个典型的开场部分,...
总之,DTO映射是软件设计中的一个关键环节,它帮助我们构建更清晰、更安全的系统架构。理解并熟练运用DTO映射,不仅可以提升项目的可维护性,还能优化性能,降低出错风险。在实际开发中,根据项目需求选择合适的映射...
7. **互动元素**:虽然PPT不像真正的iOS应用那样具有交互性,但可以通过模拟滑动、点击等动画效果来增加动态感,比如“Maping Sample”中的地图可能就包含了这样的元素。 8. **品牌一致性**:如果是在为特定公司或...
5. **Maping Sample**:地图示例可以用于地理位置相关的展示,比如市场分布、销售区域、项目覆盖范围等,使地理信息更直观。 6. **Mobile & Tablet Application**:这部分可能包含用于展示移动应用或平板应用的界面...