批量数据处理经验分享.ppt

上传人:max****ui 文档编号:14548881 上传时间:2020-07-23 格式:PPT 页数:49 大小:929.74KB
收藏 版权申诉 举报 下载
批量数据处理经验分享.ppt_第1页
第1页 / 共49页
批量数据处理经验分享.ppt_第2页
第2页 / 共49页
批量数据处理经验分享.ppt_第3页
第3页 / 共49页
资源描述:

《批量数据处理经验分享.ppt》由会员分享,可在线阅读,更多相关《批量数据处理经验分享.ppt(49页珍藏版)》请在装配图网上搜索。

1、China Construction Bank. | 1,批量数据处理经验分享,中国建设银行 2011年2月,目录,China Construction Bank. | 2,CRM数据线结构 批量数据处理经验分享,CRM数据线结构,China Construction Bank. | 3,外部系统,ODS,ETL 处理模块,OCRM,ACRM,TPS,WMSS,WPPS,CRM数据线数据类型-每日基础数据,China Construction Bank. | 4,CCBS:活期、定期、银行卡、实物黄金账户每日增量国际卡:贷记卡每日增量证券:证券账户、持有证券、签约每日增量;成交每日全量A+P:

2、贷款账户每日增量理财系统:账户每日增量银保通:保单、签约每日增量CTS:资金账户每日增量ECIF:客户、1560、联系方式、渠道签约每日增量账户和客户每日增量包括最新的时点状态ETL模块在逻辑上积累这些数据的全量(ACRM数据库中),CRM数据线数据类型-每月汇总数据,China Construction Bank. | 5,CCBS:活期、定期、银行卡、实物黄金账户全量国际卡:贷记卡全量证券:持有证券每月全量A+P:贷款账户每月全量理财系统:账户每月全量银保通:保单每月全量CTS:资金账户每月全量ECIF:客户汇总每月全量客户汇总数据包括客户当月的AUM、贡献、总负债等账户汇总数据包括月末余

3、额,月均余额、当月累计交易情况等,CRM数据线处理类型,China Construction Bank. | 6,直传: 项目组直接和ODS确定接口,数据送到ETL模块后,通过DPTF平台转发。目前OCRM、ACRM、WPPS、ICSP、ESME、TPS、OCRM房金、WMSS、CCOB、PBCS都使用到这种方式。加工: ETL模块对数据做加工,然后通过DPTF平台发送。目前OCRM、WPPS、WMSS、TPS、ECIF使用这种方式。加工规则主要包括: 1、拼接字段,增加信息(增加ECIF客户号,或拼接几个档的数据) 2、过滤记录(滤出某个客户群体的数据) 3、数据质量完善(处理不同步的情况,

4、或全量修复) 4、代码转换 5、汇总(ETL模块汇总数据,共享给其它系统如ECIF、OCRM),目录,China Construction Bank. | 7,CRM数据线结构 批量数据处理经验分享,批量处理结构设计 datastage常用经验 大数据量操作,批量处理结构设计-批量处理方式的选择,China Construction Bank. | 8,我中心目前常用的批量数据处理方式包括三类: 通过ETL工具(主要是datastage)进行批量数据处理,中心的大部分系统均通过这种方式进行处理,如OCRM、ACRM批量线等; 通过SQL和sh脚本进行批量数据处理,使用这种方式的系统较少,ACR

5、M部分应用使用PLSQL,如营销清单处理; 编写C/java代码进行批量数据处理,主要是ECIF系统;,批量处理结构设计-批量处理方式的选择-datastage,China Construction Bank. | 9,datastage优点: 并行数据处理效率高,特别是文件处理,可以达到平面文件处理效率的10倍以上,而且可以在同一个任务中做灵活的并发设置。其提供的join、sum、sort、group等节点,可以有效的降低数据库的压力; 对于复杂的ETL应用,开发简单,而且提供任务调度、事件触发等功能,在批量处理环境复杂的项目中有优势;,批量处理结构设计-批量处理方式的选择-datastag

6、e,China Construction Bank. | 10,datastage缺点: 管理和维护的工作量较大。一旦使用datastage,必须在运行期间投入人力进行运维,主要体现在几方面: 运维的大部分操作需要使用工具的client完成,命令行能力较差,因此运维难以实现自动化。例如日志一般情况下只能通过工具查看,很难导出;运行监控只能在工具中进行;错误查询时只能一个个stage的打开查看设置,无法搜索和批量操作等; Datastage的任务运行模式,使程序的错误处理很难做到自动,因为任务(job)自身不能定位错误发生在哪里,发生的规模有多大,因此当发生错误时最好的方式是停止程序并人为干涉,

7、这一点和自己编写程序的ETL处理流程有很大差别; 版本管理不方便; 资源的占用大,一个parallel job,如果stage较多,在运行是可能生成几十到上百的osh进程,cpu和io的占用会比较大。datastage对文件处理的高效是以大cpu占用,大io占用为代价的; Datastage工具本身没有提供包装业务逻辑的手段,其结果是完成一个操作的很多业务逻辑,被分散到了不同的stage中(甚至分散在不同的job中),在这种情况下,如果没有统一的规范,会造成开发出来的代码比较“乱”,除了开发者外其它人比较难以维护;,批量处理结构设计-批量处理方式的选择-datastage,China Cons

8、truction Bank. | 11,datastage适用场景: 如果处理的数据量不大,或者没有处理效率的要求,使用datastage的意义并不大,如果一定需要减少ETL开发的工作量,可以考虑使用server job,而不要使用parallel job,前者相对简单,维护的工作量也较小; 如果ETL服务器和其它应用共享(如ETL服务器同时也是J2EE应用服务器或数据库服务器),不建议使用datastage,因为当数据处理繁忙时其它应用可能会失去响应; 因为datastage的文件处理高效,所以比较适合大量文件操作的批量数据处理(或从多种不同的数据源取数,如从文件、不同的数据库)。相反,如果

9、在同一个数据库中,从某些数据加工成另外一些数据,datastage的优势不一定能发挥出来,这种情况下使用存储过程可能更合适;,批量处理结构设计-批量处理方式的选择-SQL和sh,China Construction Bank. | 12,Sql和sh的优点: 开发和部署相对简单; 可以完全不需要批量处理服务器,直接在DB上进行批量处理; 如果使用oracle的PLSQL开发存储过程,效率比较高,可以使用数据库的并发机制; 一般在这种开发模式下,具体的业务逻辑在SQL或存储过程中实现,sh提供调度、触发、或定时的机制,比较容易分离业务逻辑,维护工作量较小;,批量处理结构设计-批量处理方式的选择-

10、SQL和sh,China Construction Bank. | 13,Sql和sh的缺点和适用范围: 这种批量数据处理方式的适用范围较小,不适合大量复杂的批量数据处理环境,也不适合有大量文件操作的批量数据处理。 因此这种模式最适合的场景是在同一个数据库中,通过一部分数据加工出另外一部分数据(计算)。,批量处理结构设计-批量处理方式的选择-C/java程序开发,China Construction Bank. | 14,通过C/java程序进行批量处理: 目前,我中心ECIF系统使用的是这种方式,此方式的优点很明显,可以做各种灵活的控制,可以很容易的解决datastage在运行维护、错误处理

11、、版本管理、资源占用上的问题,也可以灵活的在DB和ETL服务器间分配资源,但其缺点就是开发工作量和开发难度都较大。 因此,如果一个项目主要做批量数据处理,或批量处理任务较少且需要高稳定性,可以考虑使用这种方式。,批量处理结构设计-数据库和AP的负载分配,China Construction Bank. | 15,目前中心的大部分系统都申请了单独的批量处理服务器,在使用ETL服务器和DB服务器配合工作的过程中(特别是大数据量的处理),需要特别注意批量程序开发中的负载分配问题。,ETL服务器,DB,ETL程序,SQL,批量处理结构设计-数据库和AP的负载分配,China Construction

12、Bank. | 16,如果使用datastage做批量数据处理,很多应用喜欢在数据库源上写复杂的sql,而在job层面使用的stage很少。这种方式,计算的压力实际上是由数据库承担的,ETL服务器上只负责job的运行,压力很小,最终现象是数据库繁忙,而ETL服务器总是很闲。实际上datastage提供大量的计算工具代替数据库计算,如sum,join,group、distinct等操作,合理的使用这些stage,可以有效的分担数据库压力。如果数据库需要支持联机类应用,一种比较合理的批量处理方式是datastage只通过最简单的select语句从数据库中读取数据,复杂的计算通过各种功能stage完

13、成,结果生成文件,在数据库不繁忙时(如晚上),再使用loader或merge批量修改数据库。 如果使用sql或存储过程,开发者必须意识到,ETL服务器只负责任务的调度,所有的批量处理压力都在数据库服务器上。因此,如果采用这种方式,除开调度程序运行和生成文件的问题,甚至不需要独立的ETL服务器。 一般来说,自己开发C/java程序是最容易实现负载分配的,可以合理的把业务逻辑分担在数据库和ETL服务器上,这种方式从理论上说是效率相对较低的,但同时是最稳定,最不容易出问题的批量数据处理方式。,批量处理结构设计-批量处理调度,China Construction Bank. | 17,批量数据处理的调

14、度往往是事件触发的,事件类型最常用的是数据就绪和定时两种。 目前OCRM、ACRM系统的ETL模块使用的调度是taskctl,这是OCRM开发的一套公共调度程序,功能强大、稳定而且操作相对简单,可以调度datastage job,sh、sql、exec code等,并可以分为并行、串行调度,缺点是对于调度中的资源监控较欠缺。如果系统没有使用多ETL服务器,并在服务器间做任务分配,建议都可以使用taskctl。 Datastage自身也提供调度方式,但datastage的调度实际上是通过crontab实现,功能较少,而且操作较复杂,不推荐使用。 也可以通过crontab调度,但对于规模较大,处理

15、复杂的批量任务,必须存在一个统一的调度程序,否则当出现错误时,维护的工作会非常大。,批量处理结构设计-时序问题,China Construction Bank. | 18,证券系统 每日流水 (交易账号),PPSS营销反馈 (客户号),OCRM销售台账 (客户号),全量1560 (客户号 交易账号),案例:匹配客户号,批量处理结构设计-时序问题,China Construction Bank. | 19,未匹配的历史 购买流水,每日流水,PPSS营销反馈,OCRM销售台账,全量1560,建立补充机制后,ECIF,批量处理结构设计-积累全量问题,China Construction Bank.

16、| 20,OCRM,VIP,NOR,ODS,VIP,全量,批量处理结构设计-积累全量问题,China Construction Bank. | 21,OCRM,ETL模块,VIP清单,全量,VIP数据,ODS/DW,全量,VIP数据,VIP清单,批量处理结构设计-星型模型和缓慢变化维,China Construction Bank. | 22,常见的ETL需求有两类: 数据的抽取、转换、加载 数据汇总(报表计算) 对于第二类需求,常用星型模型和缓慢变化维,批量处理结构设计-星型模型,China Construction Bank. | 23,批量处理结构设计-缓慢变化维,China Const

17、ruction Bank. | 24,总行,上海,四川,浦东,岷江,2011-1月数据状态,批量处理结构设计-缓慢变化维,China Construction Bank. | 25,总行,上海,四川,浦东,岷江,2011-2月数据状态,批量处理结构设计-缓慢变化维,China Construction Bank. | 26,总行,上海,四川,浦东2,岷江,2011-2月数据状态,浦东1,批量处理结构设计-缓慢变化维,China Construction Bank. | 27,总行 1900-1-1- 9999-12-31,上海 1900-1-1 9999-12-31,四川 1900-1-1 9

18、999-12-31,浦东2 2011-2-1 9999-12-31,岷江 1900-1-1 9999-12-31,浦东1 1900-1-1 2011-2-1,目录,China Construction Bank. | 28,CRM数据线结构 批量数据处理经验分享,批量处理结构设计 datastage常用经验 大数据量操作,Datastage常有经验-开发规范-结构规范,China Construction Bank. | 29,结构规范: 描述一个大的批量处理过程应该如何实现。 在ACRM系统中,任何一个业务功能都被分拆成TR(数据处理)、LD(数据加载)两个过程,这两个过程可能包含多个job

19、,因此用GE来进行统一的调度管理,这样每个GE就是一个独立的业务功能实现单元,它又依靠SE来进行集成,变成规模更大的功能包,最终,通过SH来包装SE,供调度程序使用。 同时,这个规范还规定了每一层采用的技术,如: TR使用parallel job LD使用server job,嵌入basic代码,用merge脚本入库 GE使用server job,嵌入basic代码进行调度 SE使用seq job SH使用server job,嵌入basic代码进行调度 任何批量处理的开发都应该制定类似的规范,来禁止开发人员随意的选择开发模式。,Datastage常有经验-开发规范-代码规范,China Co

20、nstruction Bank. | 30,代码规范: Datastage软件本身并不规定细节的业务逻辑在什么地方实现。比如当需要对一批数据做代码转换时,转换动作即可以在读取数据表的sql中实现,也可以在sql中仅进行读取,转换放在后续的transformer中实现。这种开发方式如果不加以规范,会给维护造成很大的麻烦。 因此,对于使用datastage做批量数据处理,都建议对业务逻辑实现的位置做适当的规范,如: 一个数据源只能对应一张数据表; 数据源的sql中不要进行复杂的处理,仅作简单的where过滤; 表的关联可以用join stage来实现,不要在数据源的sql中做关联; 汇总动作使用a

21、ggregator stage来实现,不要在数据源的sql中做group; 复杂的转换逻辑统一在transformer中实现; Transformer单入口单出口; 除了上述代码上的规范外,还需要规范stage命名,注释信息的编写等。,Datastage常有经验-开发规范-过程规范,China Construction Bank. | 31,过程管理: 使用datastage进行开发时,一般都是设计人员维护mapping,开发人员根据mapping进行程序开发。 ODS系统在进行开发过程管理时,采用如下的一种方法: 设计人员不仅要设计mapping,而且会设计job,具体方法是设计人员根据ma

22、pping,做一个模板job,这个job中只有每个stage及其数据流关系,没有具体的字段等信息;开发人员再根据mapping和这个半成本的job去做细化。这样做的好处是由设计人员来控制job的形态,工作量并不大,但重要的业务逻辑控制在了少量设计人员手中。,Datastage常有经验-使用注释,China Construction Bank. | 32,Datastage job提供注释,但目前开发中使用的较少,比较良好的注释方式如下:,Datastage常有经验-版本管理,China Construction Bank. | 33,Datastage提供版本管理工具,但使用方式比较复杂,难以

23、满足我行版本管理的要求。 目前常见的方式是每个job单独创建一个dsx包,放在CC上作为文件管理。可以通过自己编写的工具程序,把一个大的dsx包切分成小的dsx文件。,Datastage常有经验-并行处理-灵活使用分区,China Construction Bank. | 34,分区并行处理是datastage paralleljob最大的特点,可以极大的提高性能。为了实现高效的并行处理,最好在系统上做如下设计: 建立多个文件系统,最好分布在不同的存储上; 通过修改default.apt文件,或建立新的apt文件,把不同的并行节点使用的缓冲和dataset分布在不同的文件系统上; 这样,当da

24、tastage生成dataset时,会写入不同的文件系统,IO会比较好;同时所有并行节点产生的缓冲(scratch目录),将使用不同的文件系统。,Datastage常有经验-并行处理-使用dataset,China Construction Bank. | 35,Dataset是datastage最大的特色,采用分区方式存放数据,读写效率都非常高。使用datastage进行数据计算的方式区分于在数据库中用sql或存储过程进行计算的关键点也在于dataset。 如果一个大的sql在数据库中运行,因为某种原因报错,必须要完全重新运行一次,无法使用中间的计算结果,除非把这个sql拆分,然后保留中间计

25、算结果在表或文件中,无论哪种方式必然造成效率的降低。 Datastage在做相同的计算时,任何中间结果都可以保留在dataset中,dataset生成的速度很快(并行写入),而且从dataset中读取这些数据的效率要大大优于从数据库中读取,因此这种计算工作的拆分不会造成太大的效率降低。 因此,如果充分利用dataset的性能优势,datastage的批量数据处理和用sql和存储过程有很大差异。Datastage可以在系统不繁忙时预先生成大量的dataset数据,加工成应用可以直接使用的格式并排好序,然后等待“关键数据”的就绪,一旦“关键数据”就绪,就从dataset中高效的读取数据,并和“关键

26、数据”做关联、汇总等计算,最后生成结果,这样,从“关键数据”就绪到加工出结果,时间会大大缩短。 ACRM系统和OCRM系统做的“大海捞针”动作,每日都在10亿左右的1560中找到所有的VIP客户的账户,并与OCRM提供的全量账户比对并发现差别,采用此方式后,能保证在几个小时内完成,大大提高了效率。,Datastage常有经验-并行处理-使用并行节点,China Construction Bank. | 36,Parallel stage可以极大的提高数据处理效率,但同时系统资源占用也比较厉害。要注意的问题主要有: 所有并行节点必须采用相同的分区方式,如果分区方式有差异会造成结果数据错误,而且没

27、有任何提示; 分区的键值的数据结构必须完全相同,即使都是varchar,长度也必须一样,否则有可能出现关联不到的情况;,Datastage常有经验-修改数据库,China Construction Bank. | 37,不建议使用datastage的insert、update、update_or_insert、delete等方式修改数据库,这样做有两个问题,一是效率太差,二是如果数据中重复数据,在并行处理中容易锁表。如果必须要这样做,最好严格控制提交事务的记录数,极端情况下每条记录都提交事务。 建议的处理方式是对要修改数据库的数据生成文件,然后用sqlloader或merge方式导入数据库中,

28、但对于联机应用频繁的数据库必须选择合适的时间。,Datastage常有经验-空值处理,China Construction Bank. | 38,空值是Datastage处理较复杂的问题,很多datastage函数,都不能处理空值,如果把数据不加判断的传给这些函数,会造成警告,当警告积累过多就会导致程序abort。 一般在transform中,调用函数的方式为: if isnull(xxx) then setnull() else dosomething() 还有一种比较好的方式是在从数据源读出数据时,对所有字段都设置为notnull,把所有的null都转换成空串。,Datastage常有经验

29、-日志清理,China Construction Bank. | 39,Datastage的日志会占用安装程序路径的空间,因此最好设置定时清理(可以在administrator中设置),否则运行时间过长会造成空间紧张,同时打开日志的时间会非常长,难以维护。 另外,如果日志中有警告,必须认真对待,因为警告往往是程序不健壮的地方。当数据都正确时没有问题,但当数据大量出问题时,如果设置了警告条数是unlimit,那么每条记录都在报警告,文件系统空间可能会立刻达到100%。,Datastage常有经验-数据预处理,China Construction Bank. | 40,Datastage允许job

30、运行前后执行某些特定的动作,但如果存在好的调度方式,不建议采用这种开发方式,而应该通过调度来执行这些特定的动作。因为批量调度应该管理所有的任务,这样便于后期的维护,让一个job来处理和调度相关的任务,时间长了后会带来运维的难度。 某些从数据库中读取数据的stage,在运行前后也可以执行一些命令(open command和close command),此时请注意命令是在所有节点上都会执行,因此如果该stage是并行处理的,最好不要执行重建表之类的操作,因为这种操作会被每个节点都执行,会造成处理出错。,目录,China Construction Bank. | 41,CRM数据线结构 批量数据处理

31、经验分享,批量处理结构设计 datastage常用经验 大数据量操作,大数据量操作经验-数据删除,China Construction Bank. | 42,在生产数据库中一定不能直接用delete命令删除大量的数据,这样操作可能导致锁资源耗尽而回滚,如果回滚段不够会使数据库挂起。 因此在处理大数据量删除时,一般要采用特殊的方式: 如果删除数据量不是非常大(在几万到几十万间),可以手工卸出要删除数据的key,然后用sh生成对每个key生成一条删除语句并提交。这时删除命令实际上是删除一条提交一条,速度虽然比较慢,但非常稳妥; 如果删除的数据量达到百万甚至千万,可以考虑把表中不需要删除的数据备份到

