CN102521409A - 一种基于通信协议的数据库数据批量更新方法 - Google Patents

一种基于通信协议的数据库数据批量更新方法 Download PDF

Info

Publication number
CN102521409A
CN102521409A CN2011104454175A CN201110445417A CN102521409A CN 102521409 A CN102521409 A CN 102521409A CN 2011104454175 A CN2011104454175 A CN 2011104454175A CN 201110445417 A CN201110445417 A CN 201110445417A CN 102521409 A CN102521409 A CN 102521409A
Authority
CN
China
Prior art keywords
message
server
client
interface
communication
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.)
Granted
Application number
CN2011104454175A
Other languages
English (en)
Other versions
CN102521409B (zh
Inventor
董亚辉
白芸
刘淼
李健
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Kingbase Information Technologies Co Ltd
Original Assignee
Beijing Kingbase Information Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Kingbase Information Technologies Co Ltd filed Critical Beijing Kingbase Information Technologies Co Ltd
Priority to CN201110445417.5A priority Critical patent/CN102521409B/zh
Publication of CN102521409A publication Critical patent/CN102521409A/zh
Application granted granted Critical
Publication of CN102521409B publication Critical patent/CN102521409B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明公开了一种基于通信协议的数据库数据批量更新方法,包括以下步骤:步骤S1、所述客户端与所述服务器建立SSL连接,步骤S2、客户端与数据库服务器交互通信,完成数据的批量更新;步骤S3、客户端与数据库服务器断开SSL连接,其中,在步骤S2中,通过预处理SQL语句,声明一个PreparedStatement对象,用于在第一次执行SQL语句的过程中,将产生的SQL语句保存在服务器端,然后不断地向这条SQL语句发送所需要的数据。本发明采用对所有数据一次传输批量更新的方式,有利于缓解客户端批量更新数据给数据库服务器带来的压力。

Description

一种基于通信协议的数据库数据批量更新方法
技术领域
本发明涉及一种数据库数据批量更新方法,尤其涉及一种基于通信协议进行数据传输,从而实现数据库数据批量更新的方法,属于数据库应用技术领域。
背景技术
目前,在各种具体的数据库应用环境中,客户端往往需要对数据库服务器中的数据进行大批量更新。在现有技术中,客户端普遍采用将单条数据记录分别按不同的批次向服务器传输的数据更新方式。客户端/服务器之间每更新一批数据,都需要多次和服务器交互连接。这种数据更新方式显然不能满足海量数据库数据批量更新的要求。
在蒋毅、刘齐宏发表的论文《远程异构数据库数据同步的实现》(刊载于《计算机与现代化》2002年第10期)中,提出了一种批量数据更新的方案。它满足远程数据库间所要达到的数据同步,解决了通过频繁拨号的实时连接进行数据交换的弊端。但是,该技术方案所针对的数据库技术相对陈旧,适用范围比较有限。
另外,在申请号为200710099684.5的中国发明专利申请中,公开了一种数据更新的方法。该方法可应用于客户端与数据库服务器存储数据的同步更新,其中:对每个数据设置更新标识,客户端与数据库服务器相同存储数据的更新标识相同。数据更新的方法包括:客户端向数据库服务器发送数据更新请求,数据更新请求包括更新类别、与更新类别对应的客户端数据更新标识;当服务器接收到数据更新请求时,将更新请求中的客户端数据更新标识与其存储的本地数据更新标识进行比较,根据更新类别确定符合预定更新条件的更新数据,并向客户端发送包含更新数据信息的更新命令;客户端接收到的更新命令后,进行相应更新类别的数据更新。但是,客户端在更新一批数据过程中,会和服务器发生多次交互,势必会对数据库带来压力,造成数据更新过程时间延长,不利于数据库服务器和客户端之间数据的即时同步。
发明内容
针对现有技术所存在的不足,本发明所要解决的技术问题在于提供一种基于通信协议的数据库数据批量更新方法。该方法能够有效缓解数据库服务器的压力,提高数据库的更新效率。
为实现上述的发明目的,本发明采用下述的技术方案:
一种基于通信协议的数据库数据批量更新方法,客户端和服务器端分别具有报文处理接口和套接字通信接口,其特征在于包括以下步骤:
步骤S1、所述客户端与所述服务器建立SSL连接,
步骤S2、客户端与数据库服务器交互通信,完成数据的批量更新;
步骤S3、客户端与数据库服务器断开SSL连接,
其中,在步骤S2中,通过预处理SQL语句,声明一个PreparedStatement对象,用于在第一次执行SQL语句的过程中,将产生的SQL语句保存在服务器端,然后不断地向这条SQL语句发送所需要的数据。
优选的,在步骤S2中,还包括以下步骤:调用数据库系统中的语法分析模块解析预处理SQL语句中的表名、列名和占位符,根据占位符信息构造并存储批量更新值的数组。
本发明采用对所有数据一次传输批量更新的方式,减少了客户端与数据库服务器之间的交互次数,有利于缓解客户端批量更新数据给数据库服务器带来的压力。另一方面,本发明采用经过加密处理的通信协议传输数据,使数据传输过程更加安全可靠。
附图说明
下面结合附图和具体实施方式对本发明作进一步的详细说明。
图1是本发明中,客户端与数据库服务器对报文处理的整体框架示意图;
图2是本发明所提供的数据库数据批量更新方法的整体流程图;
图3是本发明中,预处理语句报文的处理流程示意图;
图4是本发明中,描述元信息报文的处理流程示意图;
图5是本发明中,绑定参数报文的处理流程示意图;
图6是本发明中,执行数据更新报文的处理流程示意图;
图7是本发明中,释放语句报文的处理流程示意图。
具体实施方式
在本发明的一个实施例中,利用客户端与数据库服务器之间建立的SSL(Secure Sockets Layer,安全套接层)协议进行数据传输。SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通信提供安全支持。SSL协议可以分为两层:SSL记录协议(SSL Record Protocol),建立在可靠的传输协议如TCP之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。SSL握手协议(SSL Handshake Protocol),建立在SSL记录协议之上,用于在实际的数据传输开始前,通信双方进行身份认证、协商加密算法、交换加密密钥等。在本发明的其它实施例中,客户端与数据库服务器之间也可以采用其它安全通信协议如安全超文本传输协议(S-HTTP)、安全交易技术协议(STT)、安全电子交易协议(SET)等进行数据传输,在此就不逐一说明了。
如图1所示,客户端安装有客户端报文处理接口和客户端socket(套接字)通信接口。客户端报文处理接口与客户端socket通信接口相互通信;数据库服务器安装有服务器报文处理接口和服务器socket通信接口,服务器报文处理接口与服务器socket通信接口相互通信。客户端socket通信接口与服务器socket通信接口相互通信。
客户端与数据库服务器均在socket通信基础上,依据报文时序处理报文,完成数据传输工作。客户端报文处理接口发送报文至客户端socket通信接口,客户端socket通信接口根据报文内容发送客户端通信报文至服务器socket通信接口,服务器socket通信接口接收到客户端通信报文后转给服务器报文处理接口。服务器报文处理接口处理接收到的客户端通信报文,处理完毕后,服务器报文处理接口发送数据库服务器报文至服务器socket通信接口,服务器socket通信接口根据报文内容向客户端socket通信接口发送数据库服务器通信报文,客户端端socket通信接口接收到数据库服务器通信报文后转给客户端报文处理接口,客户端报文处理接口解析处理数据库服务器通信报文。
在具体应用接口方面,本发明调用数据库通用接口ODBC完成数据库数据的批量更新,其中涉及的通信协议以及通信时序都封装在API内部实现。通信协议中包括各报文序列的内容结构以及通信交互时的报文时序。
在本发明中,用于数据传输的前端(客户端)报文有6种,后端(数据库服务器)报文有13种。具体的通信报文种类如下。
1.客户端通信报文:
解析,Parse(P);
绑定,Bind(B);
描述,Describe(D);
执行,Execute(E);
关闭,Close(C);
同步,Sync(S)。
2.数据库服务器通信报文:
解析完成,ParseComplete(1);
绑定完成,BindComplete(2);
参数信息,ParameterDescription(t);
结果集信息,RowDescription(T);
无结果集,NoData(n);
行最大值,DataRow(D);
入口暂停,PortalSuspended(s);
执行完成,CommandComplete(C);
关闭完成,CloseComplete(3);
空语句,EmptyQueryResponse(I);
错误信息,ErrorMessage;
警告信息,NoticeMessage;
准备就绪,ReadyforQuery(Z)。
本数据库数据批量更新方法的整体思路在于首先通过预处理SQL语句,声明一个PreparedStatement对象。该对象可以在第一次执行SQL语句的过程中,将产生的SQL语句保存在数据库端,然后不断地向这条SQL语句发送所需要的数据,这样PreparedStatment对象非常适合于多次执行相同的操作,如连续插入多条数据。
接下来,调用数据库系统中的语法分析模块解析预处理SQL语句中的表名、列名和占位符,根据占位符信息构造并存储批量更新值的数组。在调用绑定参数的过程中,把对应于占位符的相应值放入数组中的相应位置。在批量提交更新数据时,根据数据表名找到对应的文件名,根据连接属性中指定的文件编码格式、行分隔符、列分隔符,决定写入文件内容的格式。最后,遍历全部数组,将批量更新的记录写入文件中。
图2显示了本发明所提供的数据库数据批量更新方法的整体流程。具体步骤包括:步骤S1,客户端与数据库服务器建立SSL连接;步骤S2,按照预定的通信协议,客户端与数据库服务器交互通信,完成数据的批量更新;步骤S3,客户端与数据库服务器断开SSL连接。
在步骤S1中,客户端与数据库服务器建立SSL连接。在步骤S2中,根据预定的通信协议进行数据传输。客户端与数据库服务器之间的通信协议包括各报文序列的内容结构,并进一步包括了批量更新数据时的报文时序:发送预处理语句,描述元信息,绑定参数,执行数据更新,释放语句。按照上述步骤更新数据库数据后,断开客户端与数据库服务器之间的SSL连接(步骤S3),即可恢复到数据库的正常工作状态。
在步骤S2中,进一步包括如下的子步骤(即上述批量更新数据时的报文时序):
步骤S21,发送预处理语句,执行预处理操作。客户端向数据库服务器发送报文“解析Parse(P)”。报文内容包括要执行的SQL语句、需要绑定的参数数据类型、参数数据类型个数、以及命名的准备语句名称。数据库服务器收到该报文后,对SQL语句进行解析,并生成查询计划,最后向客户端发送报文“解析完成ParseComplete(1)”,结束预处理操作。
步骤S22,描述元信息。根据步骤S21的预处理结果,客户端向数据库服务器发送报文,报文内容包括准备语句标志、准备语句名称或入口标志、入口名称。服务器收到该报文后返回参数信息报文、结果集信息报文等信息。描述元信息结束后进入步骤S23。
在步骤S22中,描述元信息包括描述Statement对象元信息和描述入口(Portal)元信息两种情况。具体说明如下:
描述Statement对象元信息是指客户端向数据库服务器发送报文“描述Describe(D)”,报文内容包括准备语句标志‘S’(以下简称‘S’),以及预处理语句阶段命名的准备语句名称。服务器收到该报文后返回报文:“参数信息ParameterDescription(t)”,内容包括参数个数、参数数据类型;“结果集信息RowDescription(T)”,内容包括字段个数、每个字段的名称、字段所在的表ID、字段类型、字段类型大小以及格式代码等。
描述入口(Portal)元信息是指客户端向数据库服务器发送报文“描述Describe(D)”,报文内容包括入口标志‘P’(以下简称‘P’)以及入口名称。服务器收到该报文后返回报文“结果集信息RowDescription(T)”,内容包括字段个数、每个字段的名称、字段所在的表ID、字段类型、字段类型大小以及格式代码等。
步骤S23,绑定参数。根据在步骤S22中所描述的元信息,客户端发送报文“绑定Bind(B)”,报文内容包括入口(Portal)名称、准备语句名称的参数格式代码(文本或二进制)、参数格式代码个数、参数个数、每个参数的长度以及参数值、结果列格式代码个数以及结果列格式代码。数据库服务器收到该报文后会对语句信息、参数信息进行检查,无问题后会创建报文的命名入口(Named Portal),完成后向客户端发送报文“绑定完成BindComplete(2)”,报文绑定流程结束。以此类推,绑定多组参数后进入步骤S24。
步骤S24,执行数据更新。根据步骤S23所绑定的多组参数,客户端向数据库服务器发送报文“执行Execute(E)”,报文内容包括入口名称以及查询结果返回行最大值,服务器收到该报文后执行查询计划,并对结果集进行判断处理,最后向客户端发送报文“执行完成CommandComplete(C)”。执行数据更新操作结束,进入步骤S25。
步骤S25,执行释放操作。按照步骤S24中数据更新操作的结果,客户端向数据库服务器发送释放报文,报文内容包括入口标志、入口名称或准备语句标志、语句名称。数据库服务器收到该报文后释放解析进程,并向客户端发送报文结束释放,数据库更新流程结束。
在步骤S25中,释放操作包括释放入口和释放Statement对象两种情况。具体说明如下:
释放入口是指客户端向数据库服务器发送报文“释放Close(C)”,报文内容包括入口标志‘P’以及入口名称。数据库服务器收到该报文后,释放入口,并向客户端发送报文“关闭完成CloseComplete(3)”,结束释放入口。
释放Statement对象。客户端向数据库服务器发送报文“释放Close(C)”,报文内容包括准备语句标志‘S’以及预处理语句阶段命名的准备语句名称。数据库服务器收到该报文后释放Statement对象,并向客户端发送报文“释放完成CloseComplete(3)”,结束释放Statement对象。
参考图3所示的预处理语句报文的处理流程示意图,客户端向数据库服务器发送预处理语句报文包括如下步骤:
在步骤2101中,客户端报文处理接口向客户端socket通信接口发送客户端通信报文“解析Parse(P)”,预处理语句报文处理流程开始,发送后进入步骤2102;
在步骤2102中,客户端socket通信接口向服务器socket通信接口发送客户端通信报文“同步Sync(S)”,进入步骤2103;
在步骤2103中,服务器socket通信接口接受客户端socket通信接口发送的客户端通信报文并转给服务器报文处理接口,语句解析开始,进入步骤2104;
在步骤2104中,服务器报文处理接口判断所接收的客户端通信报文是否是空语句,如果不是空语句则进入步骤2105,如果是空语句则跳转进入步骤2106;
在步骤2105中,服务器报文处理接口根据步骤2104的结果继续判断服务器报文处理接口接收到的客户端通信报文是否有错误,如果没有错误则进入步骤2107,如果有错误将跳转进入步骤2108;
在步骤2106中,服务器报文处理接口根据步骤2104的结果向服务器socket通信接口发送数据库服务器通信报文“空语句EmptyQueryResponse(I)”,直接跳转进入步骤2114;
在步骤2107中,服务器报文处理接口根据步骤2105的结果继续判断服务器报文处理接口接收到的客户端通信报文是否有警告,如果有警告将跳转进入步骤2110,如果没有警告则进入步骤2109;
在步骤2108中,服务器报文处理接口根据步骤2105的结果向服务器socket通信接口发送数据库服务器通信报文“错误信息ErrorMessage(E)”,直接跳转进入步骤2114。
在步骤2109中,服务器报文处理接口根据步骤2107的结果做出数据库服务器通信报文“警告信息NoticeMessage(N)”,进入步骤2110;
在步骤2110中,服务器报文处理接口根据步骤2107或步骤2109的结果继续判断服务器报文处理接口接收到的客户端通信报文是否有指定语句名称,如果有指定语句名称则进入步骤2112,如果有指定语句名称将跳转进入步骤2111;
在步骤2111中,服务器报文处理接口根据步骤2109的结果,按照指定的名称生成PreparedStatement对象,进入步骤2113;
在步骤2112中,服务器报文处理接口根据步骤2109的结果,生成未命名的PreparedStatement对象,进入步骤2113;
在步骤2113中,服务器报文处理接口根据步骤2111或步骤2112的生成的语句向服务器socket通信接口发送数据库服务器通信报文“解析完成ParseComplete(1)”,进入步骤2114;
在步骤2114中,服务器socket通信接口根据步骤2106、步骤2108、或步骤2113的结果向客户端socket通信接口发送数据库服务器通信报文“准备就绪ReadyforQuery(Z)”,进入步骤2115;
在步骤2115中,客户端socket通信接口接收服务器socket通信接口发送的数据库服务器通信报文并转给客户端报文处理接口,进入步骤2116;
在步骤2116中,客户端报文处理接口解析接收到的数据库服务器通信报文,如果收到过E(错误信息)报文,则返回错误,如果没有收到过E(错误信息)报文则返回成功,预处理语句报文处理流程结束。
参考图4所示的描述元信息报文的处理流程示意图,客户端向数据库服务器发送报文描述元信息包括如下步骤:
在步骤2201中,客户端报文处理接口向客户端socket通信接口发送客户端通信报文“描述Describe(D)”,描述元信息报文处理流程开始,发送后进入步骤2202;
在步骤2202中,客户端socket通信接口向服务器socket通信接口发送客户端通信报文“同步Sync(S)”,进入步骤2203;
在步骤2203中,服务器socket通信接口接受客户端socket通信接口发送的客户端通信报文并转给服务器报文处理接口,语句解析开始,进入步骤2204;
在步骤2204中,服务器报文处理接口判断所接收的客户端通信报文是否是准备语句标志‘S’,如果是‘S’则进入步骤2205,如果不是‘S’则跳转至步骤2207;
在步骤2205中,服务器报文处理接口判断所接收的客户端通信报文是否存在Statement对象,如果存在Statement对象则进入步骤2207,如果不存在Statement对象则直接跳转至步骤2212;
在步骤2206中,服务器报文处理接口根据步骤2205的结果发送数据库服务器报文“参数信息ParameterDescription(t)”,进入步骤2209;
在步骤2207中,服务器报文处理接口判断所接收到的报文是否是入口标志‘P’,如果是‘P’则进入步骤2208,如果不是‘P’则直接跳转至步骤2212;
在步骤2208中,服务器报文处理接口判断所接收到的报文是否存在入口‘Portal’如果存在入口‘Portal’则进入步骤2209,如果不存在入口‘Portal’则直接跳转至步骤2212;
在步骤2209中,服务器报文处理接口根据步骤2206或步骤2206的结果判断所接收到的客户端通信报文是否有结果集,如果有结果集则进入步骤2210,如果没有结果集则跳转进入步骤2211;
在步骤2210中,服务器报文处理接口根据步骤2210结果向服务器socket通信接口发送数据库服务器通信报文“结果集信息RowDescription(T)”,进入步骤2213;
在步骤2211中,服务器报文处理接口根据步骤2209的结果向服务器socket通信接口发送数据库服务器通信报文“无结果集NoData(n)”,进入步骤2213;
在步骤2212中,服务器报文处理接口根据步骤2205、步骤2207或步骤2208的结果向服务器socket通信接口发送数据库服务器通信报文“错误信息ErrorMessage(E)”,进入步骤2213;
在步骤2213中,服务器socket通信接口根据步骤2205、步骤2211或步骤2212的报文向客户端socket通信接口发送数据库服务器通信报文“准备就绪ReadyforQuery(Z)”,进入步骤2214;
在步骤2214中,客户端socket通信接口接收服务器socket通信接口发送的数据库服务器通信报文并转给客户端报文处理接口,描述元信息报文处理流程结束。
图5为绑定参数报文的处理流程示意图。客户端向数据库服务器发送绑定参数报文的具体步骤如下:
在步骤2301中,客户端报文处理接口向客户端socket通信接口发送客户端通信报文“绑定Bind(B)”,绑定参数报文处理流程开始,发送后进入步骤2302;
在步骤2302中,客户端socket通信接口向服务器socket通信接口发送客户端通信报文“同步Sync(S)”,进入步骤2303;
在步骤2303中,服务器socket通信接口接受客户端socket通信接口发送的客户端通信报文并转送给服务器报文处理接口,绑定参数流程开始,进入步骤2304;
在步骤2304中,服务器报文处理接口判断所接收的客户端通信报文是否存在Statement对象,如果存在Statement对象则进入步骤2305,如果不存在Statement对象则直接跳转进入步骤2306;
在步骤2305中,服务器报文处理接口判断所接收的客户端通信报文中参数信息是否有错误,如果不存在错误则进入步骤2307,如果存在错误则跳转进入步骤2306;
在步骤2306中,服务器报文处理接口根据步骤2304或2305的结果向服务器socket通信接口发送数据库服务器通信报文“错误信息ErrorMessage(E)”,进入步骤2309;
在步骤2307中,服务器报文处理接口根据步骤2305中获得的参数信息创建命名入口(Named Portal),进入步骤2308;
在步骤2308中,服务器报文处理接口根据步骤2307中创建的命名入口向服务器socket通信接口发送数据库服务器通信报文“绑定完成BindComplete(2)”,进入步骤2309;
在步骤2309中,服务器socket通信接口根据步骤2306或步骤2308的数据库服务器通信报文向客户端socket通信接口发送数据库服务器通信报文“准备就绪ReadyforQuery(Z)”,进入步骤2310;
在步骤2310中,客户端socket通信接口接收服务器socket通信接口发送的数据库服务器通信报文,并转给客户端报文处理接口,进入步骤2311;
在步骤2311中,客户端报文处理接口解析接收到的数据库服务器通信报文,如果收到过E报文,则返回错误,如果没有收到过E报文则返回成功,执行绑定参数流程结束。
图6是执行数据更新报文的处理流程示意图。客户端向数据库服务器发送报文,执行数据批量更新的过程是这样的:
在步骤2401中,客户端报文处理接口向客户端socket通信接口发送客户端通信报文“执行Execute(E)”,数据批量更新流程开始执行,发送后进入步骤2402;
在步骤2402中,客户端socket通信接口向服务器socket通信接口发送客户端通信报文“同步Sync(S)”,进入步骤2403;
在步骤2403中,服务器socket通信接口接收客户端socket通信接口发送的客户端通信报文并转给服务器报文处理接口,执行语句开始,进入步骤2404;
在步骤2404中,服务器报文处理接口判断所接收的客户端通信报文是否是存在入口,如果存在入口则进入步骤2405,如果不存在入口则直接跳转进入步骤2406;
在步骤2405中,服务器报文处理接口继续判断所接收到的客户端通信报文是否存在执行错误,如果不存在执行错误,则进入步骤2307,如果存在执行错误则直接跳转进入步骤2406;
在步骤2406中,服务器报文处理接口根据步骤2404或步骤2305的结果向服务器socket通信接口发送数据库服务器通信报文“错误信息ErrorMessage(E)”,进入步骤2413;
在步骤2407中,服务器报文处理接口根据步骤2405的结果继续判断所接收到的客户端通信报文是否有结果集,如果有结果集则进入步骤2408,如果没有结果集则直接跳转进入步骤2409;
在步骤2408中,服务器报文处理接口根据步骤2407的结果继续判断所接收到的客户端通信报文是否已到达行尾,如果没有到达行尾,则进入步骤2410,如果已经到达行尾则直接跳转至步骤2409;
在步骤2409中,服务器报文处理接口根据步骤2407或步骤2408的结果向服务器socket通信接口发送数据库服务器通信报文“执行完毕CommandComplete(C)”,进入步骤2413;
在步骤2410中,服务器报文处理接口根据步骤2408的结果判断服务器报文处理接口接收到的客户端通信报文是否到达了行限制(rowlimit),如果没有达到行限制则进入步骤2411,如果达到行限制则跳转进入步骤2412;
在步骤2411中,服务器报文处理接口根据步骤2410的结果发送“行最大值DataRow(D)”返回至步骤2408,如此循环执行步骤2408至步骤2411,直至到达行尾;
在步骤2412中,服务器报文处理接口根据步骤2410的结果向服务器socket通信接口发送数据库服务器通信报文“入口暂停PortalSuspended(S)”;
在步骤2413中,服务器socket通信接口根据步骤2405、步骤2409或步骤2412的报文向客户端socket通信接口发送数据库服务器通信报文“准备就绪ReadyforQuery(Z)”,进入步骤2414;
在步骤2414中,客户端socket通信接口接收服务器socket通信接口发送的数据库服务器通信报文并转给客户端报文处理接口,进入步骤2415;
在步骤2415中,客户端报文处理接口解析接收到的数据库服务器通信报文,如果收到过E(错误信息)报文,则返回错误,如果没有收到过E(错误信息)报文则返回成功,数据批量更新流程执行结束。
在数据批量更新流程完成之后,继续执行释放操作。具体可以参考图7所示的释放语句报文处理流程:
在步骤2501中,客户端报文处理接口向客户端socket通信接口发送客户端通信报文“释放Close(C)”,释放语句报文处理流程开始,发送后进入步骤2502;
在步骤2502中,客户端socket通信接口根据步骤2501的报文信息向服务器socket通信接口发送客户端通信报文“同步Sync(S)”,进入步骤2503;
在步骤2503中,服务器socket通信接口接收客户端socket通信接口发出的客户端通信报文并转给服务器报文处理接口,语句解析开始,进入步骤2504;
在步骤2504中,服务器报文处理接口判断所接收的客户端通信报文是否是准备语句标志‘S’,如果是‘S’则进入步骤2505,如果不是‘S’则直接跳转至步骤2506;
在步骤2505中,服务器报文处理接口判断所接收的客户端通信报文是否存在Statement对象,如果存在Statement对象则进入步骤2508,如果不存在Statement对象则直接跳转至步骤2509;
在步骤2506中,服务器报文处理接口判断所接收的客户端通信报文是否是入口标志‘P’,如果是‘P’则进入步骤2507,如果不是‘P’则直接跳转至步骤2509;
在步骤2507中,服务器报文处理接口判断所接收的客户端通信报文是否存在入口‘Portal’如果存在入口‘Portal’则进入步骤2508,如果不存在入口‘Portal’则直接跳转至步骤2509;
在步骤2508中,服务器报文处理接口根据步骤2508的结果向服务器socket通信接口发送数据库服务器通信报文“释放完成CloseComplete(3)”,进入步骤2510;
在步骤2509中,服务器报文处理接口根据步骤2505、步骤2506或步骤2507的结果向服务器socket通信接口发送数据库服务器通信报文“错误信息ErrorMessage(E)”,进入步骤2510;
在步骤2510中,服务器socket通信接口根据步骤2508或步骤2509报文向客户端socket通信接口发送数据库服务器通信报文“准备就绪ReadyforQuery(Z)”,进入步骤2514;
在步骤2511中,客户端socket通信接口接收服务器socket通信接口发送的数据库服务器通信报文并转给客户端报文处理接口,释放语句报文处理流程结束。
利用本发明所提供的数据库数据批量更新方法,当客户端与数据库服务器之间需要批量更新数据时,客户端与数据库服务器根据预定的通信协议进行数据交互通信,通过准备预处理语句、绑定多组参数、执行数据更新等步骤完成数据的批量更新。在这个过程中,由于客户端与数据库服务器之间的通信协议中包括各报文序列的内容结构,保证了数据传输过程的安全可靠性;由于通信协议中也包括批量更新数据时的报文时序,提高了数据批量更新的执行效率。
上面对本发明所提供的基于通信协议的数据库数据批量更新方法进行了详细的说明。对本领域的一般技术人员而言,在不背离本发明实质精神的前提下对它所做的任何显而易见的改动,都将构成对本发明专利权的侵犯,将承担相应的法律责任。

Claims (9)

1.一种基于通信协议的数据库数据批量更新方法,客户端和服务器端分别具有报文处理接口和套接字通信接口,其特征在于包括以下步骤:
步骤S1、所述客户端与所述服务器建立SSL连接,
步骤S2、客户端与数据库服务器交互通信,完成数据的批量更新;
步骤S3、客户端与数据库服务器断开SSL连接,
其中,在步骤S2中,通过预处理SQL语句,声明一个PreparedStatement对象,用于在第一次执行SQL语句的过程中,将产生的SQL语句保存在服务器端,然后不断地向这条SQL语句发送所需要的数据。
2.如权利要求1所述的基于通信协议的数据库数据批量更新方法,其特征在于,
在步骤S2中,还包括以下步骤:调用数据库系统中的语法分析模块解析预处理SQL语句中的表名、列名和占位符,根据占位符信息构造并存储批量更新值的数组。
3.如权利要求2所述的基于通信协议的数据库数据批量更新方法,其特征在于,
在步骤S2中,还包括调用绑定参数的步骤:在调用绑定参数的过程中,把对应于所述占位符的相应值放入数组中的相应位置,
在批量提交更新数据时,根据数据表名找到对应的文件名,根据连接属性中指定的文件编码格式、行分隔符、列分隔符,决定写入文件内容的格式。
4.如权利要求1所述的基于通信协议的数据库数据批量更新方法,其特征在于,
在步骤S2中包括预处理步骤S21发送预处理语句,执行预处理操作:
客户端向服务器发送报文“解析Parse(P)”,
数据库服务器收到该报文后,对SQL语句进行解析,并生成查询计划,最后向客户端发送报文“解析完成ParseComplete(1)”,
结束预处理操作。
5.如权利要求1所述的基于通信协议的数据库数据批量更新方法,其特征在于,
在步骤S2中包括描述元信息的操作:
根据步骤S21的预处理结果,客户端向服务器发送报文,报文内容包括准备语句标志、准备语句名称或入口标志、入口名称。
6.如权利要求1所述的基于通信协议的数据库数据批量更新方法,其特征在于,
预处理语句报文的处理流程包括:
在步骤2101中,客户端报文处理接口向客户端套接字通信接口发送客户端通信报文“解析Parse(P)”,预处理语句报文处理流程开始;
在步骤2102中,客户端套接字通信接口向服务器套接字通信接口发送客户端通信报文“同步Sync(S)”;
在步骤2103中,服务器套接字通信接口接受客户端套接字通信接口发送的客户端通信报文并转给服务器报文处理接口,语句解析开始;
在步骤2104中,服务器报文处理接口判断所接收的客户端通信报文是否是空语句,如果不是空语句则进入步骤2105,如果是空语句则跳转进入步骤2106;
在步骤2105中,服务器报文处理接口根据步骤2104的结果继续判断服务器报文处理接口接收到的客户端通信报文是否有错误,如果没有错误则进入步骤2107,如果有错误将跳转进入步骤2108;
在步骤2106中,服务器报文处理接口根据步骤2104的结果向服务器套接字通信接口发送数据库服务器通信报文“空语句EmptyQueryResponse(I)”,直接跳转进入步骤2114;
在步骤2107中,服务器报文处理接口根据步骤2105的结果继续判断服务器报文处理接口接收到的客户端通信报文是否有警告,如果有警告将跳转进入步骤2110,如果没有警告则进入步骤2109;
在步骤2108中,服务器报文处理接口根据步骤2105的结果向服务器套接字通信接口发送数据库服务器通信报文“错误信息ErrorMessage(E)”,直接跳转进入步骤2114。
在步骤2109中,服务器报文处理接口根据步骤2107的结果做出数据库服务器通信报文“警告信息NoticeMessage(N)”,进入步骤2110;
在步骤2110中,服务器报文处理接口根据步骤2107或步骤2109的结果继续判断服务器报文处理接口接收到的客户端通信报文是否有指定语句名称,如果有指定语句名称则进入步骤2112,如果有指定语句名称将跳转进入步骤2111;
在步骤2111中,服务器报文处理接口根据步骤2109的结果,按照指定的名称生成PreparedStatement对象,进入步骤2113;
在步骤2112中,服务器报文处理接口根据步骤2109的结果,生成未命名的PreparedStatement对象,进入步骤2113;
在步骤2113中,服务器报文处理接口根据步骤2111或步骤2112的生成的语句向服务器套接字通信接口发送数据库服务器通信报文“解析完成ParseComplete(1)”;
在步骤2114中,服务器套接字通信接口根据步骤2106、步骤2108、或步骤2113的结果向客户端套接字通信接口发送数据库服务器通信报文“准备就绪ReadyforQuery(Z)”;
在步骤2115中,客户端套接字通信接口接收服务器套接字通信接口发送的数据库服务器通信报文并转给客户端报文处理接口;
在步骤2116中,客户端报文处理接口解析接收到的数据库服务器通信报文,如果收到过E(错误信息)报文,则返回错误,如果没有收到过E(错误信息)报文则返回成功,预处理语句报文处理流程结束。
7.如权利要求1所述的基于通信协议的数据库数据批量更新方法,其特征在于,
描述元信息报文的处理流程包括如下步骤:
在步骤2201中,客户端报文处理接口向客户端套接字通信接口发送客户端通信报文“描述Describe(D)”,描述元信息报文处理流程开始,发送后进入步骤2202;
在步骤2202中,客户端套接字通信接口向服务器套接字通信接口发送客户端通信报文“同步Sync(S)”,进入步骤2203;
在步骤2203中,服务器套接字通信接口接受客户端套接字通信接口发送的客户端通信报文并转给服务器报文处理接口,语句解析开始,进入步骤2204;
在步骤2204中,服务器报文处理接口判断所接收的客户端通信报文是否是准备语句标志‘S’,如果是‘S’则进入步骤2205,如果不是‘S’则跳转至步骤2207;
在步骤2205中,服务器报文处理接口判断所接收的客户端通信报文是否存在Statement对象,如果存在Statement对象则进入步骤2207,如果不存在Statement对象则直接跳转至步骤2212;
在步骤2206中,服务器报文处理接口根据步骤2205的结果发送数据库服务器报文“参数信息ParameterDescription(t)”,进入步骤2209;
在步骤2207中,服务器报文处理接口判断所接收到的报文是否是入口标志‘P’,如果是‘P’则进入步骤2208,如果不是‘P’则直接跳转至步骤2212;
在步骤2208中,服务器报文处理接口判断所接收到的报文是否存在入口‘Portal’如果存在入口‘Portal’则进入步骤2209,如果不存在入口‘Portal’则直接跳转至步骤2212;
在步骤2209中,服务器报文处理接口根据步骤2206或步骤2206的结果判断所接收到的客户端通信报文是否有结果集,如果有结果集则进入步骤2210,如果没有结果集则跳转进入步骤2211;
在步骤2210中,服务器报文处理接口根据步骤2210结果向服务器套接字通信接口发送数据库服务器通信报文“结果集信息RowDescription(T)”,进入步骤2213;
在步骤2211中,服务器报文处理接口根据步骤2209的结果向服务器套接字通信接口发送数据库服务器通信报文“无结果集NoData(n)”,进入步骤2213;
在步骤2212中,服务器报文处理接口根据步骤2205、步骤2207或步骤2208的结果向服务器套接字通信接口发送数据库服务器通信报文“错误信息ErrorMessage(E)”,进入步骤2213;
在步骤2213中,服务器套接字通信接口根据步骤2205、步骤2211或步骤2212的报文向客户端套接字通信接口发送数据库服务器通信报文“准备就绪ReadyforQuery(Z)”,进入步骤2214;
在步骤2214中,客户端套接字通信接口接收服务器套接字通信接口发送的数据库服务器通信报文并转给客户端报文处理接口,流程结束。
8.如权利要求1所述的基于通信协议的数据库数据批量更新方法,其特征在于,
客户端向数据库服务器发送报文,执行数据批量更新的步骤如下:
在步骤2401中,客户端报文处理接口向客户端套接字通信接口发送客户端通信报文“执行Execute(E)”,数据批量更新流程开始执行,发送后进入步骤2402;
在步骤2402中,客户端套接字通信接口向服务器套接字通信接口发送客户端通信报文“同步Sync(S)”,进入步骤2403;
在步骤2403中,服务器套接字通信接口接收客户端套接字通信接口发送的客户端通信报文并转给服务器报文处理接口,执行语句开始,进入步骤2404;
在步骤2404中,服务器报文处理接口判断所接收的客户端通信报文是否是存在入口,如果存在入口则进入步骤2405,如果不存在入口则直接跳转进入步骤2406;
在步骤2405中,服务器报文处理接口继续判断所接收到的客户端通信报文是否存在执行错误,如果不存在执行错误,则进入步骤2307,如果存在执行错误则直接跳转进入步骤2406;
在步骤2406中,服务器报文处理接口根据步骤2404或步骤2305的结果向服务器套接字通信接口发送数据库服务器通信报文“错误信息ErrorMessage(E)”,进入步骤2413;
在步骤2407中,服务器报文处理接口根据步骤2405的结果继续判断所接收到的客户端通信报文是否有结果集,如果有结果集则进入步骤2408,如果没有结果集则直接跳转进入步骤2409;
在步骤2408中,服务器报文处理接口根据步骤2407的结果继续判断所接收到的客户端通信报文是否已到达行尾,如果没有到达行尾,则进入步骤2410,如果已经到达行尾则直接跳转至步骤2409;
在步骤2409中,服务器报文处理接口根据步骤2407或步骤2408的结果向服务器套接字通信接口发送数据库服务器通信报文“执行完毕CommandComplete(C)”,进入步骤2413;
在步骤2410中,服务器报文处理接口根据步骤2408的结果判断服务器报文处理接口接收到的客户端通信报文是否到达了行限制(rowlimit),如果没有达到行限制则进入步骤2411,如果达到行限制则跳转进入步骤2412;
在步骤2411中,服务器报文处理接口根据步骤2410的结果发送“行最大值DataRow(D)”返回至步骤2408,如此循环执行步骤2408至步骤2411,直至到达行尾;
在步骤2412中,服务器报文处理接口根据步骤2410的结果向服务器套接字通信接口发送数据库服务器通信报文“入口暂停PortalSuspended(S)”;
在步骤2413中,服务器套接字通信接口根据步骤2405、步骤2409或步骤2412的报文向客户端套接字通信接口发送数据库服务器通信报文“准备就绪ReadyforQuery(Z)”,进入步骤2414;
在步骤2414中,客户端套接字通信接口接收服务器套接字通信接口发送的数据库服务器通信报文并转给客户端报文处理接口,进入步骤2415;
在步骤2415中,客户端报文处理接口解析接收到的数据库服务器通信报文,如果收到过E(错误信息)报文,则返回错误,如果没有收到过E(错误信息)报文则返回成功,数据批量更新流程执行结束。
9.如权利要求1所述的基于通信协议的数据库数据批量更新方法,其特征在于还包括下述释放语句报文处理步骤:
在步骤2501中,客户端报文处理接口向客户端套接字通信接口发送客户端通信报文“释放Close(C)”,释放语句报文处理流程开始,发送后进入步骤2502;
在步骤2502中,客户端套接字通信接口根据步骤2501的报文信息向服务器套接字通信接口发送客户端通信报文“同步Sync(S)”,进入步骤2503;
在步骤2503中,服务器套接字通信接口接收客户端套接字通信接口发出的客户端通信报文并转给服务器报文处理接口,语句解析开始,进入步骤2504;
在步骤2504中,服务器报文处理接口判断所接收的客户端通信报文是否是准备语句标志‘S’,如果是‘S’则进入步骤2505,如果不是‘S’则直接跳转至步骤2506;
在步骤2505中,服务器报文处理接口判断所接收的客户端通信报文是否存在Statement对象,如果存在Statement对象则进入步骤2508,如果不存在Statement对象则直接跳转至步骤2509;
在步骤2506中,服务器报文处理接口判断所接收的客户端通信报文是否是入口标志‘P’,如果是‘P’则进入步骤2507,如果不是‘P’则直接跳转至步骤2509;
在步骤2507中,服务器报文处理接口判断所接收的客户端通信报文是否存在入口‘Portal’如果存在入口‘Portal’则进入步骤2508,如果不存在入口‘Portal’则直接跳转至步骤2509;
在步骤2508中,服务器报文处理接口根据步骤2508的结果向服务器套接字通信接口发送数据库服务器通信报文“释放完成CloseComplete(3)”,进入步骤2510;
在步骤2509中,服务器报文处理接口根据步骤2505、步骤2506或步骤2507的结果向服务器套接字通信接口发送数据库服务器通信报文“错误信息ErrorMessage(E)”,进入步骤2510;
在步骤2510中,服务器套接字通信接口根据步骤2508或步骤2509报文向客户端套接字通信接口发送数据库服务器通信报文“准备就绪ReadyforQuery(Z)”,进入步骤2514;
在步骤2511中,客户端套接字通信接口接收服务器套接字通信接口发送的数据库服务器通信报文并转给客户端报文处理接口,释放语句报文处理流程结束。
CN201110445417.5A 2011-12-28 2011-12-28 一种基于通信协议的数据库数据批量更新方法 Active CN102521409B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201110445417.5A CN102521409B (zh) 2011-12-28 2011-12-28 一种基于通信协议的数据库数据批量更新方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110445417.5A CN102521409B (zh) 2011-12-28 2011-12-28 一种基于通信协议的数据库数据批量更新方法

Publications (2)

Publication Number Publication Date
CN102521409A true CN102521409A (zh) 2012-06-27
CN102521409B CN102521409B (zh) 2015-04-08

Family

ID=46292322

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110445417.5A Active CN102521409B (zh) 2011-12-28 2011-12-28 一种基于通信协议的数据库数据批量更新方法

Country Status (1)

Country Link
CN (1) CN102521409B (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103942330A (zh) * 2014-04-30 2014-07-23 深圳先进技术研究院 一种大数据的处理方法、系统
CN105677683A (zh) * 2014-11-21 2016-06-15 华为技术有限公司 批量数据查询方法和装置
CN107220265A (zh) * 2016-03-22 2017-09-29 阿里巴巴集团控股有限公司 一种数据库语句编译和执行方法及装置
CN108200220A (zh) * 2018-04-08 2018-06-22 武汉斗鱼网络科技有限公司 一种数据同步方法、服务器及存储介质
CN109388417A (zh) * 2018-09-30 2019-02-26 深圳市酷达通讯有限公司 一种通信协议的更新方法、系统及终端设备
CN111797112A (zh) * 2020-06-05 2020-10-20 武汉大学 一种PostgreSQL预备语句执行优化方法
CN112231329A (zh) * 2020-10-14 2021-01-15 北京人大金仓信息技术股份有限公司 向数据库插入数据的方法、装置、设备和可读存储介质
CN113312293A (zh) * 2021-05-28 2021-08-27 无锡众星微系统技术有限公司 一种Die间高速接口的建链管理方法
CN114143043A (zh) * 2021-11-10 2022-03-04 杭州数梦工场科技有限公司 数据的安全传输方法及装置、电子设备
WO2023125038A1 (zh) * 2021-12-29 2023-07-06 中兴通讯股份有限公司 数据表的预处理方法、装置、电子设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101110030A (zh) * 2007-08-23 2008-01-23 南京联创科技股份有限公司 基于java的数据库持久层的开发方法
EP1962195A1 (en) * 2005-12-02 2008-08-27 International Business Machines Corporation System for enhancing access efficiency to data base and its method
CN101436184A (zh) * 2007-11-15 2009-05-20 金蝶软件(中国)有限公司 一种批量数据操作方法
CN101848245A (zh) * 2010-02-05 2010-09-29 南京德讯信息系统有限公司 基于ssl/xml的数据库访问代理方法及系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1962195A1 (en) * 2005-12-02 2008-08-27 International Business Machines Corporation System for enhancing access efficiency to data base and its method
CN101110030A (zh) * 2007-08-23 2008-01-23 南京联创科技股份有限公司 基于java的数据库持久层的开发方法
CN101436184A (zh) * 2007-11-15 2009-05-20 金蝶软件(中国)有限公司 一种批量数据操作方法
CN101848245A (zh) * 2010-02-05 2010-09-29 南京德讯信息系统有限公司 基于ssl/xml的数据库访问代理方法及系统

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
周晓丹: "基于ORACLE RAC平台的海量数据DML处理性能的研究", 《中国优秀硕士学位论文全文数据库信息科技辑》 *
钟秀玉: "基于JDBC的C/S模式下的远程数据库访问", 《嘉应学院学报》 *

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103942330A (zh) * 2014-04-30 2014-07-23 深圳先进技术研究院 一种大数据的处理方法、系统
CN103942330B (zh) * 2014-04-30 2018-05-01 深圳先进技术研究院 一种大数据的处理方法、系统
CN105677683A (zh) * 2014-11-21 2016-06-15 华为技术有限公司 批量数据查询方法和装置
CN105677683B (zh) * 2014-11-21 2018-12-14 华为技术有限公司 批量数据查询方法和装置
US10769147B2 (en) 2014-11-21 2020-09-08 Huawei Technologies Co., Ltd. Batch data query method and apparatus
CN107220265A (zh) * 2016-03-22 2017-09-29 阿里巴巴集团控股有限公司 一种数据库语句编译和执行方法及装置
CN108200220A (zh) * 2018-04-08 2018-06-22 武汉斗鱼网络科技有限公司 一种数据同步方法、服务器及存储介质
CN109388417A (zh) * 2018-09-30 2019-02-26 深圳市酷达通讯有限公司 一种通信协议的更新方法、系统及终端设备
CN111797112A (zh) * 2020-06-05 2020-10-20 武汉大学 一种PostgreSQL预备语句执行优化方法
CN111797112B (zh) * 2020-06-05 2022-04-01 武汉大学 一种PostgreSQL预备语句执行优化方法
CN112231329A (zh) * 2020-10-14 2021-01-15 北京人大金仓信息技术股份有限公司 向数据库插入数据的方法、装置、设备和可读存储介质
CN112231329B (zh) * 2020-10-14 2024-04-26 北京人大金仓信息技术股份有限公司 向数据库插入数据的方法、装置、设备和可读存储介质
CN113312293A (zh) * 2021-05-28 2021-08-27 无锡众星微系统技术有限公司 一种Die间高速接口的建链管理方法
CN113312293B (zh) * 2021-05-28 2022-10-04 无锡众星微系统技术有限公司 一种Die间高速接口的建链管理方法
CN114143043A (zh) * 2021-11-10 2022-03-04 杭州数梦工场科技有限公司 数据的安全传输方法及装置、电子设备
WO2023125038A1 (zh) * 2021-12-29 2023-07-06 中兴通讯股份有限公司 数据表的预处理方法、装置、电子设备及存储介质

Also Published As

Publication number Publication date
CN102521409B (zh) 2015-04-08

Similar Documents

Publication Publication Date Title
CN102521409A (zh) 一种基于通信协议的数据库数据批量更新方法
CN1818902A (zh) 使用设备数据模式同步服务器和设备数据
CN106027534A (zh) 一种基于Netty实现金融报文处理系统
CN102904820A (zh) 一种带流量控制的可扩展的数据交互方法和系统
CN1973282A (zh) 用于管理针对集群配置的改变的系统和方法
CN103139253A (zh) 实现网卡卸载功能的方法、网卡、主机系统及网络设备
CN104410875A (zh) 实现iptv盒端业务零配置自动开通的系统及方法
CN107870982A (zh) 数据处理方法、系统和计算机可读存储介质
CN101902448A (zh) 一种通过串口实现数据传输方法及系统
US20170223147A1 (en) Communication method and system based on assembled communication protocol stack
CN109861998A (zh) 一种基于北斗短报文协议的插件式动态解析系统及方法
CN102263837B (zh) 一种域名系统dns解析方法及装置
CN102377506A (zh) 测试报文处理系统
CN101977165A (zh) 云模式下的消息传输方法及消息总线系统
CN103067910A (zh) 远程开卡方法
CN108197263A (zh) 数据同步方法
CN102063511A (zh) 数据同步系统及方法
CN112270536A (zh) 一种基于pos的聚合支付方法、系统及相关装置
CN101931633A (zh) 一种应用于智能手机终端的可增量同步方法
CN104301352A (zh) 双卡终端的适配方法和装置
CN105912355A (zh) 一种智能机器人硬件程序升级的方法及系统
CN104486296A (zh) 一种身份识别装置及方法
CN101784028B (zh) 一种移动终端软件业务订购的方法及系统
CN100442763C (zh) 一种pos接入的分组实现方法
CN102413488A (zh) 自动路测系统中的信息交互方法和设备

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant