CN108446326B - 一种基于容器的异构数据管理方法及系统 - Google Patents

一种基于容器的异构数据管理方法及系统 Download PDF

Info

Publication number
CN108446326B
CN108446326B CN201810142375.XA CN201810142375A CN108446326B CN 108446326 B CN108446326 B CN 108446326B CN 201810142375 A CN201810142375 A CN 201810142375A CN 108446326 B CN108446326 B CN 108446326B
Authority
CN
China
Prior art keywords
data
container
corporation
control data
database
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.)
Active
Application number
CN201810142375.XA
Other languages
English (en)
Other versions
CN108446326A (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.)
Jiangsu Wei Ruichaosuan Science And Technology Ltd
Original Assignee
Jiangsu Wei Ruichaosuan Science And Technology 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 Jiangsu Wei Ruichaosuan Science And Technology Ltd filed Critical Jiangsu Wei Ruichaosuan Science And Technology Ltd
Priority to CN201810142375.XA priority Critical patent/CN108446326B/zh
Publication of CN108446326A publication Critical patent/CN108446326A/zh
Application granted granted Critical
Publication of CN108446326B publication Critical patent/CN108446326B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/11File system administration, e.g. details of archiving or snapshots
    • G06F16/119Details of migration of file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems

Abstract

本发明提供了一种基于容器的异构数据管理方法及系统,包括:数据管理中心下发数据采集需求给数据端;数据端根据数据中心的数据采集需求,将数据管理中心需要的数据采集到数据管理中心;数据管理中心安装容器并导入需要的镜像,并在数据管理中心搭建分布式存储系统;将采集的数据上传到数据管理中心的分布式存储系统;通过数据管理中心选择对应的数据,通过容器工具启动一个与选择数据所使用数据库对应的容器,并通过容器的文件挂载技术挂载被选择的数据,启动完成后返回数据库相应的连接参数。本发明使数据的迁移不再需要导入导出,避免了数据导入导出的时间消耗,同时显著提高了数据中心的数据存储、处理能力。

Description

一种基于容器的异构数据管理方法及系统
技术领域
本发明涉及数据处理技术领域,具体地,涉及一种基于容器的大规模异构数据管理方法及系统。
背景技术
随着信息技术的飞速发展,应用所使用的存储数据库也根据需要各不相同,所产生的数据量也在飞速增长,而许多的应用数据需要在数据中心备份。如各大政府部门、公司数据需要在备份到审计部门的数据中心以供审查等。然而由于各个不同部门使用的数据库不同、数据量大等特点,传统的数据中心不能提供一个高效、可靠的数据采集、迁移、重现策略,很大程度上影响了数据的审计活动的效率。
目前大部分应用使用数据库存储数据,数据库的迁移和备份是非常耗时的过程,而传统的数据中心都是将被采集数据端的数据通过数据库中间文件导入到数据中心的数据库中,如需要采集orccle数据库的数据,则将被采集数据导出成oracle数据库的中间文件格式即dmp文件,然后将dmp文件迁移到数据中心,再根据一定规则将dmp文件导入的汇总中心的数据库中。数据导出成dmp文件和dmp文件的导入需要大量的时间消耗,并且数据中心将所有的数据导入的一个数据库中,数据之间的隔离性弱,数据迁移、备份困难,海量数据也不利于管理。
并且由于不同的行业、公司使用的数据库类软件不同,不同数据库的数据,需要导入到不同的数据库中,则需要在数据中心安装所有的数据库软件,数据中心单个机器计算、存储性能不能满足海量异构数据的存储需求,需要多个机器构成分布式集群,目前主流数据库的分布式实现困难,造成数据中心不能整合所有的机器资源,造成资源浪费。
上述方法不仅在数据采集、迁移、导入等步骤需要大量的时间消耗,并且数据的管理困难、资源浪费严重,并且每个步骤需要专业的数据库人才投入大量的时间,不能大规模普及,对于目前数据中心海量的大规模异构数据管理已经完全不能满足需求。
容器技术的出现为这种大规模异构数据中心提供了一种新的技术方案,根据调查显示,目前主流的大部分数据库,数据迁移不但支持导出静态文件如dmp文件等,再导入新的数据库的方式,而且支持数据文件的迁移,可以将源数据库的所有数据文件包括控制文件、日志信息、数据文件等都迁移到新库的对应位置,即可完整复现原始数据库。目前在分布式系统上的容器编排技术Kubernetes已经非常成熟,并且大规模商用,具有很好的稳定性,可以很好的屏蔽不同硬件机器的差异,将不同机器组成一个大规模集群,并且对于主流的分布式存储系统有良好的适用性,可以显著提供资源的利用率以及数据中心的效率。
发明内容
针对现有技术中的缺陷,本发明的目的是提供一种基于容器的异构数据管理方法及系统。
根据本发明提供的一种基于容器的异构数据管理方法,包括:
步骤1:数据管理中心下发数据采集需求给数据端;
步骤2:数据端根据数据中心的数据采集需求,将数据管理中心需要的数据采集到数据管理中心;
步骤3:数据管理中心安装容器并导入需要的镜像,并在数据管理中心搭建分布式存储系统;
步骤4:将采集的数据上传到数据管理中心的分布式存储系统;
步骤5:通过数据管理中心选择对应的数据,通过容器工具启动一个与选择数据所使用数据库对应的容器,并通过容器的文件挂载技术挂载被选择的数据,启动完成后返回数据库相应的连接参数。
较佳的,所述步骤2具体包括:
步骤21:数据端安装容器并导入与数据端数据库符合的镜像;
步骤22:数据端启动一个与被采集数据所使用数据库相符合的容器;
步骤23:数据端保存被采集数据的信息;
步骤24:数据端根据启动容器的连接参数连接容器数据库并运行相应的数据采集脚本,将需要上传到数据管理中心的数据导入到容器中;
步骤25:将容器中的数据拷贝到移动存储介质然后转存到数据中心或者直接通过网络将数据上传到数据管理中心。
较佳的,所述容器为Docker容器。
较佳的,步骤23中数据端保存的被采集数据的信息包括:数据库类型、编码方式和采集人。
根据本发明提供的一种基于容器的异构数据管理系统,包括:
数据管理中心:下发数据采集需求给数据端;数据管理中心安装容器并导入需要的镜像,并在数据管理中心搭建分布式存储系统,存储数据端采集的数据;
数据端:根据数据中心的数据采集需求,将数据管理中心需要的数据采集到数据管理中心;
其中,通过数据管理中心选择对应的数据,通过容器工具启动一个与选择数据所使用数据库对应的容器,并通过容器的文件挂载技术挂载被选择的数据,启动完成后返回数据库相应的连接参数。
较佳的,所述数据端安装容器并导入与数据端数据库符合的镜像,启动一个与被采集数据所使用数据库相符合的容器,保存被采集数据的信息,根据启动容器的连接参数连接容器数据库并运行相应的数据采集脚本,将需要上传到数据管理中心的数据导入到容器中,将容器中的数据拷贝到移动存储介质然后转存到数据中心或者直接通过网络将数据上传到数据管理中心。
较佳的,所述容器为Docker容器。
较佳的,所述数据端保存的被采集数据的信息包括:数据库类型、编码方式和采集人。
与现有技术相比,本发明具有如下的有益效果:
本发明适用于大规模异构数据中心数据管理,不同于传统的数据中心的数据管理方法,该方法使用Docker容器技术,使数据的迁移不再需要导入导出,避免了数据导入导出的时间消耗,传统的将各种数据端数据导入数据中心一个库导致的数据管理混乱,数据不具有隔离性,安全性低;同时该方法使用Kubernetes、分布式存储将不同性能的机器组成一个数据集群,显著提高了数据中心的数据存储、处理能力。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1为本发明数据端进行数据采集的实施例一的流程图;
图2为本发明数据管理中心用户查看被采集数据的实施例二的流程图。
具体实施方式
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
本发明提供的一种基于容器的异构数据管理方法,包括:
步骤1:数据管理中心下发数据采集需求给数据端;
步骤2:数据端根据数据中心的数据采集需求,将数据管理中心需要的数据采集到数据管理中心;
步骤3:数据管理中心安装容器并导入需要的镜像,并在数据管理中心搭建分布式存储系统;
步骤4:将采集的数据上传到数据管理中心的分布式存储系统;
步骤5:通过数据管理中心选择对应的数据,通过容器工具Kubernetes启动一个与选择数据所使用数据库对应的容器,并通过容器的文件挂载技术挂载被选择的数据,启动完成后返回数据库相应的连接参数。
步骤6、用户使用数据管理中心可以统一管理数据中心的所有数据存储、启动、查看等,并可以根据需要进行数据汇总、数据校验等操作。
步骤2具体包括:
步骤21:数据端安装容器并导入与数据端数据库符合的镜像,容器采用Docker容器。
步骤22:数据端启动一个与被采集数据所使用数据库相符合的容器;
步骤23:数据端保存被采集数据的信息,信息包括:数据库类型、编码方式和采集人等。
步骤24:数据端根据启动容器的连接参数连接容器数据库并运行相应的数据采集脚本,将需要上传到数据管理中心的数据导入到容器中;
步骤25:将容器中的数据拷贝到移动存储介质然后转存到数据中心或者直接通过网络将数据上传到数据管理中心。
在上述一种基于容器的异构数据管理方法的基础上,本发明还提供一种基于容器的异构数据管理系统,包括:
数据管理中心:下发数据采集需求给数据端;数据管理中心安装容器并导入需要的镜像,并在数据管理中心搭建分布式存储系统,存储数据端采集的数据,容器为Docker容器。
数据端:根据数据中心的数据采集需求,将数据管理中心需要的数据采集到数据管理中心;
其中,通过数据管理中心选择对应的数据,通过容器工具Kubernetes启动一个与选择数据所使用数据库对应的容器,并通过容器的文件挂载技术挂载被选择的数据,启动完成后返回数据库相应的连接参数。
数据端安装容器并导入与数据端数据库符合的镜像,启动一个与被采集数据所使用数据库相符合的容器,保存被采集数据的信息,数据端保存的被采集数据的信息包括:数据库类型、编码方式和采集人等。根据启动容器的连接参数连接容器数据库并运行相应的数据采集脚本,将需要上传到数据管理中心的数据导入到容器中,将容器中的数据拷贝到移动存储介质然后转存到数据中心或者直接通过网络将数据上传到数据管理中心。
如图1所示,为本发明数据端A公司根据数据中心需求采集数据流程图,具体执行以下步骤:
步骤101、数据端A公司收到数据中心下发的数据采集需求,需要采集本公司oracle数据库中2017年数据;
步骤102、数据端A公司安装Docker并导入Oracle镜像;
步骤103、启动Oracle容器,并返回连接参数如10.0.0.1:35113/orcl;
步骤104、采集人记录被采集数据的相关信息,如数据库类型、采集时间、联系人等方便数据中心进行数据溯源;
步骤105、使用参数10.0.0.1:35113/orcl连接容器中的oracle数据库并运行数据采集脚本将数据导入到容器中;
步骤106、将容器中的数据文件,包括控制文件、日志文件等拷贝到移动存储介质然后迁移到数据中心服务器或者通过网络上传到数据中心服务器。
该方法基于Docker容器技术进行数据采集,避免了传统数据采集方法频繁的数据导入导出造成的大量时间消耗,并且基于Docker容器采集的数据文件能够即插即用,可以快速的识别数据的正确性,避免了因错误数据导入引起的额外时间消耗,显著提升了数据采集的效率。
如图2所示,为本发明在大规模异构数据中心的采集、存储、查看A公司和B公司2017年度数据流程图,具体执行以下步骤:
步骤201、数据中心向被采集数据端A公司和B公司下发采集需求,分别采集A公司和B公司2017年的数据;
步骤202、A公司和B公司分别通过数据采集步骤采集数据到数据中心;
步骤203、数据中心安装Docker、Kubernetes等必要软件并导入查看A公司数据库所需的oracle镜像和查看B公司数据看所需的mysql镜像,同时搭建一个高可用的分布式存储系统用于存储A公司和B公司采集的数据文件;
步骤204、将采集到的A公司2017年的oracle数据文件和B公司2017年的mysql数据文件上传到数据中心存储服务器上;
步骤205、用户通过数据中心管理平台选择A公司2017年的数据数据文件查看;
步骤206、数据中心管理平台通过Kubernetes启动一个oracle容器,并挂载A公司2017年的数据文件到oracle容器中,返回oracle容器的连接参数给用户10.0.0.1:35153/orcl;
步骤207、用户通过10.0.0.1:35153/orcl参数连接oracle容器查看A公司2017年的数据,并通过管理平台可以进行数据的汇总、校验等。
上述各步骤中,所用到的工具Docker、Kubernetes以及分布式存储都已经非常成熟,常用数据库的数据文件迁移也是数据库迁移常用的方法,具有很高的可靠性。
本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统及其各个装置、模块、单元以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统及其各个装置、模块、单元以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同功能。所以,本发明提供的系统及其各项装置、模块、单元可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置、模块、单元也可以视为硬件部件内的结构;也可以将用于实现各种功能的装置、模块、单元视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。

Claims (8)

1.一种基于容器的异构数据管理方法,其特征在于,包括:
步骤1:数据管理中心下发数据采集需求给数据端;
步骤2:数据端根据数据管理中心的数据采集需求,将数据管理中心需要的数据采集到数据管理中心;
步骤3:数据管理中心安装容器并导入需要的镜像,并在数据管理中心搭建分布式存储系统;
步骤4:将采集的数据上传到数据管理中心的分布式存储系统;
步骤5:通过数据管理中心选择对应的数据,通过容器工具启动一个与选择数据所使用数据库对应的容器,并通过容器的文件挂载技术挂载被选择的数据,启动完成后返回数据库相应的连接参数。
2.根据权利要求1所述的基于容器的异构数据管理方法,其特征在于,所述步骤2具体包括:
步骤21:数据端安装容器并导入与数据端数据库符合的镜像;
步骤22:数据端启动一个与被采集数据所使用数据库相符合的容器;
步骤23:数据端保存被采集数据的信息;
步骤24:数据端根据启动容器的连接参数连接容器数据库并运行相应的数据采集脚本,将需要上传到数据管理中心的数据导入到容器中;
步骤25:将容器中的数据拷贝到移动存储介质然后转存到数据管理中心或者直接通过网络将数据上传到数据管理中心。
3.根据权利要求1所述的基于容器的异构数据管理方法,其特征在于,所述容器为Docker容器。
4.根据权利要求2所述的基于容器的异构数据管理方法,其特征在于,步骤23中数据端保存的被采集数据的信息包括:数据库类型、编码方式和采集人。
5.一种基于容器的异构数据管理系统,其特征在于,包括:
数据管理中心:下发数据采集需求给数据端;数据管理中心安装容器并导入需要的镜像,并在数据管理中心搭建分布式存储系统,存储数据端采集的数据;
数据端:根据数据管理中心的数据采集需求,将数据管理中心需要的数据采集到数据管理中心;
其中,通过数据管理中心选择对应的数据,通过容器工具启动一个与选择数据所使用数据库对应的容器,并通过容器的文件挂载技术挂载被选择的数据,启动完成后返回数据库相应的连接参数。
6.根据权利要求5所述的基于容器的异构数据管理系统,其特征在于,所述数据端安装容器并导入与数据端数据库符合的镜像,启动一个与被采集数据所使用数据库相符合的容器,保存被采集数据的信息,根据启动容器的连接参数连接容器数据库并运行相应的数据采集脚本,将需要上传到数据管理中心的数据导入到容器中,将容器中的数据拷贝到移动存储介质然后转存到数据管理中心或者直接通过网络将数据上传到数据管理中心。
7.根据权利要求5所述的基于容器的异构数据管理系统,其特征在于,所述容器为Docker容器。
8.根据权利要求6所述的基于容器的异构数据管理系统,其特征在于,所述数据端保存的被采集数据的信息包括:数据库类型、编码方式和采集人。
CN201810142375.XA 2018-02-11 2018-02-11 一种基于容器的异构数据管理方法及系统 Active CN108446326B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810142375.XA CN108446326B (zh) 2018-02-11 2018-02-11 一种基于容器的异构数据管理方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810142375.XA CN108446326B (zh) 2018-02-11 2018-02-11 一种基于容器的异构数据管理方法及系统

Publications (2)

Publication Number Publication Date
CN108446326A CN108446326A (zh) 2018-08-24
CN108446326B true CN108446326B (zh) 2019-01-29

Family

ID=63192480

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810142375.XA Active CN108446326B (zh) 2018-02-11 2018-02-11 一种基于容器的异构数据管理方法及系统

Country Status (1)

Country Link
CN (1) CN108446326B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109542970A (zh) * 2018-11-27 2019-03-29 长沙智擎信息技术有限公司 一种基于容器的大规模异构数据管理方法
CN109936571B (zh) * 2019-02-22 2020-05-29 全球能源互联网研究院有限公司 一种海量数据共享方法、开放共享平台及电子设备
CN111061741B (zh) * 2019-12-20 2023-08-22 国网山东省电力公司泰安供电公司 一种电力测试数据管理方法、系统、终端及存储介质
CN112765122B (zh) * 2021-01-19 2022-10-04 深圳软通动力信息技术有限公司 一种在kubernetes中数据库的导入方法和系统
CN113157658B (zh) * 2021-05-13 2021-11-09 心动互动娱乐有限公司 客户端日志收集分发方法、装置及计算机设备

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105511943A (zh) * 2015-12-03 2016-04-20 华为技术有限公司 一种Docker容器运行方法和装置
CN105824614A (zh) * 2015-12-15 2016-08-03 广东亿迅科技有限公司 基于Docker的分布式开发环境的搭建方法及装置
CN106657248A (zh) * 2016-11-01 2017-05-10 山东大学 一种基于Docker容器的网络负载均衡系统及其搭建方法、工作方法
CN106790595A (zh) * 2016-12-29 2017-05-31 上海理想信息产业(集团)有限公司 一种Docker容器主动负载均衡装置及方法
CN106911802A (zh) * 2017-04-18 2017-06-30 北京华云网际科技有限公司 分布式块存储系统的管理平台的部署方法和装置
WO2017200878A1 (en) * 2016-05-17 2017-11-23 Amazon Technologies, Inc. Versatile autoscaling
CN107463432A (zh) * 2017-08-17 2017-12-12 福建中金在线信息科技有限公司 服务器生产环境部署方法、装置、电子设备及存储介质
EP3267351A1 (en) * 2016-07-07 2018-01-10 Gemalto Sa Method for securely managing a docker image

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105511943A (zh) * 2015-12-03 2016-04-20 华为技术有限公司 一种Docker容器运行方法和装置
CN105824614A (zh) * 2015-12-15 2016-08-03 广东亿迅科技有限公司 基于Docker的分布式开发环境的搭建方法及装置
WO2017200878A1 (en) * 2016-05-17 2017-11-23 Amazon Technologies, Inc. Versatile autoscaling
EP3267351A1 (en) * 2016-07-07 2018-01-10 Gemalto Sa Method for securely managing a docker image
CN106657248A (zh) * 2016-11-01 2017-05-10 山东大学 一种基于Docker容器的网络负载均衡系统及其搭建方法、工作方法
CN106790595A (zh) * 2016-12-29 2017-05-31 上海理想信息产业(集团)有限公司 一种Docker容器主动负载均衡装置及方法
CN106911802A (zh) * 2017-04-18 2017-06-30 北京华云网际科技有限公司 分布式块存储系统的管理平台的部署方法和装置
CN107463432A (zh) * 2017-08-17 2017-12-12 福建中金在线信息科技有限公司 服务器生产环境部署方法、装置、电子设备及存储介质

Also Published As

Publication number Publication date
CN108446326A (zh) 2018-08-24

Similar Documents

Publication Publication Date Title
CN108446326B (zh) 一种基于容器的异构数据管理方法及系统
CN107370786B (zh) 一种基于微服务架构的通用信息管理系统
US11455217B2 (en) Transaction consistency query support for replicated data from recovery log to external data stores
CN110309071B (zh) 测试代码的生成方法及模块、测试方法及系统
US20210311858A1 (en) System and method for providing a test manager for use with a mainframe rehosting platform
CN106067080B (zh) 提供可配置工作流能力
CN1959717B (zh) 订单驱动的海量遥感数据集群化预处理系统及其方法
CN103116596B (zh) 在分布式数据库中执行快照隔离的系统和方法
US8612249B2 (en) Systems and methods for managing regulatory information
CN106599197A (zh) 数据采集交换引擎
CN109690524A (zh) 分布式事件处理系统中的数据序列化
CN104462185B (zh) 一种基于混合结构的数字图书馆云存储系统
CN109683911B (zh) 一种实现自动化应用部署及影响分析的系统
US20120166620A1 (en) System and method for integrated real time reporting and analytics across networked applications
CN103605698A (zh) 一种用于分布异构数据资源整合的云数据库系统
WO2014031618A2 (en) Data relationships storage platform
CN112199433A (zh) 一种用于城市级数据中台的数据治理系统
CN105095103B (zh) 用于云环境下的存储设备管理方法和装置
CN108197155A (zh) 信息数据同步方法、装置及计算机可读存储介质
US11615076B2 (en) Monolith database to distributed database transformation
CN115374102A (zh) 数据处理方法及系统
CN114218218A (zh) 基于数据仓库的数据处理方法、装置、设备及存储介质
CN106802928B (zh) 电网历史数据管理方法及其系统
CN109800069B (zh) 一种实现数据治理的方法及装置
CN109542970A (zh) 一种基于容器的大规模异构数据管理方法

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
GR01 Patent grant
GR01 Patent grant