32、文件或其他表中,然后truncate源表,并把备份的数据重新导回源表;,大数据量操作经验-联机状态下批量修改,China Construction Bank. | 43,如果需要大批量修改一张数据表中的数据,但该表频繁被其他应用做select访问,为了不影响应用,可以采用下面的操作方式: 建立另外一张备份表,从源表复制数据,然后在备份表上做批量修改操作,最后直接对源表和备份表rename互换名称。,大数据量操作经验-大数据量加载,China Construction Bank. | 44,如果需要大批量数据插入数据库,可以先通过ETL程序加工出需要装入数据库的数据文件,再使用oracle的sq

33、lloader等工具一次性导入数据库中。 这种方式相对于insert的优点在于最终修改数据库操作集中在很短的时间内,而且效率远远高于insert。,大数据量操作经验-大数据量修改(或新增),China Construction Bank. | 45,如果需要大批量数据修改数据库表(或使用insert_or_update方式),可以先通过ETL程序加工出需要装入数据库的数据文件,再使用merge语句一次性导修改数据库中。 这种方式相对于update的优点在于修改数据库操作集中进行,而且效率较高,同时merge语句可以按照分区进行,效率会更高,如下例: merge into/*+(use_hash

34、(a b)*/ dw.CUST_ARGMT_RLSP partition(#PARTITION_ID_DW) a using etl.CUST_ARGMT_RLSP partition(#PARTITION_ID_ETL| ) b on (a.ARRANGEMENT_TYPE = b.ARRANGEMENT_TYPE and a.ARRANGEMENT_KEY = b.ARRANGEMENT_KEY and a.PRIN_ARR_TYPE = b.PRIN_ARR_TYPE) when matched then update set a.ECIF_CUST_NO = b.ECIF_CUST_N

35、O, a.OUT_AGREE_NO = b.OUT_AGREE_NO, a.OUT_AGREE_KEY = b.OUT_AGREE_KEY, a.LAST_UPDATE_DATE = b.LAST_UPDATE_DATE, a.LAST_BUS_DATE = b.LAST_BUS_DATE when not matched then insert values (b.ECIF_CUST_NO, b.ARRANGEMENT_KEY, b.PRIN_ARR_TYPE, b.ARRANGEMENT_TYPE, b.OUT_AGREE_NO, b.OUT_AGREE_KEY, b.LAST_UPDAT

36、E_DATE, b.LAST_BUS_DATE),大数据量操作经验-并行select,China Construction Bank. | 46,Oracle中可以进行并行的读取操作,即使数据库没有进行分区,并行操作也可以提高select的效率,如果数据库是分区的读取效率会更高,如下例: select /*+parallel(a,8)*/ * from tablename a; 在表关联中使用并行读取以提高效率: select /*+parallel(a,8) parallel(b,8) use_hash(a b)*/ * from table1 a, table2 b where a.id=

37、b.id,大数据量操作经验-表分析,China Construction Bank. | 47,Oracle对sql进行优化的依据是表分析的结果,如果对于数据量变动非常频繁的表(如每次truncate后全量加载),建议在加载完成后对表做一次自动分析,确保后续的访问能生成正确的执行计划,但表分析比较消耗系统资源,如果能预估数据量变化不大,就可以等待oracle每日自动的信息采集,而不用每次操作完表都做自动分析。 exec dbms_stats.gather_table_stats(DW,CUST_ARGMT_RLSP); 同时,为了让数据库生成正确的执行计划,最好不要在程序中写非常复杂和庞大的sql。,大数据量操作经验-查看执行计划,China Construction Bank. | 48,当sql长时间无结果,可以查看sql的执行计划: explain plan for select /*+parallel(a,8)*/ * from dw.cust_argmt_rlsp a; select * from table(dbms_xplan.display(); 如果执行计划有问题,可以手工做表分析解决。,Q&A,

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!