CN112612453A - RESTful服务驱动的JS对象简谱数据互换平台 - Google Patents
RESTful服务驱动的JS对象简谱数据互换平台 Download PDFInfo
- Publication number
- CN112612453A CN112612453A CN202011536699.5A CN202011536699A CN112612453A CN 112612453 A CN112612453 A CN 112612453A CN 202011536699 A CN202011536699 A CN 202011536699A CN 112612453 A CN112612453 A CN 112612453A
- Authority
- CN
- China
- Prior art keywords
- data
- data interchange
- resource
- interchange
- request
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000013497 data interchange Methods 0.000 title claims abstract description 310
- 238000006243 chemical reaction Methods 0.000 claims abstract description 87
- 230000003993 interaction Effects 0.000 claims abstract description 54
- 238000013461 design Methods 0.000 claims abstract description 37
- 238000012545 processing Methods 0.000 claims abstract description 31
- 238000007726 management method Methods 0.000 claims abstract description 18
- 230000006870 function Effects 0.000 claims abstract description 16
- 238000000034 method Methods 0.000 claims description 171
- 238000013507 mapping Methods 0.000 claims description 105
- 230000008569 process Effects 0.000 claims description 54
- 239000011159 matrix material Substances 0.000 claims description 49
- 239000000872 buffer Substances 0.000 claims description 37
- OFCCYDUUBNUJIB-UHFFFAOYSA-N n,n-diethylcarbamoyl chloride Chemical compound CCN(CC)C(Cl)=O OFCCYDUUBNUJIB-UHFFFAOYSA-N 0.000 claims description 34
- 230000004044 response Effects 0.000 claims description 30
- 239000003795 chemical substances by application Substances 0.000 claims description 24
- 238000012544 monitoring process Methods 0.000 claims description 20
- NRUQNUIWEUZVLI-UHFFFAOYSA-O diethanolammonium nitrate Chemical compound [O-][N+]([O-])=O.OCC[NH2+]CCO NRUQNUIWEUZVLI-UHFFFAOYSA-O 0.000 claims description 14
- 230000014509 gene expression Effects 0.000 claims description 12
- 239000011800 void material Substances 0.000 claims description 12
- 238000004891 communication Methods 0.000 claims description 9
- 238000005516 engineering process Methods 0.000 claims description 8
- 238000000605 extraction Methods 0.000 claims description 8
- 239000000178 monomer Substances 0.000 claims description 8
- 239000012634 fragment Substances 0.000 claims description 7
- 238000004806 packaging method and process Methods 0.000 claims description 6
- 238000000638 solvent extraction Methods 0.000 claims description 5
- 238000012546 transfer Methods 0.000 claims description 5
- 230000007704 transition Effects 0.000 claims description 5
- 238000003780 insertion Methods 0.000 claims description 4
- 230000037431 insertion Effects 0.000 claims description 4
- 230000002452 interceptive effect Effects 0.000 claims description 4
- 230000007474 system interaction Effects 0.000 claims description 4
- 235000010627 Phaseolus vulgaris Nutrition 0.000 claims description 3
- 244000046052 Phaseolus vulgaris Species 0.000 claims description 3
- 230000002776 aggregation Effects 0.000 claims description 3
- 238000004220 aggregation Methods 0.000 claims description 3
- 230000001174 ascending effect Effects 0.000 claims description 3
- 230000003139 buffering effect Effects 0.000 claims description 3
- 238000004364 calculation method Methods 0.000 claims description 3
- 238000010276 construction Methods 0.000 claims description 3
- 239000003814 drug Substances 0.000 claims description 3
- 230000004807 localization Effects 0.000 claims description 3
- 239000000203 mixture Substances 0.000 claims description 3
- 238000013459 approach Methods 0.000 claims description 2
- 238000012217 deletion Methods 0.000 claims description 2
- 230000037430 deletion Effects 0.000 claims description 2
- 238000012986 modification Methods 0.000 claims description 2
- 230000004048 modification Effects 0.000 claims description 2
- 238000011084 recovery Methods 0.000 claims description 2
- 238000010168 coupling process Methods 0.000 abstract description 5
- 238000005859 coupling reaction Methods 0.000 abstract description 5
- 230000008878 coupling Effects 0.000 abstract description 4
- 230000008901 benefit Effects 0.000 description 11
- 230000005540 biological transmission Effects 0.000 description 11
- 238000010586 diagram Methods 0.000 description 9
- 238000005538 encapsulation Methods 0.000 description 5
- 206010033799 Paralysis Diseases 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 3
- 230000006872 improvement Effects 0.000 description 3
- 238000013508 migration Methods 0.000 description 3
- 230000005012 migration Effects 0.000 description 3
- 238000012790 confirmation Methods 0.000 description 2
- 238000007405 data analysis Methods 0.000 description 2
- 230000007547 defect Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 238000013506 data mapping Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005096 rolling process Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
- G06F8/24—Object-oriented
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
- G06F9/548—Object oriented; Remote method invocation [RMI]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/541—Client-server
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提出一种全新的基于RESTful与JS对象简谱的数据互换平台,详细设计了它们的工作方式和功能实现,包括资源标识、控制管理、数据转换、数据交互功能。针对目前异构***间数据互换量越来越庞大,互换方式日益复杂的问题,用JS对象简谱代替XML作为数据互换格式,采用RESTful服务架构设计实现数据互换平台,给出了具体的平台模型设计,并设计了平台模块的实现方式。数据互换平台的设计分为数据互换用户端DEB与数据互换服务器端DES,用户端承担捕获应用***的交互事件,DES承担响应处理数据交互的请求,整个模型结构具有很强的低耦合性与扩展性,能有效提高数据互换的效率。
Description
技术领域
本发明涉及一种JS对象简谱数据互换平台,特别涉及一种RESTful服务驱动的JS对象简谱数据互换平台,属于数据互换平台技术领域。
背景技术
数据互换平台是一个为不同数据库、不同数据格式间,进行数据互换而提供服务的平台,它是要解决企事业单位、政府机构在不同信息库之间数据信息无法自由转换的问题。传统的数据互换平台都是基于XML技术,同时采用SOA的服务架构,解决数据异构的各种问题。随着大数据时代的到来,异构***间的数据互换量***式增长,互换方式也日益丰富,急需一种轻量级的数据互换格式来代替XML,以提高数据互换的效率,同时互联网应用的表现形式也发生了巨大变化,对应用***的整体性能提出了更高的要求,越来越多的应用采用REST作为***实现的方法。
JS对象简谱是一种基于JavaScript的轻量级数据互换语言,它是独立于编程语言的文本格式,沿用了C语言的一些习惯,采用文字的形式容易理解,这些特性使JS对象简谱成为理想的数据互换语言,易于阅读和编写,同时也易于机器解析和生成,以及在网络中传输。JS对象简谱与XML相比,在序列化、有效数据率、解析速度等方面都有极大的优势。传统的Web服务采用基于RPC样式架构,使用RPC样式架构构建的基于SOAP的Web服务成为了实现SOA最常用的方法。
随着全球化和信息化的不断发展,异构***间的信息交互越来越频繁,信息交互量越来越大,交互方式日益复杂。基于XML的数据互换将数据转换为XML文件,当数据量较大时,在网络传输的速度会很慢,极大的影响了数据互换的效率,传统的基于SOAP与XML的数据互换平台正遭受到前所未有的挑战。本发明用JS对象简谱代替XML作为数据传输格式、REST代替SOAP作为服务架构,采用B/S的模式,基于RESTful与JS对象简谱设计实现数据互换平台。采用更轻便的架构样式,更轻量级的数据传输方式,来提高数据互换的效率,使得应用程序高效的执行,提高用户的使用体验。随着企业应用***越来越Web化,基于资源交互的RESTful服务将会是Web应用的趋势,基于RESTful服务与JS对象简谱数据格式的数据互换平台具有十分重要的应用价值。
现有技术的数据互换平台及方法的现状和不足,以及本发明拟解决的问题表现在:
第一,数据表抽取顺序的数据互换过程中存在数据表的迁移,由于数据库***中数据表之间并不相互独立,具有关联关系,现有技术不能保证数据的引用完整性;在数据互换过程中,数据表的迁移遵循引用完整性规则难以保证,导致出现孤立记录,数据互换平台的应用***数据库数据表的量很大,数据表之间的关系错综复杂,数据互换***的可靠性与高效性难以保证;
第二,实现异构数据互换的关键性问题是实现关系数据库与转换文本格式的映射,现有技术两种常用的实现方式,基于模板驱动的映射和基于模型驱动的映射,基于模板驱动映射的方法简单,通过使用SQL语句嵌入模板,利用执行该模板实现数据转换,没有考虑关系模式中的约束条件,破坏了数据的完整性,基于模型驱动的映射保存了关系数据库中的关系模式,保证了数据的完整性不被破坏,但这两种映射技术都是关系数据库与XML文档的实现方式,数据表的连通性较差;
第三,现有技术用XML数据映射表存储不同数据库***之间的类型映射关系,这种方法存在两个问题,第一,降低数据互换的通用性,当Oracle数据库与MySql数据库进行数据互换时,需构建Oracle与MySql类型映射关系文件,当Oracle数据库与SQLServer数据库进行数据互换时,又需要构建Oracle与SQLServer的类型映射关系文件,当接入一种新的数据库***时,又需要为它构建与之前接入的数据库***的类型映射关系文件,当有n种数据库***时,需构建映射关系文件类型多;第二,构建数据库类型映射关系的XML文件是为了便于基于XML的数据互换,而本发明的数据互换基于JS对象简谱,所以也不适合这种方式;
第四,现有技术的数据互换平台不具有REST的架构优势,也没有轻量级的JS对象简谱作为响应主体,同时也不支持不同应用***的数据互换与共享,***通用性差,不支持多种不同类型数据***间的互换;***扩展性差,不支持拥塞控制,当数据互换请求较多,会引发大量请求同时并发处理;数据安全性与完整性差,不支持断电续传、分块传输,不能保证数据互换的时序性;不具备完善的日志监控***,当数据传输发生瘫痪时无法恢复。
本发明提出一种全新的基于RESTful与JS对象简谱的数据互换平台,是对现有技术数据互换方法的改进,当数据互换量大,互换方式复杂时,能有效提高数据互换的效率。
发明内容
针对现有技术的不足,本发明提出的RESTfulWeb服务是基于REST样式并应用ROA构建而成的Web服务,在目前主流的三种Web服务交互方法中,REST相比于SOAP以及XML-RPC更加简单明晰,无论是对URL的处理还是对Payload的编码,REST都倾向于用更加简单轻量的方法设计和实现。REST是一种对Web体系架构设计原则的约束,REST约束条件作为一个整体应用时,将生成一个简单有效、可扩展、安全可靠的架构。由于它简便、轻量以及通过HTTP直接传输数据的特性,RESTfulWeb服务成为基于SOAP服务的最有前途的替代方法。
为达到以上技术效果,本发明所采用的技术方案如下:
RESTful服务驱动的JS对象简谱数据互换平台,包括数据互换中的创新方法和数据互换平台的设计;用JS对象简谱代替XML作为数据互换格式,采用RESTful服务架构设计实现数据互换平台,给出了具体的平台模型设计,并设计了主要平台模块的实现方式,整个数据互换平台的设计分为数据互换用户端DEB与数据互换服务器端DES,用户端承担捕获应用***的交互事件,DES承担响应处理数据交互的请求,数据互换服务器端采用核心与代理的星型结构模型,数据互换控制中心DECC是整个服务器端的中心,各个数据互换代理结点DEAN为DECC提供不同数据库***的数据交互服务;
数据互换中的创新方法:基于数据表抽取顺序问题,提出依托关系矩阵的数据表划分方法,按依托等级对数据表进行抽取,保证数据的引用完整性;基于关系数据库向JS对象简谱的映射,提出基于数据字典的资源映射方法,将数据表的映射看作是对资源的映射,通过构建数据表JS对象简谱格式的数据字典,对资源、数据结构、数据进行描述,然后进行映射;异构数据转换中,对于属性转换与类型转换分别采用构建属性映射关系的JS对象简谱片段与数据库类型映射表来解决;
数据互换平台的设计:将数据互换平台分为用户端与服务器端两部分,用户端与服务器端通过HTTP协议进行通信,用JS对象简谱作为响应主体,数据互换服务器端采用核心与代理的模式,数据互换中心承担数据互换的核心功能,代理结点承担与不同数据源的交互,对数据互换中的资源设计唯一的URI,利用缓冲队列处理用户端的资源请求,日志服务与异常的恢复,用Jackson类库实现数据转换引擎,用JDBC技术实现与数据源的交互。
RESTful服务驱动的JS对象简谱数据互换平台,进一步的,依托关系矩阵的数据表划分方法的算法原理:数据库***C的数据表集合为C={A1,A2,…,An-1,An},如果数据表Ai的主键是数据表Aj的外键(i≠j,i>0,j<n),则Ai,Aj存在依托关系Ai→Aj,对应数据表的关系,Ai为被引用表,Aj为引用表,若数据表Ai与其他任何表不存在依托关系,则为散离表,散离表的依托层次数A=0;对于依托关系(Ai→Aj,Aj→Ak),有ak=aj+1=ai+2,ai为数据表Ai的依托等级,依托关系矩阵的数据表划分方法按依托等级由低到高对数据表进行划分,依托等级最低数据表优先抽取;
依托关系矩阵的数据表划分方法实现:依托关系矩阵的数据表划分方法构建一个数据库表间依托关系矩阵,具体实现过程为:
过程一,数据库表间依托关系矩阵的构建,对于数据库***C中的的n张数据表A1,A2,…,An-1,An,构建数据库***C的表间依托关系矩阵,其中,当数据表Ai,Aj存在依托关系Ai→Aj时,Aij=1;当不存在依托关系Ai→Aj时,Aij=0;
过程二,根据生成的表间关系依托矩阵,计算每张数据表的依托等级ai,遍历矩阵的每一列,将该列的每一行元素的值相加,得到该列对应数据表的依托等级,即ai=0的数据表为依托等级最低的数据表,将它们划分出来;
过程三,关系矩阵的修正,对于划分出来的数据表,删除其对应矩阵的行和列;
过程四,继续划分,重复过程二,直到矩阵划分结束。
RESTful服务驱动的JS对象简谱数据互换平台,进一步的,基于数据字典的资源映射方法按照数据表JS对象简谱格式数据字典的描述,实现关系数据库与JS对象简谱的映射,基于依托关系矩阵的数据表划分方法,具体算法描述为:
第一步,对要实现数据互换的数据表采用依托关系矩阵的数据表划分方法进行划分,先对第一层划分的数据表进行资源映射;
第二步,首先映射资源的描述;
第三步,再映射数据表结构的描述;
第四步,最后映射数据的描述;
第五步,依次对下一层划分的数据表进行资源映射,重复第二步、第三步、第四步,直到最后一层划分结束。
RESTful服务驱动的JS对象简谱数据互换平台,进一步的,异构数据间转换:按照转换方式的不同,将数据转换分为属性转换与类型转换;
属性间转换:解决异构数据语义表达不同的问题,数据互换平台根据源数据表和目标数据表的字段信息,构建两者之间字段属性的映射关系,字段属性的映射关系采用JS对象简谱来存储,JS对象简谱是以名称/值对的形式存储数据,每个name映射一个value,按name进行访问,用name存储源数据表中的字段,value存储目标数据表中的字段,完成对异构数据字段属性映射关系的存储;构建异构数据源之间数据表的字段属性映射关系后,通过解析映射关系的JS对象简谱片段,就能方便的对字段属性进行转换;
类型间转换:采用数据表存储各种数据库数据类型的映射关系,增加一种数据库类型,添加一列即可,当表中没有要转换的数据类型时,添加一行即可。
RESTful服务驱动的JS对象简谱数据互换平台,进一步的,数据互换平台主要针对关系数据库的数据互换,假设有异构的两个应用***D、E,***D有数据data,采用格式JSONformat_D封装后构成数据集JSONformat_D(data),而***E只能识别格式JSONformat_E封装的数据,数据互换平台的作用通过数据转换引擎将数据集JSONformat_D(data)转换为数据集JSONformat_E(data),如下式所示:
JSONEngine(JSONformat_D(data))JSONformat_E(data)
其中JSONEngine表示数据转换引擎的函数;
根据处理功能的不同,将数据互换平台分为三个平台模块:***通讯模块、核心业务模块与数据通讯模块,***通讯模块主要承担与应用***的事件交互,将消息封装成HTTP请求报文并转发;核心业务模块是数据互换的核心模块,承担解析请求报文并处理、应用***注册、数据转换、控制管理,其中控制管理包括对请求消息的缓冲处理,对数据互换过程的监控和异常处理;数据通讯模块为核心业务提供数据服务,主要承担与数据源的直接交互,将交互数据转换为JS对象简谱格式后再返回给核心业务。
RESTful服务驱动的JS对象简谱数据互换平台,进一步的,数据互换平台DEP采用B/S的设计模式,由数据互换用户端DEB与数据互换服务器端DES两部分组成,其中DEB承担捕获应用***交互事件、请求消息转发,DES承担响应消息、数据转换、控制管理、与数据源的交互;
服务模式:采用R-R模式,是一对一的数据互换模式,首先数据互换请求方通过数据互换平台请求获取相关的数据资源,互换平台找到对应的数据互换提供方,提供方再通过互换平台将数据资源反馈给请求方;由数据互换请求方主动发起,进行实时数据互换;
数据互换流程:***D与***E为接入数据互换平台的异构***,***D为请求方,***E为提供方,***D要得到***E中的数据,经过数据互换平台将***E中的数据转换为适应***D中的数据,具体流程为:
流程一,请求方***D向DEP发送要和***E进行数据互换的请求消息;
流程二,DEB捕获到***D的请求消息后,将请求消息重新封装成资源标识URI,然后通过HTTP协议的GET方法向DES获取请求资源;
流程三,DES根据请求资源的URI与数据源***进行交互,获得请求源数据,即***E的数据,并向DEB发送响应成功的消息;
流程四,DEB收到消息后,再向DES发送请求方***D的数据格式要求;
流程五,DES收到请求方的数据格式要求后,通过数据转换引擎将源数据转换为目标数据,并向DEB发送数据互换成功的消息;
流程六,DEB收到数据互换成功的消息后,数据互换过程结束;
整个数据互换流程中,DES进行监控与日志管理,保障互换流程的安全性和可靠性。
RESTful服务驱动的JS对象简谱数据互换平台,进一步的,数据互换用户端DEB设计主要为消息封装与资源标识,DEB将消息封装为可识别的资源标识URI,DEB捕获交互事件后可知将要获得的资源,当识别出资源后,为资源设计唯一的URI标识,然后设计表述形式;
资源划分的前提是确定一个资源粒度,按粒度由细到粗将资源分为三种:
第一种,单体资源:单体资源单独作为一个实体存在,不存在从一个实体到另外一个同类实体的转移关系;
第二种,集合资源:集合资源是由多个单体资源组成的一个集合;
第三种,CRS资源:CRS是计算-关系-查询资源,单体资源与集合资源都属于领域实体的资源,CRS资源是这些领域实体之间的关系、查询操作以及资源间的计算抽象出来的资源;
数据互换***中,不同应用***选取粒度较细的单体资源,而主要的业务流程是对数据库的查询操作,选取粒度相对粗糙的CRS资源。
RESTful服务驱动的JS对象简谱数据互换平台,进一步的,一个URI由以下内容组成:协议、主机、端口号、资源地址以及查询字符串,整体模式为:scheme://host:port/path?queryString,其中http标识协议名称,通常是HTTP或HTTPS;host表示主机名称或IP地址;port表示端口号;path表示资源的访问路径;queryString表示查询字符串,查询条件用&符号分割,本发明设计URI时注意以下四点:
1)层次结构
URI的设计首先考虑可读性与扩展性,采用层次结构,层次结构是资源之间的层次关系,对于每一个接入到数据互换平台的应用***都要对应数据结构注册相关的信息,数据互换平台中采用层次结构设计的URI包括:
①数据库类型为ORACLE,***编号为001的应用***,URI设计为:
http://example/DEService/node/ORACLE/001;
②数据库类型为ORACLE,***编号为001应用***的所有数据查询,URI设计为:
http://example/DEService/node/ORACLE/001/table_search;
③数据库类型为ORACLE,***编号为001应用***进行数据***,URI设计为:
http://example/DEService/node/ORACLE/001/table_insert;
同理,对于其他的资源,都采用这样的层次结构设计URI;
2)参数
对于集合资源与CRS资源,提供必要的参数完成请求,对于数据库类型为ORACLE,***编号为001的应用***中员工表的信息查询,查询参数tableName=employee,URI为:
http://example/DEService/node/ORACLE/001/table_search?tableName=employee
在URI中设置过滤参数的规则与Web浏览器中使用URL完全一样,使用“?”作为资源请求,“&”作为参数分隔,“=”作为参数赋值;
3)分页
分页的实现通过定义分页参数来完成,分页方式有以下两种:
①定义返回的页面数page和每页返回多少数据pagesize;
②定义从第几行开始startindex,共返回多少数据count;
4)排序
排序有两个参数,一个用来排序的字段sortOrder,一个是排序的升序降序方式sortField。
RESTful服务驱动的JS对象简谱数据互换平台,进一步的,资源表述基于HTTP设计,数据互换平台对HTTP请求报头进行协商,用户端向服务器发送的HTTP请求报头附加自身信息和与服务器协商的信息,协商信息包括:
①Accept-必填:指定表述的类型,表示用户端希望接受JS对象简谱文本;
②Accept-Charset-选填:用户端所接受的字符集,缺省表示可接受任何字符集;
③Accept-Encoding-选填:指定用户端进行编码的方式,缺省表示任何编码都可接受;
④Accept-Language-选填:指定使用何种语言进行本地化,缺省表示任何语言都可接受;
在数据互换平台的设计上,请求报头Accept域采用application/json,表示接受JS对象简谱文本,Accept-Charset、Accept-Encoding、Accept-Language域均采用缺省的形式;
资源的状态转移是资源的增删查改CRUD,在REST中使用HTTP内置的方法(GET、POST、PUT、DELETE)进行CURD操作:
1)用户端向服务器端请求资源,使用GET方法向服务器端读取资源;
2)用户端给服务器端发送资源,使用POST方法向服务器端创建资源。
RESTful服务驱动的JS对象简谱数据互换平台,进一步的,数据互换服务器端DES设计:每个接入数据互换平台的应用***,都要在DES上注册其信息,主要的注册信息包括***编号、***信息、数据库类型、注册时间;
DECC响应资源的HTTP请求,和整个数据互换的控制管理,数据转换,DECC响应资源的HTTP请求的方法为:
1)DES收到DEB发送过来的HTTP请求后,交由DECC处理,DECC对HTTP请求进行解析获取相关信息,包括用户端想要获取的资源、HTTP方法、响应文本格式;
2)根据HTTP方法,DECC响应对应的请求逻辑,不同的HTTP方法响应不同的处理逻辑:
①响应HTTP GET的请求逻辑:public void get(Resource resource);
②响应HTTP POST的请求逻辑:public void post(Resource resource);
③响应HTTP PUT的请求逻辑:public void put(Resource resource);
④响应HTTP DELETE的请求逻辑:public void delete(Resource resource);
所有对资源请求的HTTP方法得到响应后被回调,将结果返回给用户端;
3)处理逻辑的具体实现交由对应数据互换代理结点DEAN完成;
4)DECC将DEAN返回的处理结果封装为HTTP响应报文发送给用户端;
DECC的控制管理包括缓冲队列的管理和服务监控,缓冲队列:数据互换请求方把请求分为多个小的HTTP请求报文并发完成,用缓冲队列来控制处理HTTP请求报文的顺序与数量,同时,控制处理HTTP请求的顺序,采用两个队列来实现缓冲队列,一个是empty队列用于存放预分配的缓冲区,另外一个是full队列,用于请求排队的等待区;工作原理为:每个HTTP请求都会先进入到等待区,等待进入缓冲区,服务器只会处理缓冲区里的请求,处理完缓冲区队头的请求后,将等待队列队头的请求放入到缓冲区的队尾;
服务监控包括两个部分:日志记录与异常处理,日志记录保存***在运行过程中的重要信息,异常处理保证***在出现异常时能及时恢复,数据互换服务器端还有两种存储介质:DataStore、LogStore,DataStore存储数据互换的数据,包括服务器端从源***获取的数据,还有用户端传送给服务器端的数据;LogStore是一个控制器,记录每次操作的日志,在响应用户端的每次HTTP请求中,服务器端都会把数据与控制消息以可靠的方式存储;
日志记录的过程:当数据互换服务器端收到用户端的一条HTTP请求时,控制中心在日志记录表中***一条记录,记录本次请求的基本信息,基本信息包括:请求ID、源***编号、目标***编号、文本格式、资源标识、代理结点、数据地址、HTTP方法、请求时间,当服务器做出响应后,更新该日志记录,当请求正常完成后,删除本次请求在DataStore中的存储数据;异常处理是当服务监控***收到一条异常消息时,根据日志记录表中的记录进行相应的处理;
DECC的数据转换是将源JS对象简谱数据转换为目的JS对象简谱数据,本发明采用JAVA语言实现JS对象简谱数据的转换,用Jackson类库实现数据转换引擎,数据转换引擎的过程是:JS对象简谱数据的解析、转换与封装,使用Jackson类库实现JS对象简谱数据的解析与封装,并利用异构数据转换的方法实现转换;
本发明的数据互换平台针对大数据量互换,采用Jackson类库实现JS对象简谱的序列化与反序列化:
1)使用Jackson类库将JAVA对象转换成JS对象简谱,调用JsonGenerator类的writeObject方法实现将bean对象转换为JS对象简谱对象;
2)使用Jackson类库将JS对象简谱转换为JAVA对象,使用ObjectMapper对象的readValue方法,这个方法需要提供两个参数,第一个参数是解析的JS对象简谱字符串,第二个参数是要转换的JAVA对象类型;
3)数据转换的过程,数据转换主要包括属性转换与类型转换两方面,通过Jackson类库的序列化与反序列JS对象简谱对象的方法,与类型映射关系表,得到目标数据表的JS对象简谱对象。
与现有技术相比,本发明的贡献和创新点在于:
第一,本发明提供的RESTful服务驱动的JS对象简谱数据互换平台,第一个创新点是针对数据互换中数据表抽取顺序的问题,提出了一种依托关系矩阵的数据表划分方法,按依托等级对数据表进行划分,保证了数据的引用完整性;第二个创新点是针对关系数据库向JS对象简谱映射的问题,提出了一种基于数据字典的资源映射方法,能有效的将关系数据库向JS对象简谱转换的同时,也确保了数据的完整性不被破坏;第三个创新点是提出了一种全新的基于RESTful与JS对象简谱数据互换平台的实现方式,数据互换平台分为用户端与服务器端,它们通过HTTP协议进行通信,将数据互换的过程看作是对数据表资源的请求,具有很强的低耦合性与扩展性;
第二,本发明提供的RESTful服务驱动的JS对象简谱数据互换平台,数据互换平台DEP基于RESTfulWeb服务,继承了REST的架构优势,采用更轻量级的JS对象简谱作为响应主体,同时也支持不同应用***的数据互换与共享,其主要的优势为:一是良好的***通用性,支持多种不同类型数据***间的互换,包括:Oracle、SQLServer、MySQL、DB2等数据库***;二是良好的***扩展性,当有新的数据***接入平台时,只需要添加相应的数据互换代理结点即可;三是支持拥塞控制,当数据互换请求较多,采用消息缓存队列处理,防止大量请求同时并发处理;四是良好的数据安全性与完整性,支持断电续传、分块传输,提供方传送的数据按时间顺序存放在消息队列中,能保证数据互换的时序性;五是支持事务,请求方只有成功的发送请求,才会删除消息队列中的消息,否则进行事务回滚,当互换数据成功存入目标数据库,请求方给提供方发送确认信息,只有收到请求方的确认消息,提供方才会删除消息队列中的消息;六是具备完善的日志监控***,对数据互换的全过程进行监控和日志管理,当数据传输发生瘫痪时能及时恢复;
第三,数据互换用户端DEB设计中,DEB主要捕获应用***的交互事件,将交互事件封装成可识别的资源URI,传统基于SOA数据互换平台捕获应用***交互事件在服务器端进行,而本发明采用RESTful Web服务与JS对象简谱数据格式,将捕获应用***交互事件放在用户端处理,首先能减轻服务器端的压力,同时也能提高数据交互的效率,理由和优势如下:第一,REST在统一接口抽象、缓存服务器支持、连接性等诸多方面优势明显,使其***扩展性与简单程度都要优于SOAP,在基于REST的架构中,一切可看作是资源,把捕获的应用***交互事件进行封装,处理成为可识别的资源URI,使用HTTP协议进行访问即可;第二,传统数据互换平台采用XML作为文档格式,利用XSTL、XPath等技术对数据进行转换,由于XML格式本身复杂,数据转换效率低,本发明采用数据文档格式为JS对象简谱,JS对象简谱在数据解析与封装的效率都要优于XML,能大幅提高数据转换效率;
第四,本发明数据互换服务器端的架构为星型结构,数据互换控制中心为架构中心,处于所有信息通道的中间,把对用户端的响应消息进行控制分发,交由指定的某个代理结点处理,再把处理后的数据重新封装,通过HTTP协议发送给用户端,代理结点承担与数据源的交互,每个代理结点承担一种数据库***的代理,代理结点向上为控制中心提供数据交互服务,它的底层实现对控制中心是透明的,当增加一种数据库类型时,只需构建一个对应的代理结点连接到控制中心,这种低耦合性的结构,具有很强的扩展性;
第五,DECC的控制管理的缓冲队列管理和服务监控改进多、创造性强、优势明显,当应用***之间的数据互换量很大时,如果只发送一次HTTP请求来完成,会对数据互换服务器端造成极大的压力,也会带来巨大的流量开销,数据互换请求方把请求分为多个小的HTTP请求报文并发完成,用缓冲队列来控制处理HTTP请求报文的顺序与数量,同时,控制处理HTTP请求的顺序,采用缓冲队列避免同时处理大量的HTTP请求,缓解服务器端的压力;服务监控对数据互换过程的监控与管理,记录数据互换的日志,当数据在互换过程中发生瘫痪时及时回复,保证数据互换的正确性与安全性,在响应用户端的每次HTTP请求中,即使服务器发生故障重启,服务器也能根据日志记录进行恢复;
第六,通过对XML与JS对象简谱在占用空间、扩展性、编码难度、解析难度方面的对比,说明了JS对象简谱在数据互换方面的优势,同时也对比REST与SOAP两种架构样式,REST在统一接口抽象、缓存服务器支持、连接性诸多方面体现出明显的优势,其***扩展性与性能都要优于SOAP;对三种JS对象简谱类库实现JS对象简谱转换引擎的性能做出了对比,说明了在JS对象简谱数据互换过程中使用Jackson类库的性能将会更高,并且随着数据互换量的增大,性能越高;对XML与JS对象简谱在数据封装与解析、数据传输、数据转换效率上进行了对比,证明了随着数据互换量的增大,JS对象简谱的数据互换效率越优于XML。
附图说明
图1是本发明的数据互换平台的平台模块示意图。
图2是本发明的数据互换平台的整体架构示意图。
图3是本发明的HTTP方法进行CRUD的架构示意图。
图4是本发明的数据互换服务器端整体架构示意图。
图5是本发明控制管理的缓冲队列示意图。
具体实施方式
下面结合附图,对本发明提供的RESTful服务驱动的JS对象简谱数据互换平台的技术方案进行进一步的描述,使本领域的技术人员能更好的理解本发明并能够予以实施。
在大数据时代,异构***间的数据互换量***式增长,互换方式日益丰富,JS对象简谱是一种能代替XML的轻量级的数据互换格式,它不仅更轻量,同时也易于数据的生成和解析,更加适合大数据量的数据互换。本发明对基SOA服务与XML格式的数据互换方法进行改进,提出一种基于RESTful服务与JS对象简谱格式的数据互换方法,Resful服务与SOA服务最大的区别在于,SOA是面向服务的,RESTful是面向资源的,RESTful服务更加适合用JS对象简谱作为消息传输格式,能充分发挥JS对象简谱轻量级数据格式的优势。
本发明针对数据互换中数据表抽取顺序问题提出一种依托关系矩阵的数据表划分方法,针对关系数据库向JS对象简谱映射的问题提出一种基于数据字典的资源映射方法,最后提出RESTful服务驱动的JS对象简谱数据互换平台,将数据互换平台分为用户端与服务器端,它们采用HTTP协议进行通信,服务器端采用核心与代理的模型结构。本发明基于RESTful服务,对JS对象简谱的数据互换中的关键问题提出解决方法,并应用到数据互换平台的设计中去。
一、数据互换中的创新方法
首先,针对数据表抽取顺序问题,提出依托关系矩阵的数据表划分方法,将数据表依托层次进行划分,依托层次的高低顺序对数据表进行处理,保证数据互换的引用完整性;其次,针对关系数据库向JS对象简谱的映射,提出基于数据字典的资源映射方法,根据JS对象简谱格式的数据字典对数据表进行映射,有效保存关系模式中的结构映射和约束映射;最后,针对异构数据转换中的数据属性转换,采用构建属性映射关系的JS对象简谱片段来实现;针对数据类型的转换,采用构建数据库类型映射表的方式来实现。
(一)数据表抽取顺序
1.问题的提出
数据互换过程中存在数据表的迁移,将源数据库中的数据迁移到目标数据库。由于数据库***中数据表之间并不相互独立,具有关联关系,迁移需遵循一定的规则,否则不能保证数据的引用完整性。
引用完整性属于表间规则,对于有引用关系的相关表,在删除、***记录、更新时,若只改其中一张表,会影响数据的完整性。引用完整性规则为:若属性组G是关系模式H1的主键,同时G也是关系模式H2的外键,则在H2的关系中,G的取值只允许两种可能:空值或等于H1关系中某个主键值,H1为被引用关系模式,H2为引用关系模式。
在数据互换过程中,数据表的迁移遵循引用完整性规则:在将源数据库最新***的数据更新到目标数据库时,先将主表的数据更新到目标数据库,再更新子表的数据,主表在子表之前完成数据更新,否则会出现数据引用异常。在将源数据库最新删除的数据更新到目标数据库时,先将子表的删除数据更新到目标数据库,再更新主表的删除数据,否则会导致出现孤立记录。
数据互换平台的应用***数据库中,数据表的量很大,数据表之间的关系错综复杂,本发明提出依托关系矩阵的数据表划分方法,提高数据互换***的可靠性与高效性。
2.依托关系矩阵的数据表划分方法
(1)算法原理
数据库***C的数据表集合为C={A1,A2,…,An-1,An},如果数据表Ai的主键是数据表Aj的外键(i≠j,i>0,j<n),则Ai,Aj存在依托关系Ai→Aj,对应数据表的关系,Ai为被引用表,Aj为引用表,若数据表Ai与其他任何表不存在依托关系,则为散离表,散离表的依托层次数A=0;对于依托关系(Ai→Aj,Aj→Ak),有ak=aj+1=ai+2,ai为数据表Ai的依托等级。依托关系矩阵的数据表划分方法按依托等级由低到高对数据表进行划分,依托等级最低数据表优先抽取。
(2)算法实现
依托关系矩阵的数据表划分方法构建一个数据库表间依托关系矩阵,具体实现过程为:
过程一,数据库表间依托关系矩阵的构建,对于数据库***C中的的n张数据表A1,A2,…,An-1,An,构建数据库***C的表间依托关系矩阵,其中,当数据表Ai,Aj存在依托关系Ai→Aj时,Aij=1;当不存在依托关系Ai→Aj时,Aij=0;
过程二,根据生成的表间关系依托矩阵,计算每张数据表的依托等级ai,遍历矩阵的每一列,将该列的每一行元素的值相加,得到该列对应数据表的依托等级,即ai=0的数据表为依托等级最低的数据表,将它们划分出来;
过程三,关系矩阵的修正,对于划分出来的数据表,删除其对应矩阵的行和列;
过程四,继续划分,重复过程二,直到矩阵划分结束。
(二)关系数据库向JS对象简谱的映射
实现异构数据互换的关键性问题是实现关系数据库与转换文本格式的映射,现有技术两种常用的实现方式,基于模板驱动的映射和基于模型驱动的映射。基于模板驱动映射的方法简单,通过使用SQL语句嵌入模板,利用执行该模板实现数据转换,这种方式能快速生成XML文档,但没有考虑关系模式中的约束条件,破坏了数据的完整性,基于模型驱动的映射保存了关系数据库中的关系模式,保证了数据的完整性不被破坏,但这两种映射技术都是关系数据库与XML文档的实现方式。
对于关系数据库与JS对象简谱文档的映射,本发明提出一种基于数据字典的资源映射方法,本发明采用RESTful服务实现数据互换平台,把关系数据库中的每一张数据表都看作是资源,对数据表的映射看作是对资源的映射,实现数据表的连通性。
1.JS对象简谱格式的数据字典
JS对象简谱格式的数据字典是用JS对象简谱格式来表示每一个资源的描述结构,构建JS对象简谱格式的数据字典是保证关系数据库中的关系模式的映射,关系模式的映射包括两个方面:
方面一:结构映射,结构映射必须保证一张数据表的实体完整性,关系模式中的数据表名、字段属性、各字段属性的约束信息完整的映射到JS对象简谱文档中;
方面二:约束映射,约束映射是数据表之间的引用关系映射到JS对象简谱文档中去。
JS对象简谱格式的数据字典保证关系模式的结构映射与约束映射,数据表资源的JS对象简谱格式数据字典描述分为三个部分,分别为:资源描述、数据表结构描述、数据描述。
资源描述是JS对象简谱格式数据字典的元描述,所有资源的描述都包括这一部分,资源描述信息包括:资源名称、关键字、资源发布日期、资源类型、资源标识符。
数据表结构描述包括:数据表名、数据表类型、字段信息、主键信息、外键信息。
数据描述是对数据表中每一条数据记录的描述,包括数据名与数据值。
2.基于数据字典的资源映射方法
基于数据字典的资源映射方法按照数据表JS对象简谱格式数据字典的描述,实现关系数据库与JS对象简谱的映射,基于依托关系矩阵的数据表划分方法,具体算法描述为:
第一步,对要实现数据互换的数据表采用依托关系矩阵的数据表划分方法进行划分,先对第一层划分的数据表进行资源映射;
第二步,首先映射资源的描述;
第三步,再映射数据表结构的描述;
第四步,最后映射数据的描述;
第五步,依次对下一层划分的数据表进行资源映射,重复第二步、第三步、第四步,直到最后一层划分结束。
(三)异构数据间转换
应用***之间异构数据的转换是实现数据互换的难点,具体的异构表现主要在以下两个方面:一是语义表达的不同,不同的数据库***对相同的信息数据的存储格式不同,对相同含义的信息在不同数据库中采用了不同的字段存储;二是数据类型的不同,相同的数据在不同的数据库***中有不同的数据类型的表示形式,按照转换方式的不同,将数据转换分为属性转换与类型转换。
1.属性间转换
属性转换解决异构数据语义表达不同的问题,数据互换平台根据源数据表和目标数据表的字段信息,构建两者之间字段属性的映射关系。字段属性的映射关系采用JS对象简谱来存储,JS对象简谱是以名称/值对(name/value)的形式存储数据,每个name映射一个value,按name进行访问,用name存储源数据表中的字段,value存储目标数据表中的字段,完成对异构数据字段属性映射关系的存储。
构建异构数据源之间数据表的字段属性映射关系后,通过解析映射关系的JS对象简谱片段,就能方便的对字段属性进行转换。
2.类型间转换
现有技术用XML数据映射表存储不同数据库***之间的类型映射关系,这种方法存在两个问题,第一,降低数据互换的通用性,当Oracle数据库与MySql数据库进行数据互换时,需构建Oracle与MySql类型映射关系文件,当Oracle数据库与SQLServer数据库进行数据互换时,又需要构建Oracle与SQLServer的类型映射关系文件,当接入一种新的数据库***时,又需要为它构建与之前接入的数据库***的类型映射关系文件,当有n种数据库***时,需构建映射关系文件类型多;第二,构建数据库类型映射关系的XML文件是为了便于基于XML的数据互换,而本发明的数据互换基于JS对象简谱,所以也不适合这种方式。
本发明采用数据表存储各种数据库数据类型的映射关系,增加一种数据库类型,添加一列即可,当表中没有要转换的数据类型时,添加一行即可。
基于数据表抽取顺序问题,提出依托关系矩阵的数据表划分方法,按依托等级对数据表进行抽取,保证数据的引用完整性;基于关系数据库向JS对象简谱的映射,提出基于数据字典的资源映射方法,将数据表的映射看作是对资源的映射,通过构建数据表JS对象简谱格式的数据字典,对资源、数据结构、数据进行描述,然后进行映射;异构数据转换中,对于属性转换与类型转换分别采用构建属性映射关系的JS对象简谱片段与数据库类型映射表来解决。
二、数据互换平台的设计
本发明设计基于RESTful与JS对象简谱数据互换平台,将数据互换平台分为用户端与服务器端两部分,用户端与服务器端通过HTTP协议进行通信,用JS对象简谱作为响应主体,数据互换服务器端采用核心与代理的模式,数据互换中心承担数据互换的核心功能,代理结点承担与不同数据源的交互,具有良好的扩展性和松耦合性。对数据互换中的资源设计唯一的URI,利用缓冲队列处理用户端的资源请求,日志服务与异常的恢复,用Jackson类库实现数据转换引擎,用JDBC技术实现与数据源的交互。
(一)总体设计
1.数据互换平台
数据互换平台解决应用***之间由于数据库***的不同,导致信息数据无法相互共享的问题,为异构***提供信息数据转换的服务平台。需要互换的数据包括三种形式:XML纯文本文档、EXCEL文档、关系数据库。本发明的数据互换平台主要针对关系数据库的数据互换。
假设有异构的两个应用***D、E,***D有数据data,采用格式JSONformat_D封装后构成数据集JSONformat_D(data),而***E只能识别格式JSONformat_E封装的数据,数据互换平台的作用通过数据转换引擎将数据集JSONformat_D(data)转换为数据集JSONformat_E(data),如下式所示:
JSONEngine(JSONformat_D(data))JSONformat_E(data)
其中JSONEngine表示数据转换引擎的函数。
2.平台模块设计
根据处理功能的不同,将数据互换平台分为三个平台模块:***通讯模块、核心业务模块与数据通讯模块。数据互换平台的平台模块如图1所示。***通讯模块主要承担与应用***的事件交互,将消息封装成HTTP请求报文并转发;核心业务模块是数据互换的核心模块,承担解析请求报文并处理、应用***注册、数据转换、控制管理,其中控制管理包括对请求消息的缓冲处理,对数据互换过程的监控和异常处理;数据通讯模块为核心业务提供数据服务,主要承担与数据源的直接交互,将交互数据转换为JS对象简谱格式后再返回给核心业务。
(二)数据互换平台的整体架构
本发明的数据互换平台DEP采用B/S的设计模式,由数据互换用户端DEB与数据互换服务器端DES两部分组成,其中DEB承担捕获应用***交互事件、请求消息转发,DES承担响应消息、数据转换、控制管理、与数据源的交互。整体架构图如图2所示。
1.服务模式
本发明的数据互换平台采用R-R模式,是一对一的数据互换模式,首先数据互换请求方通过数据互换平台请求获取相关的数据资源,互换平台找到对应的数据互换提供方,提供方再通过互换平台将数据资源反馈给请求方;由数据互换请求方主动发起,进行实时数据互换的模式。
2.数据互换流程
针对数据互换平台的整体架构图,整个数据互换的流程为:***D与***E为接入数据互换平台的异构***,***D为请求方,***E为提供方,***D要得到***E中的数据,就需要经过数据互换平台将***E中的数据转换为适应***D中的数据,具体流程为:
流程一,请求方***D向DEP发送要和***E进行数据互换的请求消息;
流程二,DEB捕获到***D的请求消息后,将请求消息重新封装成资源标识URI,然后通过HTTP协议的GET方法向DES获取请求资源;
流程三,DES根据请求资源的URI与数据源***进行交互,获得请求源数据,即***E的数据,并向DEB发送响应成功的消息;
流程四,DEB收到消息后,再向DES发送请求方***D的数据格式要求;
流程五,DES收到请求方的数据格式要求后,通过数据转换引擎将源数据转换为目标数据,并向DEB发送数据互换成功的消息;
流程六,DEB收到数据互换成功的消息后,数据互换过程结束;
整个数据互换流程中,DES都会进行监控与日志管理,保障互换流程的安全性和可靠性。
(三)数据互换用户端DEB设计
DEB主要捕获应用***的交互事件,将交互事件封装成可识别的资源URI。传统基于SOA数据互换平台捕获应用***交互事件在服务器端进行,而本发明采用RESTful Web服务与JS对象简谱数据格式,将捕获应用***交互事件放在用户端处理,首先能减轻服务器端的压力,同时也能提高数据交互的效率。理由如下:第一,REST在统一接口抽象、缓存服务器支持、连接性等诸多方面优势明显,使其***扩展性与简单程度都要优于SOAP,在基于REST的架构中,一切可看作是资源,把捕获的应用***交互事件进行封装,处理成为可识别的资源URI,使用HTTP协议进行访问即可;第二,传统数据互换平台采用XML作为文档格式,利用XSTL、XPath等技术对数据进行转换,由于XML格式本身复杂,数据转换效率低,本发明采用数据文档格式为JS对象简谱,JS对象简谱在数据解析与封装的效率都要优于XML,能大幅提高数据转换效率。
1.消息封装与资源标识
DEB将消息封装为可识别的资源标识URI,REST对资源的定义很广泛,资源不单纯指的是数据,还可以是函数、查询操作、资源之间的关系,皆可视为资源。DEB捕获交互事件后可知将要获得的资源。当识别出资源后,为资源设计唯一的URI标识,然后设计表述形式。
(1)资源划分
资源划分的前提是确定一个资源粒度,资源粒度的选取对应用***的识别资源效率影响巨大。若直接将应用***中的实体全部映射为资源,可能导致资源效率低下且难以使用。按粒度由细到粗将资源分为三种:
第一种,单体资源:单体资源单独作为一个实体存在,不存在从一个实体到另外一个同类实体的转移关系;
第二种,集合资源:集合资源是由多个单体资源组成的一个集合;
第三种,CRS资源:CRS是计算-关系-查询资源,单体资源与集合资源都属于领域实体的资源,CRS资源是这些领域实体之间的关系、查询操作以及资源间的计算抽象出来的资源。
数据互换***中,不同应用***选取粒度较细的单体资源,而主要的业务流程是对数据库的查询操作,选取粒度相对粗糙的CRS资源。
(2)设计URI
一个URI由以下内容组成:协议、主机、端口号、资源地址以及查询字符串。整体模式为:scheme://host:port/path?queryString。其中http标识协议名称,通常是HTTP或HTTPS;host表示主机名称或IP地址;port表示端口号;path表示资源的访问路径;queryString表示查询字符串,查询条件用&符号分割。URI的设计非常谨慎,如果设计不好,不但REST接口的风格无法统一,***的扩展性和易用性下降,也很难实现资源的准确定位。一个URI和HTTP方法可以唯一确定一个资源,但是一个资源可以具有多个URI。本发明设计URI时需注意以下四点。
1)层次结构
URI的设计首先考虑可读性与扩展性,采用层次结构。层次结构是资源之间的层次关系,对于每一个接入到数据互换平台的应用***都要对应数据结构注册相关的信息,数据互换平台中采用层次结构设计的URI包括:
①数据库类型为ORACLE,***编号为001的应用***,URI设计为:
http://example/DEService/node/ORACLE/001;
②数据库类型为ORACLE,***编号为001应用***的所有数据查询,URI设计为:
http://example/DEService/node/ORACLE/001/table_search;
③数据库类型为ORACLE,***编号为001应用***进行数据***,URI设计为:
http://example/DEService/node/ORACLE/001/table_insert;
同理,对于其他的资源,都采用这样的层次结构设计URI。
2)参数
对于集合资源与CRS资源,提供必要的参数完成请求。对于数据库类型为ORACLE,***编号为001的应用***中员工表的信息查询,查询参数tableName=employee,URI为:
http://example/DEService/node/ORACLE/001/table_search?tableName=employee
在URI中设置过滤参数的规则与Web浏览器中使用URL完全一样,使用“?”作为资源请求,“&”作为参数分隔,“=”作为参数赋值。
3)分页
集合资源或CRS资源有大量的数据返回,而一次性将这些结果返回给用户端是不现实的,会造成巨大的网络流量以及数据内存的开销,因此支持分页很有必要。分页功能的实现通过定义分页参数来完成,分页方式有以下两种:
①定义返回的页面数page和每页返回多少数据pagesize;
②定义从第几行开始startindex,共返回多少数据count。
4)排序
排序有两个参数,一个用来排序的字段sortOrder,一个是排序的升序降序方式sortField。
(3)设计表述
资源表述基于HTTP设计。
1)与HTTP协商
数据互换平台对HTTP请求报头进行协商,用户端向服务器发送的HTTP请求报头附加自身信息和与服务器协商的信息,协商信息包括:
①Accept-必填:指定表述的类型,表示用户端希望接受JS对象简谱文本;
②Accept-Charset-选填:用户端所接受的字符集,缺省表示可接受任何字符集;
③Accept-Encoding-选填:指定用户端进行编码的方式,缺省表示任何编码都可接受;
④Accept-Language-选填:指定使用何种语言进行本地化,缺省表示任何语言都可接受;
在数据互换平台的设计上,请求报头Accept域采用application/json,表示接受JS对象简谱文本,Accept-Charset、Accept-Encoding、Accept-Language域均采用缺省的形式。
2)JS对象简谱的表述
数据互换平台中对于应用***system资源的JS对象简谱表述,具体表述为:
此JS对象简谱代码是对编号为001的应用***的资源表述,包含指向自己的link。
(4)资源的状态转移
资源的状态转移是资源的增删查改CRUD,在REST中使用HTTP内置的方法(GET、POST、PUT、DELETE)进行CURD操作,使用HTTP方法进行CRUD的架构图如图3所示。
1)用户端向服务器端请求资源,使用GET方法向服务器端读取资源;
2)用户端给服务器端发送资源,使用POST方法向服务器端创建资源。
(四)数据互换服务器端DES设计
数据互换服务器端响应资源的HTTP(GET/POST/PUT/DELETE)请求,与数据源交互、数据转换、缓冲队列,数据互换的服务控制管理,将DES分为两部分:数据互换控制中心DECC与数据互换代理结点DEAN,DECC是DES的核心管理中心,承担响应资源的HTTP请求、数据转换、缓冲队列与控制管理,DEAN为DECC服务,承担与数据源的交互。DES的整体模型架构如图4所示。
数据互换服务器端的架构为星型结构,数据互换控制中心为架构中心,处于所有信息通道的中间,把对用户端的响应消息进行控制分发,交由指定的某个代理结点处理,再把处理后的数据重新封装,通过HTTP协议发送给用户端,代理结点承担与数据源的交互,每个代理结点承担一种数据库***的代理,代理结点向上为控制中心提供数据交互服务,它的底层实现对控制中心是透明的,这种低耦合性的结构,具有很强的扩展性,当增加一种数据库类型时,只需构建一个对应的代理结点连接到控制中心。
1.***注册
每个接入数据互换平台的应用***,都要在DES上注册其信息,主要的注册信息包括***编号、***信息、数据库类型、注册时间。注册接入的应用***的信息,是为了方便在数据互换过程中构建***间的数据连接,也便于找到对应的代理结点进行处理。
2.数据互换控制中心DECC
(1)DECC响应资源HTTP请求的方法
DECC响应资源的HTTP(GET/POST/PUT/DELETE)请求,和整个数据互换的控制管理,数据转换。DECC响应资源的HTTP请求的方法为:
1)DES收到DEB发送过来的HTTP请求后,交由DECC处理,DECC对HTTP请求进行解析获取相关信息,包括用户端想要获取的资源(资源标识URI)、HTTP方法、响应文本格式;
2)根据HTTP方法,DECC响应对应的请求逻辑,不同的HTTP方法响应不同的处理逻辑。
①响应HTTP GET的请求逻辑:public void get(Resource resource);
②响应HTTP POST的请求逻辑:public void post(Resource resource);
③响应HTTP PUT的请求逻辑:public void put(Resource resource);
④响应HTTP DELETE的请求逻辑:public void delete(Resource resource);
所有对资源请求的HTTP方法得到响应后被回调,将结果返回给用户端;
3)处理逻辑的具体实现交由对应数据互换代理结点DEAN完成;
4)DECC将DEAN返回的处理结果封装为HTTP响应报文发送给用户端。
(2)控制管理
DECC的控制管理包括缓冲队列的管理和服务监控。
1)缓冲队列
当应用***之间的数据互换量很大时,如果只发送一次HTTP请求来完成,会对数据互换服务器端造成极大的压力,也会带来巨大的流量开销。数据互换请求方把请求分为多个小的HTTP请求报文并发完成,用缓冲队列来控制处理HTTP请求报文的顺序与数量,同时,控制处理HTTP请求的顺序。
采用缓冲队列避免同时处理大量的HTTP请求,缓解服务器端的压力。由于要保证数据的一致性,保证HTTP请求的先进先处理,采用两个队列来实现缓冲队列,一个是empty队列用于存放预分配的缓冲区,另外一个是full队列,用于请求排队的等待区。工作原理为:每个HTTP请求都会先进入到等待区,等待进入缓冲区,服务器只会处理缓冲区里的请求,处理完缓冲区队头的请求后,将等待队列队头的请求放入到缓冲区的队尾。缓冲队列图如图5所示:
2)服务监控
服务监控是对数据互换过程的监控与管理,记录数据互换的日志,当数据在互换过程中发生瘫痪时及时回复,保证数据互换的正确性与安全性,服务监控包括两个部分:日志记录与异常处理,日志记录保存***在运行过程中的重要信息,异常处理保证***在出现异常时能及时恢复。为便于日志记录与异常处理,数据互换服务器端还有两种存储介质:DataStore、LogStore,DataStore存储数据互换的数据,包括服务器端从源***获取的数据,还有用户端传送给服务器端的数据;LogStore是一个控制器,记录每次操作的日志。在响应用户端的每次HTTP请求中,服务器端都会把数据与控制消息以可靠的方式存储,这样即使服务器发生故障重启,服务器也能根据日志记录进行恢复。
在logStore中存储一张日志记录表LOG,日志记录表中包括日志ID(LogID)、请求ID(Request_ID)、源***编号(SourceNum)、目标***编号(DestinationNum)、资源标识(URI)、HTTP方法(Method)、文本格式(TextFormat)、代理结点(AgentNode)、数据地址(DataAddress)、请求时间(RequestDate)、响应时间(ResponseDate)、请求状态(RequestStatus)、响应状态(ResponseStatus)、目前状态(TraceStatus)、错误信息(ErrorInfo)、重试次数(RetryTimes)、备注(Description)。
日志记录的过程:当数据互换服务器端收到用户端的一条HTTP请求时,控制中心在日志记录表中***一条记录,记录本次请求的基本信息,基本信息包括:请求ID、源***编号、目标***编号、文本格式、资源标识、代理结点、数据地址、HTTP方法、请求时间,当服务器做出响应后,更新该日志记录(响应时间、响应状态、目前状态),当请求正常完成后,删除本次请求在DataStore中的存储数据。
异常处理是当服务监控***收到一条异常消息时,根据日志记录表中的记录进行相应的处理。
(3)数据转换
DECC的数据转换是将源JS对象简谱数据转换为目的JS对象简谱数据,本发明采用JAVA语言实现JS对象简谱数据的转换,用Jackson类库实现数据转换引擎。数据转换引擎的过程是:JS对象简谱数据的解析、转换与封装,使用Jackson类库实现JS对象简谱数据的解析与封装,并利用异构数据转换的方法实现转换。
本发明的数据互换平台针对大数据量互换,采用Jackson类库实现JS对象简谱的序列化与反序列化。
1)使用Jackson类库将JAVA对象转换成JS对象简谱,调用JsonGenerator类的writeObject方法实现将bean对象转换为JS对象简谱对象;
2)使用Jackson类库将JS对象简谱转换为JAVA对象,使用ObjectMapper对象的readValue方法,这个方法需要提供两个参数,第一个参数是解析的JS对象简谱字符串,第二个参数是要转换的JAVA对象类型;
3)数据转换的过程,数据转换主要包括属性转换与类型转换两方面,通过Jackson类库的序列化与反序列JS对象简谱对象的方法,与类型映射关系表,得到目标数据表的JS对象简谱对象。
3.数据互换代理结点DEAN
(1)DEAN的中间件
数据互换代理结点DEAN是数据互换平台的主要组成部分,它是数据互换平台与应用***数据源之间连接的桥梁,是一个中间件,异构数据源间的具体数据交互都通过它来完成,各个异构数据源之间不需要知道彼此所在的位置,控制中心将数据请求发送给代理结点,代理结点完成响应的数据交互。DEAN向上(控制中心)提供统一的访问接口,向下(数据源)实现分而治之,每个代理结点承担一种数据库***的代理,代理结点与互换中心形成一个星型结构,适应数据源可能的频繁变换,当新增一种类型的数据库***时,只需添加一个对应的代理结点连接到DECC,能够保证良好的***扩展性。
(2)与数据源的交互
代理结点与数据源的交互通过JDBC数据库驱动程序实现,通过执行SQL语句实现对各种关系数据库的访问,主要交互动作有:采集数据、生成数据。具体步骤为:
1)加载JDBC驱动程序,在连接数据库前,首先加载想要连接的数据库的驱动到JVM,通过java.lang.Class的静态方法forName(String className)实现;
2)创建数据库的连接,连接数据库需要获取数据库的连接路径url、数据库用户名username,数据库密码password,然后通过向java.sql.DriverManager请求获取一个Connection对象,一个Connection对象代表一个数据库的连接;
Connection con=DriverManager.getConnection(url,username,password);
3)数据交互,主要包括采集数据与生成数据,采集数据采集源数据库中数据的各种信息,包括数据表的结构信息(字段、主键、外键、索引)以及具体的数据,生成数据是在目标数据库中创建数据库表和***相应数据,其中获取和***数据表数据以及创建数据库表用简单的SQL语句执行,获取数据库表的结构信息是利用java.sql.DatabaseMeteData类获取数据库表的相关结构信息,具体实现为:
获取数据库表的结构信息:
①获取当前数据库中表的信息:通过getTables()方法返回的结果集获取表的10个描述信息,包括:表所在编目TABLE_CAT、表所在模式TABLE_SCHEM、表名称TABLE_NAME、表类型TABLE_TYPE、解释性备注REMARKS、编目类型TYPE_CAT、模式类型TYPE_SCHEM、类型名称TYPE_NAME、指定行名称SELF_REFERENCING_COL_NAME、指定行值REF_GENNERATION;
②获取数据表中每个字段的信息:通过getColumns()方法返回的结果集中的每一列的23个字段描述信息,用到的有表名称TABLE_NAME、列名COLUMN_NAME、列的数据类型DATA_TYPE;
③获取数据表的主键信息:
dbmd.getPrimaryKeys(Stringcatalog,Stringschema,Stringtable);
④获取数据表的外键信息:
Dbmd.getExportedKeys(Stringcatalog,Stringschema,Stringtable)。
本发明将数据互换平台分为数据互换用户端与数据互换服务器端两个平台模块,详细设计了它们的工作方式和功能实现,包括资源标识、控制管理、数据转换、数据交互功能。针对目前异构***间数据互换量越来越庞大,互换方式日益复杂的问题,本发明提出一种对现有技术数据互换方式的改进方法,用JS对象简谱代替XML作为数据互换格式,采用RESTful服务架构设计实现数据互换平台,给出了具体的平台模型设计,并设计了主要平台模块的实现方式。整个数据互换平台的设计分为数据互换用户端DEB与数据互换服务器端DES,用户端承担捕获应用***的交互事件,DES承担响应处理数据交互的请求,数据互换服务器端采用核心与代理的星型结构模型,数据互换控制中心DECC是整个服务器端的中心,各个数据互换代理结点DEAN为DECC提供不同数据库***的数据交互服务,整个模型结构具有很强的低耦合性与扩展性。
Claims (10)
1.RESTful服务驱动的JS对象简谱数据互换平台,其特征在于,包括数据互换中的创新方法和数据互换平台的设计;用JS对象简谱代替XML作为数据互换格式,采用RESTful服务架构设计实现数据互换平台,给出了具体的平台模型设计,并设计了主要平台模块的实现方式,整个数据互换平台的设计分为数据互换用户端DEB与数据互换服务器端DES,用户端承担捕获应用***的交互事件,DES承担响应处理数据交互的请求,数据互换服务器端采用核心与代理的星型结构模型,数据互换控制中心DECC是整个服务器端的中心,各个数据互换代理结点DEAN为DECC提供不同数据库***的数据交互服务;
数据互换中的创新方法:基于数据表抽取顺序问题,提出依托关系矩阵的数据表划分方法,按依托等级对数据表进行抽取,保证数据的引用完整性;基于关系数据库向JS对象简谱的映射,提出基于数据字典的资源映射方法,将数据表的映射看作是对资源的映射,通过构建数据表JS对象简谱格式的数据字典,对资源、数据结构、数据进行描述,然后进行映射;异构数据转换中,对于属性转换与类型转换分别采用构建属性映射关系的JS对象简谱片段与数据库类型映射表来解决;
数据互换平台的设计:将数据互换平台分为用户端与服务器端两部分,用户端与服务器端通过HTTP协议进行通信,用JS对象简谱作为响应主体,数据互换服务器端采用核心与代理的模式,数据互换中心承担数据互换的核心功能,代理结点承担与不同数据源的交互,对数据互换中的资源设计唯一的URI,利用缓冲队列处理用户端的资源请求,日志服务与异常的恢复,用Jackson类库实现数据转换引擎,用JDBC技术实现与数据源的交互。
2.根据权利要求1所述的RESTful服务驱动的JS对象简谱数据互换平台,其特征在于,依托关系矩阵的数据表划分方法的算法原理:数据库***C的数据表集合为C={A1,A2,…,An-1,An},如果数据表Ai的主键是数据表Aj的外键(i≠j,i>0,j<n),则Ai,Aj存在依托关系Ai→Aj,对应数据表的关系,Ai为被引用表,Aj为引用表,若数据表Ai与其他任何表不存在依托关系,则为散离表,散离表的依托层次数A=0;对于依托关系(Ai→Aj,Aj→Ak),有ak=aj+1=ai+2,ai为数据表Ai的依托等级,依托关系矩阵的数据表划分方法按依托等级由低到高对数据表进行划分,依托等级最低数据表优先抽取;
依托关系矩阵的数据表划分方法实现:依托关系矩阵的数据表划分方法构建一个数据库表间依托关系矩阵,具体实现过程为:
过程一,数据库表间依托关系矩阵的构建,对于数据库***C中的的n张数据表A1,A2,…,An-1,An,构建数据库***C的表间依托关系矩阵,其中,当数据表Ai,Aj存在依托关系Ai→Aj时,Aij=1;当不存在依托关系Ai→Aj时,Aij=0;
过程二,根据生成的表间关系依托矩阵,计算每张数据表的依托等级ai,遍历矩阵的每一列,将该列的每一行元素的值相加,得到该列对应数据表的依托等级,即ai=0的数据表为依托等级最低的数据表,将它们划分出来;
过程三,关系矩阵的修正,对于划分出来的数据表,删除其对应矩阵的行和列;
过程四,继续划分,重复过程二,直到矩阵划分结束。
3.根据权利要求1所述的RESTful服务驱动的JS对象简谱数据互换平台,其特征在于,基于数据字典的资源映射方法按照数据表JS对象简谱格式数据字典的描述,实现关系数据库与JS对象简谱的映射,基于依托关系矩阵的数据表划分方法,具体算法描述为:
第一步,对要实现数据互换的数据表采用依托关系矩阵的数据表划分方法进行划分,先对第一层划分的数据表进行资源映射;
第二步,首先映射资源的描述;
第三步,再映射数据表结构的描述;
第四步,最后映射数据的描述;
第五步,依次对下一层划分的数据表进行资源映射,重复第二步、第三步、第四步,直到最后一层划分结束。
4.根据权利要求1所述的RESTful服务驱动的JS对象简谱数据互换平台,其特征在于,异构数据间转换:按照转换方式的不同,将数据转换分为属性转换与类型转换;
属性间转换:解决异构数据语义表达不同的问题,数据互换平台根据源数据表和目标数据表的字段信息,构建两者之间字段属性的映射关系,字段属性的映射关系采用JS对象简谱来存储,JS对象简谱是以名称/值对的形式存储数据,每个name映射一个value,按name进行访问,用name存储源数据表中的字段,value存储目标数据表中的字段,完成对异构数据字段属性映射关系的存储;构建异构数据源之间数据表的字段属性映射关系后,通过解析映射关系的JS对象简谱片段,就能方便的对字段属性进行转换;
类型间转换:采用数据表存储各种数据库数据类型的映射关系,增加一种数据库类型,添加一列即可,当表中没有要转换的数据类型时,添加一行即可。
5.根据权利要求1所述的RESTful服务驱动的JS对象简谱数据互换平台,其特征在于,数据互换平台主要针对关系数据库的数据互换,假设有异构的两个应用***D、E,***D有数据data,采用格式JSONformat_D封装后构成数据集JSONformat_D(data),而***E只能识别格式JSONformat_E封装的数据,数据互换平台的作用通过数据转换引擎将数据集JSONformat_D(data)转换为数据集JSONformat_E(data),如下式所示:
JSONEngine(JSONformat_D(data))JSONformat_E(data)
其中JSONEngine表示数据转换引擎的函数;
根据处理功能的不同,将数据互换平台分为三个平台模块:***通讯模块、核心业务模块与数据通讯模块,***通讯模块主要承担与应用***的事件交互,将消息封装成HTTP请求报文并转发;核心业务模块是数据互换的核心模块,承担解析请求报文并处理、应用***注册、数据转换、控制管理,其中控制管理包括对请求消息的缓冲处理,对数据互换过程的监控和异常处理;数据通讯模块为核心业务提供数据服务,主要承担与数据源的直接交互,将交互数据转换为JS对象简谱格式后再返回给核心业务。
6.根据权利要求1所述的RESTful服务驱动的JS对象简谱数据互换平台,其特征在于,数据互换平台DEP采用B/S的设计模式,由数据互换用户端DEB与数据互换服务器端DES两部分组成,其中DEB承担捕获应用***交互事件、请求消息转发,DES承担响应消息、数据转换、控制管理、与数据源的交互;
服务模式:采用R-R模式,是一对一的数据互换模式,首先数据互换请求方通过数据互换平台请求获取相关的数据资源,互换平台找到对应的数据互换提供方,提供方再通过互换平台将数据资源反馈给请求方;由数据互换请求方主动发起,进行实时数据互换;
数据互换流程:***D与***E为接入数据互换平台的异构***,***D为请求方,***E为提供方,***D要得到***E中的数据,经过数据互换平台将***E中的数据转换为适应***D中的数据,具体流程为:
流程一,请求方***D向DEP发送要和***E进行数据互换的请求消息;
流程二,DEB捕获到***D的请求消息后,将请求消息重新封装成资源标识URI,然后通过HTTP协议的GET方法向DES获取请求资源;
流程三,DES根据请求资源的URI与数据源***进行交互,获得请求源数据,即***E的数据,并向DEB发送响应成功的消息;
流程四,DEB收到消息后,再向DES发送请求方***D的数据格式要求;
流程五,DES收到请求方的数据格式要求后,通过数据转换引擎将源数据转换为目标数据,并向DEB发送数据互换成功的消息;
流程六,DEB收到数据互换成功的消息后,数据互换过程结束;
整个数据互换流程中,DES进行监控与日志管理,保障互换流程的安全性和可靠性。
7.根据权利要求1所述的RESTful服务驱动的JS对象简谱数据互换平台,其特征在于,数据互换用户端DEB设计主要为消息封装与资源标识,DEB将消息封装为可识别的资源标识URI,DEB捕获交互事件后可知将要获得的资源,当识别出资源后,为资源设计唯一的URI标识,然后设计表述形式;
资源划分的前提是确定一个资源粒度,按粒度由细到粗将资源分为三种:
第一种,单体资源:单体资源单独作为一个实体存在,不存在从一个实体到另外一个同类实体的转移关系;
第二种,集合资源:集合资源是由多个单体资源组成的一个集合;
第三种,CRS资源:CRS是计算-关系-查询资源,单体资源与集合资源都属于领域实体的资源,CRS资源是这些领域实体之间的关系、查询操作以及资源间的计算抽象出来的资源;
数据互换***中,不同应用***选取粒度较细的单体资源,而主要的业务流程是对数据库的查询操作,选取粒度相对粗糙的CRS资源。
8.根据权利要求7所述的RESTful服务驱动的JS对象简谱数据互换平台,其特征在于,一个URI由以下内容组成:协议、主机、端口号、资源地址以及查询字符串,整体模式为:scheme://host:port/path?queryString,其中http标识协议名称,通常是HTTP或HTTPS;host表示主机名称或IP地址;port表示端口号;path表示资源的访问路径;queryString表示查询字符串,查询条件用&符号分割,本发明设计URI时注意以下四点:
1)层次结构
URI的设计首先考虑可读性与扩展性,采用层次结构,层次结构是资源之间的层次关系,对于每一个接入到数据互换平台的应用***都要对应数据结构注册相关的信息,数据互换平台中采用层次结构设计的URI包括:
①数据库类型为ORACLE,***编号为001的应用***,URI设计为:
http://example/DEService/node/ORACLE/001;
②数据库类型为ORACLE,***编号为001应用***的所有数据查询,URI设计为:
http://example/DEService/node/ORACLE/001/table_search;
③数据库类型为ORACLE,***编号为001应用***进行数据***,URI设计为:
http://example/DEService/node/ORACLE/001/table_insert;
同理,对于其他的资源,都采用这样的层次结构设计URI;
2)参数
对于集合资源与CRS资源,提供必要的参数完成请求,对于数据库类型为ORACLE,***编号为001的应用***中员工表的信息查询,查询参数tableName=employee,URI为:
http://example/DEService/node/ORACLE/001/table_search?tableName=employee
在URI中设置过滤参数的规则与Web浏览器中使用URL完全一样,使用“?”作为资源请求,“&”作为参数分隔,“=”作为参数赋值;
3)分页
分页的实现通过定义分页参数来完成,分页方式有以下两种:
①定义返回的页面数page和每页返回多少数据pagesize;
②定义从第几行开始startindex,共返回多少数据count;
4)排序
排序有两个参数,一个用来排序的字段sortOrder,一个是排序的升序降序方式sortField。
9.根据权利要求1所述的RESTful服务驱动的JS对象简谱数据互换平台,其特征在于,资源表述基于HTTP设计,数据互换平台对HTTP请求报头进行协商,用户端向服务器发送的HTTP请求报头附加自身信息和与服务器协商的信息,协商信息包括:
①Accept-必填:指定表述的类型,表示用户端希望接受JS对象简谱文本;
②Accept-Charset-选填:用户端所接受的字符集,缺省表示可接受任何字符集;
③Accept-Encoding-选填:指定用户端进行编码的方式,缺省表示任何编码都可接受;
④Accept-Language-选填:指定使用何种语言进行本地化,缺省表示任何语言都可接受;
在数据互换平台的设计上,请求报头Accept域采用application/json,表示接受JS对象简谱文本,Accept-Charset、Accept-Encoding、Accept-Language域均采用缺省的形式;
资源的状态转移是资源的增删查改CRUD,在REST中使用HTTP内置的方法(GET、POST、PUT、DELETE)进行CURD操作:
1)用户端向服务器端请求资源,使用GET方法向服务器端读取资源;
2)用户端给服务器端发送资源,使用POST方法向服务器端创建资源。
10.根据权利要求1所述的RESTful服务驱动的JS对象简谱数据互换平台,其特征在于,数据互换服务器端DES设计:每个接入数据互换平台的应用***,都要在DES上注册其信息,主要的注册信息包括***编号、***信息、数据库类型、注册时间;
DECC响应资源的HTTP请求,和整个数据互换的控制管理,数据转换,DECC响应资源的HTTP请求的方法为:
1)DES收到DEB发送过来的HTTP请求后,交由DECC处理,DECC对HTTP请求进行解析获取相关信息,包括用户端想要获取的资源、HTTP方法、响应文本格式;
2)根据HTTP方法,DECC响应对应的请求逻辑,不同的HTTP方法响应不同的处理逻辑:
①响应HTTP GET的请求逻辑:public void get(Resource resource);
②响应HTTP POST的请求逻辑:public void post(Resource resource);
③响应HTTP PUT的请求逻辑:public void put(Resource resource);
④响应HTTP DELETE的请求逻辑:public void delete(Resource resource);
所有对资源请求的HTTP方法得到响应后被回调,将结果返回给用户端;
3)处理逻辑的具体实现交由对应数据互换代理结点DEAN完成;
4)DECC将DEAN返回的处理结果封装为HTTP响应报文发送给用户端;
DECC的控制管理包括缓冲队列的管理和服务监控,缓冲队列:数据互换请求方把请求分为多个小的HTTP请求报文并发完成,用缓冲队列来控制处理HTTP请求报文的顺序与数量,同时,控制处理HTTP请求的顺序,采用两个队列来实现缓冲队列,一个是empty队列用于存放预分配的缓冲区,另外一个是full队列,用于请求排队的等待区;工作原理为:每个HTTP请求都会先进入到等待区,等待进入缓冲区,服务器只会处理缓冲区里的请求,处理完缓冲区队头的请求后,将等待队列队头的请求放入到缓冲区的队尾;
服务监控包括两个部分:日志记录与异常处理,日志记录保存***在运行过程中的重要信息,异常处理保证***在出现异常时能及时恢复,数据互换服务器端还有两种存储介质:DataStore、LogStore,DataStore存储数据互换的数据,包括服务器端从源***获取的数据,还有用户端传送给服务器端的数据;LogStore是一个控制器,记录每次操作的日志,在响应用户端的每次HTTP请求中,服务器端都会把数据与控制消息以可靠的方式存储;
日志记录的过程:当数据互换服务器端收到用户端的一条HTTP请求时,控制中心在日志记录表中***一条记录,记录本次请求的基本信息,基本信息包括:请求ID、源***编号、目标***编号、文本格式、资源标识、代理结点、数据地址、HTTP方法、请求时间,当服务器做出响应后,更新该日志记录,当请求正常完成后,删除本次请求在DataStore中的存储数据;异常处理是当服务监控***收到一条异常消息时,根据日志记录表中的记录进行相应的处理;
DECC的数据转换是将源JS对象简谱数据转换为目的JS对象简谱数据,本发明采用JAVA语言实现JS对象简谱数据的转换,用Jackson类库实现数据转换引擎,数据转换引擎的过程是:JS对象简谱数据的解析、转换与封装,使用Jackson类库实现JS对象简谱数据的解析与封装,并利用异构数据转换的方法实现转换;
本发明的数据互换平台针对大数据量互换,采用Jackson类库实现JS对象简谱的序列化与反序列化:
1)使用Jackson类库将JAVA对象转换成JS对象简谱,调用JsonGenerator类的writeObject方法实现将bean对象转换为JS对象简谱对象;
2)使用Jackson类库将JS对象简谱转换为JAVA对象,使用ObjectMapper对象的readValue方法,这个方法需要提供两个参数,第一个参数是解析的JS对象简谱字符串,第二个参数是要转换的JAVA对象类型;
3)数据转换的过程,数据转换主要包括属性转换与类型转换两方面,通过Jackson类库的序列化与反序列JS对象简谱对象的方法,与类型映射关系表,得到目标数据表的JS对象简谱对象。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011536699.5A CN112612453A (zh) | 2020-12-23 | 2020-12-23 | RESTful服务驱动的JS对象简谱数据互换平台 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011536699.5A CN112612453A (zh) | 2020-12-23 | 2020-12-23 | RESTful服务驱动的JS对象简谱数据互换平台 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112612453A true CN112612453A (zh) | 2021-04-06 |
Family
ID=75244892
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011536699.5A Pending CN112612453A (zh) | 2020-12-23 | 2020-12-23 | RESTful服务驱动的JS对象简谱数据互换平台 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112612453A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114866609A (zh) * | 2022-07-08 | 2022-08-05 | 广州得一信息科技有限公司 | 一种基于统一信息模型的数据互联互通方法和装置 |
Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100083277A1 (en) * | 2008-09-30 | 2010-04-01 | Malladi Sastry K | System and method for processing messages using native data serialization/deserialization in a service-oriented pipeline architecture |
US20100274815A1 (en) * | 2007-01-30 | 2010-10-28 | Jonathan Brian Vanasco | System and method for indexing, correlating, managing, referencing and syndicating identities and relationships across systems |
US20110321010A1 (en) * | 2010-06-24 | 2011-12-29 | Yifei Wang | Web application framework based on object oriented class mapping |
US20130246996A1 (en) * | 2012-03-19 | 2013-09-19 | Enterpriseweb Llc | Declarative Software Application Meta-Model and System for Self-Modification |
CN103645951A (zh) * | 2013-12-19 | 2014-03-19 | 北京邮电大学 | 一种跨平台的移动数据管理***及其方法 |
CN103957174A (zh) * | 2014-05-16 | 2014-07-30 | 北京信诺瑞得软件***有限公司 | 语义交换机松耦合***进行信息处理的方法 |
CN104104738A (zh) * | 2014-08-06 | 2014-10-15 | 江苏瑞中数据股份有限公司 | 一种基于ftp的数据交换*** |
US20140372970A1 (en) * | 2013-06-13 | 2014-12-18 | International Business Machines Corporation | Method to auto generate jax-rs rest service implementation classes from existing interfaces |
US20160077853A1 (en) * | 2014-09-17 | 2016-03-17 | StrongLoop, Inc | Method of defining javascript objects |
CN105867948A (zh) * | 2016-04-26 | 2016-08-17 | 江苏物联网研究发展中心 | 基于AJAX和SpringMVC的WEB开发方法 |
CN106155697A (zh) * | 2016-07-30 | 2016-11-23 | 北京慧摩尔科技有限公司 | 一种面向服务的开发框架(YC‑Framework) |
US9720750B1 (en) * | 2016-09-23 | 2017-08-01 | International Business Machines Corporation | Invoking a restricted access service through a restful interface |
US10552443B1 (en) * | 2016-08-11 | 2020-02-04 | MuleSoft, Inc. | Schemaless to relational representation conversion |
CN110825388A (zh) * | 2019-11-15 | 2020-02-21 | 中科院计算技术研究所大数据研究院 | 一种将sql语句直接转换为对应rest接口的方法 |
-
2020
- 2020-12-23 CN CN202011536699.5A patent/CN112612453A/zh active Pending
Patent Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100274815A1 (en) * | 2007-01-30 | 2010-10-28 | Jonathan Brian Vanasco | System and method for indexing, correlating, managing, referencing and syndicating identities and relationships across systems |
US20100083277A1 (en) * | 2008-09-30 | 2010-04-01 | Malladi Sastry K | System and method for processing messages using native data serialization/deserialization in a service-oriented pipeline architecture |
US20110321010A1 (en) * | 2010-06-24 | 2011-12-29 | Yifei Wang | Web application framework based on object oriented class mapping |
US20130246996A1 (en) * | 2012-03-19 | 2013-09-19 | Enterpriseweb Llc | Declarative Software Application Meta-Model and System for Self-Modification |
US20140372970A1 (en) * | 2013-06-13 | 2014-12-18 | International Business Machines Corporation | Method to auto generate jax-rs rest service implementation classes from existing interfaces |
CN103645951A (zh) * | 2013-12-19 | 2014-03-19 | 北京邮电大学 | 一种跨平台的移动数据管理***及其方法 |
CN103957174A (zh) * | 2014-05-16 | 2014-07-30 | 北京信诺瑞得软件***有限公司 | 语义交换机松耦合***进行信息处理的方法 |
CN104104738A (zh) * | 2014-08-06 | 2014-10-15 | 江苏瑞中数据股份有限公司 | 一种基于ftp的数据交换*** |
US20160077853A1 (en) * | 2014-09-17 | 2016-03-17 | StrongLoop, Inc | Method of defining javascript objects |
US20180107501A1 (en) * | 2014-09-17 | 2018-04-19 | International Business Machines Corporation | Instantiation of javascript object |
CN105867948A (zh) * | 2016-04-26 | 2016-08-17 | 江苏物联网研究发展中心 | 基于AJAX和SpringMVC的WEB开发方法 |
CN106155697A (zh) * | 2016-07-30 | 2016-11-23 | 北京慧摩尔科技有限公司 | 一种面向服务的开发框架(YC‑Framework) |
US10552443B1 (en) * | 2016-08-11 | 2020-02-04 | MuleSoft, Inc. | Schemaless to relational representation conversion |
US9720750B1 (en) * | 2016-09-23 | 2017-08-01 | International Business Machines Corporation | Invoking a restricted access service through a restful interface |
CN110825388A (zh) * | 2019-11-15 | 2020-02-21 | 中科院计算技术研究所大数据研究院 | 一种将sql语句直接转换为对应rest接口的方法 |
Non-Patent Citations (3)
Title |
---|
LUKMAN LAMID IDOWU: "A Model and Architecture for Building a Sustainable National Open Government Data (OGD) Portal", ICEGOV \'18: PROCEEDINGS OF THE 11TH INTERNATIONAL CONFERENCE ON THEORY AND PRACTICE OF ELECTRONIC GOVERNANCE * |
赵夷平: "基于关联数据的机构知识库资源聚合与知识发现研究", 中国博士学位论文全文数据库 (信息科技辑) * |
邓玉龙;张岩;马玉鹏;: "基于REST架构的小额支付平台研究", 微电子学与计算机, no. 10 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114866609A (zh) * | 2022-07-08 | 2022-08-05 | 广州得一信息科技有限公司 | 一种基于统一信息模型的数据互联互通方法和装置 |
CN114866609B (zh) * | 2022-07-08 | 2022-09-30 | 广州得一信息科技有限公司 | 一种基于统一信息模型的数据互联互通方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11816126B2 (en) | Large scale unstructured database systems | |
JP6602355B2 (ja) | クラウドベースの分散永続性及びキャッシュデータモデル | |
Schram et al. | MySQL to NoSQL: data modeling challenges in supporting scalability | |
JP4814628B2 (ja) | データ・アクセス・レイヤー・クラス・ジェネレータ | |
US10176225B2 (en) | Data processing service | |
Grover et al. | Hadoop Application Architectures: Designing Real-World Big Data Applications | |
JP5818394B2 (ja) | 大量データプラットフォームを操作するシステム及び方法 | |
CN102129469B (zh) | 一种面向虚拟实验的非结构化数据访问方法 | |
US20130006968A1 (en) | Data integration system | |
US20030101194A1 (en) | System and method for loading hierarchical data into relational database systems | |
CN106294695A (zh) | 一种面向实时大数据搜索引擎的实现方法 | |
CN109284435B (zh) | 面向互联网的用户交互痕迹捕获、存储和检索***及方法 | |
CN112612453A (zh) | RESTful服务驱动的JS对象简谱数据互换平台 | |
Ye | Research on the key technology of big data service in university library | |
Dhanda | Big data storage and analysis | |
US11803568B1 (en) | Replicating changes from a database to a destination and modifying replication capacity | |
Pokorný | XML in Enterprise Systems: Its Roles and Benefits | |
Feasel et al. | Connecting to Azure Blob Storage | |
Volminger | A comparison of Data Stores for the Online Feature Store Component: A comparison between NDB and Aerospike | |
Calvaresi | Building a Distributed Search System with Apache Hadoop and Lucene | |
Doraiswamy et al. | Reweaving the tapestry: Integrating database and messaging systems in the wake of new middleware technologies | |
Meng et al. | On Heterogeneous Database Integration Under the Scope of Web Service and Java | |
Ormenisan | Providing a Data Model to the CATS key-value store | |
Castrejon-Castillo | HAL Id: hal-01002695 | |
Zhang et al. | A Study on Knowledge Sharing System for Aviation Product Collaborative Design |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |