CN103955538B - HBase数据持久和查询方法及HBase系统 - Google Patents
HBase数据持久和查询方法及HBase系统 Download PDFInfo
- Publication number
- CN103955538B CN103955538B CN201410211658.7A CN201410211658A CN103955538B CN 103955538 B CN103955538 B CN 103955538B CN 201410211658 A CN201410211658 A CN 201410211658A CN 103955538 B CN103955538 B CN 103955538B
- Authority
- CN
- China
- Prior art keywords
- hbase
- data
- query
- tables
- schema information
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/289—Object oriented databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
Abstract
本发明公开了一种HBase数据持久和查询方法及HBase系统。所述HBase数据持久方法包括:接收Schema信息;接收并解析待写入数据;基于Schema信息,解析得到HBase数据表;将解析得到的HBase数据表和Schema信息写入HBase数据库。所述HBase数据查询方法包括:接收SQL语句;提取并组成查询对象;通过查询对象获取Schema信息;解析并生成Get对象或Scan对象;利用Hbase数据库的API执行所述Get对象或Scan对象,并返回执行结果。所述HBase系统使用所述HBase数据持久和查询方法。本发明极大地减少了程序员的代码量,而且为用户提供便捷地操作方式。
Description
技术领域
本发明涉及一种HBase数据持久和查询方法及HBase系统。
背景技术
HBase为随机读写Key-value(键-值)数据库。在随机读、写上HBase具有非常好的性能。但是一些业务场景中,很多时候需要连续读写。例如,基于时间序列、基于价格排序等等。在这样的场景中现有HBase通常有两种做法但都很难满足海量数据的快速写入和实时查询。
(1)满足实时顺序查询,但不满足快速海量写入。
按照某种序列连续写,例如按照时间序列,连续设计连续rowkey(行键),写入HBase数据库。这样写在数据量小的时候或许会有很好的读写性能,如果是数据量非常大,那么HBase就很容易出现热点问题,即某台regionserver(HBase集群运行在每个工作节点上的服务)挂掉,然后热点转移到另一台regionserver,然后被转移的regionserver挂掉,这样连续传导,直到整个集群挂掉,出现HBase不可用。
(2)满足快速海量写入,但不满足实时顺序查询。
按照某种现有Hash(哈希)算法,把短时间内出现的连续序列rowkey,分散到多台regionserver写。由于这里做了Hash分布,那么在读取时,必须合并多路Hash的region(域)。显然读取需要大量的检索,需要大量网络I/O(输入/输出)并占用大量的内存来合并这些值。这对于需要实时响应的查询是不可取的。即使是离线业务,也很难忍受。
发明内容
本发明要解决的技术问题是为了克服现有技术的HBase的数据海量写入和实时查询无法共存的缺陷,采用一种HBase数据持久和查询方法及HBase系统,通过Schema信息为HBase提供高效地读写能力。
本发明是通过下述技术方案来解决上述技术问题的:
本发明提供了一种HBase数据持久方法,其特点是,所述HBase数据持久方法包括以下步骤:
接收输入的HBase数据表的Schema信息;
接收输入数据并解析出待写入数据;
基于所述HBase数据表的Schema信息,解析所述待写入数据,并得到HBase数据表的rowkey,table name,families,colmuns以及index表;
将解析得到的HBase数据表和所述HBase数据表的Schema信息写入HBase数据库;
其中所述Schema信息包括table name,families,columns,main table rowkey生成规则,index rowkey生成规则,index columns。
其中所述数据持久一般就是指将内存中的数据模型转换为存储模型,以及将存储模型转换为内存中的数据模型的统称。
所述Schema信息是现有技术常用地一种用于表征用户所创建的对象(包括表,索引,存储过程等)的集合,其属于数据库对象管理的范畴,所以此处不再对其原理和内容进行说明。
此外Schema信息中包含的table name,families,columns,main table rowkey生成规则,index rowkey生成规则,index columns就是上述用户所创建的对象(包括表,索引,存储过程等),而且在现有的数据库技术中上述对象均是常用地对象内容,所以此处同样不再对上述对象的内容和原理进行解释说明。
本发明正是充分利用Schema信息来为HBase的数据表进行定义,进而实现快速海量写入,同时利用Schema信息生成的数据表与该Schema之间的关联性,也为数据的实时查询提供便捷地查询方式和接口。
较佳地,从网页获取所述HBase数据表的Schema信息和所述输入数据。本发明中利用网页作为数据输入源,从而实现数据的便捷输入和设置。
优选地,所述网页显示于一客户端。
本发明还提供了一种HBase数据查询方法,其特点是,所述HBase数据查询方法包括以下步骤:
使用如上所述的HBase数据持久方法对HBase数据库进行写操作;
接收输入查询数据并解析出有效地SQL语句;
从所述SQL语句中提取Schema Name和查询信息并以List<Map>结构组成查询对象;
通过查询对象从HBase数据库中获取对应于Schema Name的Schema信息;
解析查询对象的查询信息并通过Schema信息生成HBase数据表的Get对象或Scan对象;
利用Hbase数据库的API执行所述Get对象或Scan对象,并返回执行结果;
其中所述查询信息包括查询条数、查询条件、查询偏移量。
本发明中利用SQL语句输入查询信息等是为了增强数据库的通用性,同时降低使用门槛。而且本发明中正是利用了数据库中存储的各个不同Schema的命名,即Schema Name来确定需要进行查询的数据表,而且由于各个数据表的内容均是基于Schema信息解析得到,所以查询对象也利用Schema信息来生成HBase数据表的Get对象或Scan对象。而且HBase数据表的Get对象或Scan对象均是现有HBase数据库中预设的对象,进而可以利用Hbase数据库自由的API(应用程序编程接口)接口来执行所述对象。
也就是说,本发明利用数据库中的Schema信息来实现快速实时地数据查询和读取能力。
其中HBase数据表的Get对象或Scan对象以及Hbase数据库的API均是现有HBase数据库中常用的对象和接口,所以这里不再详细说明。
而且List<Map>结构也是数据库中常用的数据结构中的元素集合形式,所以此处同样不再赘述。
较佳地,从网页获取输入查询数据,并显示所述执行结果。
优选地,所述网页显示于一客户端。
本发明还提供了一种HBase系统,其特点是,所述HBase系统包括一HBase数据库、若干客户端,其中每个客户端均显示一网页;
所述HBase系统使用如上所述的HBase数据持久方法和HBase数据查询方法。
本发明的HBase系统的HBase数据库正是通过不断地写入和查询的结合实现数据库数据的维护。
在符合本领域常识的基础上,上述各优选条件,可任意组合,即得本发明各较佳实例。
本发明的积极进步效果在于:
本发明的HBase数据持久和查询方法及HBase系统一方面用户可以配置Schema信息,配置待写入数据的组成,进而自动构成HBase数据表中Rowkey信息以及行列信息等,从而极大地减少了程序员的代码量,而且自动解析客户端提供的SQL语句,执行相应指令。另一方面利用网页作为客户的可视化界面来配置Schema信息等,为用户提供便捷地操作方式。
附图说明
图1为本发明的实施例1的HBase数据持久的流程图。
图2为本发明的实施例1的HBase数据查询的流程图。
具体实施方式
下面通过实施例的方式进一步说明本发明,但并不因此将本发明限制在所述的实施例范围之中。
本发明是对现有的HBase进行提升和改造,其主要包括以下两个方面:
1、在现有HBase数据库架构基础上增加SQL等传统索引式数据库的功能,这是因为不同的业务对HBase的存储和查询需求都会建立自己的代码逻辑,而使用诸如SQL这种更高层次的语言可以减轻程序员码代码的工作量,所以本发明通过增加SQL解析服务来抽象代码逻辑,简化代码量。
2、在客户端采用可视化的网页模式为用户提供可视化的配置Schema信息等数据库操作服务。
下面通过下述实施例来对本发明进行进一步地详细地说明。
实施例1
本实施例的HBase系统包括HBase数据库、N个客户端,其中每个客户端均显示一个网页页面,本实施例中客户端的数量是不限的,只要在HBase数据库集群的可承载范围内均客户端的数量是任意的。
如图1所示,本实施例中HBase系统中HBase数据持久流程如下:
S1、从各个客户端的页面接收输入的HBase数据表的Schema信息。其中所述Schema信息包括table name,families,columns,main table rowkey生成规则,index rowkey生成规则,index columns。其中所述页面可以网页等页面形式。
S2、从各个客户端的页面中接收输入数据并解析出待写入数据。
S3、基于所述Schema信息,解析待写入数据,并得到HBase数据表的rowkey,tablename,families,colmuns以及index表。
也就是说,用户通过客户端只需要提供需要写入的数据,List<Map>结构的JSON(JavaScript Object Notation,一种轻量级的数据交换格式)和Schema信息。即在写入的时候要依赖Schema信息规则解析。通过Schema信息规则解析可以得到,HBase数据表的rowkey,table name,families,colmuns等等。
S4、将解析得到的HBase数据表和Schema信息写入HBase数据库。
举例来说,传统的做法,如果有新业务要持久化明细数据,则需要分析需求,设计数据结构,设计索引等,然后开发Writer(写入服务)等,最后测试发布。如遇变更,也要通过改动代码、回归测试、发布的步骤。通常,为了简化开发,会有一些可以通过配置文件管理的部分,但仅仅依赖配置文件,还无法做到不改、不发布任何代码而添加新的业务。而本发明只需要完成(1)通过网页界面添加数据结构配置及Schema配置,如HBase主键、索引设计等。(2)按照约定的格式与数据结构,将数据发送至特定的消息队列,即可得到持久化的明细数据,并且立即提供查询接口查询数据。
如图2所示,本实施例中HBase系统对由上述HBase数据持久流程写入了数据的HBase数据库中的数据查询流程如下:
S21、从各个客户端接收输入查询数据并解析出有效地SQL语句。
S22、从所述SQL语句中提取Schema Name和查询信息并以List<Map>结构组成查询对象。其中所述查询信息包括查询条数、查询条件、查询偏移量。
S23、通过查询对象从HBase数据库中获取对应于Schema Name的Schema信息。
S24、解析查询对象的查询信息并通过Schema信息生成HBase数据表的Get对象或Scan对象。
S25、利用Hbase数据库的API执行所述Get对象或Scan对象,并返回执行结果。
S26、将执行结果发送至相应的客户端并以网页页面的形式在客户端显示。
在上述数据持久和查询的整个处理流程中,Schema信息是核心,数据持久与查询均依赖Schema信息来完成各自功能。本发明达到如此的通用性,离不开Schema信息配置上一个重要技术实现。即用户可以定义一整套的格式化控制符与处理函数来支撑HBase的RowKey、Index的生成。同时反过来,查询的时候也会依赖此配置将查询条件转化为RowKey、Index的匹配。
其中本实施例中这套格式化工具的配置形如下表所示:
所以本实施例中格式化工具的表达式为下式:
format("%d$%s$%s",funcA($a,$b),funcB($c),$d)
其中粗体部分即为需要配置的部分。这很像C语言里的printf函数。funcA、funcB为内置函数,用于对原始数据进行处理,以处理后的值来格式化、生成最终的Key(键值)。在示例中,最终的Key是有3部分组成,中间以"$"分割。其中,第一部分是整数,其值为funcA的返回值,funcA依赖数据结构中的字段"a"和字段"b";第二部分情况类似;第三部分直接使用字段"d"的值。
在查询的执行过程中,如果用户给定条件"a"和"b",则查询分析过程中会得出结论:对HBase以funcA($a,$b)为前缀的行进行扫描。
而其实施例中的查询条件采用SQL的写法,也是为了增强通用性,同时降低使用门槛。考虑到业务的变更等,此外在兼容性上,本实施例还可以采用修订版本管理的方式。所有数据结构定义,可以扩展,但不可删除既有字段。这能保证针对老版本的应用可以直接处理新版本的数据,进而实现兼容。
而且本实施例的查询中的查询策略可以通过Schema信息得到确定,在一个具体地例子中用户通过Schema name得到Schema信息,其中包括data,index表信息。
当用户传入查询信息表达为Map<String,Object>。通过调用的parse函数对Map<String,Object>进行解析,得到List<FormatResult>,每一个数据表(data,index)都有一个List<FormatResult>。List<FormatResult>的每一部分都是rowkey的组成部分,遍历整个List会得到如下表所述rowkey情况:
基于所述rowkey情况可以进一步地确定扫描策略。例如先采用简单的策略:查询字段有建index的,直接扫index表。没有index表和查询字段没有建index的直接扫data表。若单索引表和组合索引表都存在的情况。索引也是一张表。所以,选取哪个索引表,由扫描策略决定。
其基本原则是1、当组合索引的rowkey能完整匹配时,采用组合索引。
2、当组合索引不能完整匹配,但是存在前缀时,采用组合索引。
3、组合索引优于单表索引。
所以针对上表所述rowkey情况,可以采用下表所示的扫描策略:
由上可见上述数据持久的流程中利用Schema信息实现数据的海量输入,而且在在上述查询流程中,同样利用Schema信息能够实现数据的实施查询。所以避免了传统的HBase中两种读写方法导致的读写不能同时有效进行的缺陷,而且通过客户端的页面显示和输入实现了高效地可视化读写操作。
通过以上的HBase系统的具体实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM(只读存储器/随机存取存储器)、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请实施例或者实施例的某些部分所述的方法。
本申请可用于众多通用或专用的计算系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络PC(个人电脑)、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
虽然以上描述了本发明的具体实施方式,但是本领域的技术人员应当理解,这些仅是举例说明,本发明的保护范围是由所附权利要求书限定的。本领域的技术人员在不背离本发明的原理和实质的前提下,可以对这些实施方式做出多种变更或修改,但这些变更和修改均落入本发明的保护范围。
Claims (7)
1.一种HBase数据持久方法,其特征在于,所述HBase数据持久方法包括以下步骤:
接收输入的HBase数据表的Schema信息;
接收输入数据并解析出待写入数据;
基于所述HBase数据表的Schema信息,解析所述待写入数据,并得到HBase数据表的rowkey,table name,families,colmuns以及index表;
将解析得到的HBase数据表和所述HBase数据表的Schema信息写入HBase数据库;
其中所述Schema信息包括table name,families,columns,main table rowkey生成规则,index rowkey生成规则,index columns。
2.如权利要求1所述的HBase数据持久方法,其特征在于,从网页获取所述HBase数据表的Schema信息和所述输入数据。
3.如权利要求2所述的HBase数据持久方法,其特征在于,所述网页显示于一客户端。
4.一种HBase数据查询方法,其特征在于,所述HBase数据查询方法包括以下步骤:
使用如权利要求1-3中任一项所述的HBase数据持久方法对HBase数据库进行写操作;
接收输入查询数据并解析出有效的SQL语句;
从所述SQL语句中提取Schema Name和查询信息并以List<Map>结构组成查询对象;
通过查询对象从HBase数据库中获取对应于Schema Name的Schema信息;
解析查询对象的查询信息并通过Schema信息生成HBase数据表的Get对象或Scan对象;
利用Hbase数据库的API执行所述Get对象或Scan对象,并返回执行结果;
其中所述查询信息包括查询条数、查询条件、查询偏移量。
5.如权利要求4所述的HBase数据查询方法,其特征在于,从网页获取输入查询数据,并显示所述执行结果。
6.如权利要求5所述的HBase数据查询方法,其特征在于,所述网页显示于一客户端。
7.一种HBase系统,其特征在于,所述HBase系统包括一HBase数据库、若干客户端,其中每个客户端均显示一网页;
所述HBase数据库用于存储通过如权利要求1所述的HBase数据持久方法解析得到的HBase数据表和所述HBase数据表的Schema信息,所述客户端用于显示通过如权利要求4所述的HBase数据查询方法得到的所述执行结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410211658.7A CN103955538B (zh) | 2014-05-19 | 2014-05-19 | HBase数据持久和查询方法及HBase系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410211658.7A CN103955538B (zh) | 2014-05-19 | 2014-05-19 | HBase数据持久和查询方法及HBase系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103955538A CN103955538A (zh) | 2014-07-30 |
CN103955538B true CN103955538B (zh) | 2017-05-24 |
Family
ID=51332813
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410211658.7A Active CN103955538B (zh) | 2014-05-19 | 2014-05-19 | HBase数据持久和查询方法及HBase系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103955538B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104317966B (zh) * | 2014-11-18 | 2017-08-08 | 国家电网公司 | 一种用于电力大数据快速组合查询的动态索引方法 |
CN105488147A (zh) * | 2015-11-26 | 2016-04-13 | 南京莱斯信息技术股份有限公司 | 一种基于sql模板的持久化方法 |
CN105956106B (zh) * | 2016-05-04 | 2019-12-13 | 北京思特奇信息技术股份有限公司 | 一种基于内存数据库和Hbase存取大数据的方法及系统 |
CN106326381B (zh) * | 2016-08-16 | 2019-06-25 | 梁猛 | 基于MapDB构建的HBase数据检索方法 |
CN106951231B (zh) * | 2017-02-23 | 2021-02-26 | 微梦创科网络科技(中国)有限公司 | 一种计算机软件开发方法及装置 |
CN109254982B (zh) * | 2018-08-31 | 2020-09-29 | 杭州安恒信息技术股份有限公司 | 一种流数据处理方法、系统、装置及计算机可读存储介质 |
CN110928527B (zh) * | 2018-09-20 | 2023-05-09 | 北京国双科技有限公司 | 排序方法及装置 |
CN112883088B (zh) * | 2019-11-29 | 2023-01-31 | 贵州白山云科技股份有限公司 | 一种数据处理方法、装置、设备及存储介质 |
CN111382204B (zh) * | 2020-03-09 | 2024-01-05 | 中国工商银行股份有限公司 | 基于网页界面的Hbase数据库处理方法和装置 |
CN111400347A (zh) * | 2020-03-20 | 2020-07-10 | 北京思特奇信息技术股份有限公司 | 一种分页查询方法、系统和电子设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7426516B1 (en) * | 2003-11-24 | 2008-09-16 | Novell, Inc. | Mechanism for supporting indexed tagged content in a general purpose data store |
CN102999629A (zh) * | 2012-12-12 | 2013-03-27 | 济南大学 | 一种关系数据库到无模式数据库异步转换系统及方法 |
CN103714163A (zh) * | 2013-12-30 | 2014-04-09 | 中国科学院信息工程研究所 | 一种NoSQL数据库的模式管理方法及系统 |
-
2014
- 2014-05-19 CN CN201410211658.7A patent/CN103955538B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7426516B1 (en) * | 2003-11-24 | 2008-09-16 | Novell, Inc. | Mechanism for supporting indexed tagged content in a general purpose data store |
CN102999629A (zh) * | 2012-12-12 | 2013-03-27 | 济南大学 | 一种关系数据库到无模式数据库异步转换系统及方法 |
CN103714163A (zh) * | 2013-12-30 | 2014-04-09 | 中国科学院信息工程研究所 | 一种NoSQL数据库的模式管理方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN103955538A (zh) | 2014-07-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103955538B (zh) | HBase数据持久和查询方法及HBase系统 | |
US11086751B2 (en) | Intelligent metadata management and data lineage tracing | |
JP6542785B2 (ja) | 第一クラスデータベース要素としての半構造データの実装 | |
US20190370397A1 (en) | Artificial intelligence based-document processing | |
US11416768B2 (en) | Feature processing method and feature processing system for machine learning | |
US7711704B2 (en) | System and method of providing date, arithmetic and other relational functions for OLAP sources | |
US11847040B2 (en) | Systems and methods for detecting data alteration from source to target | |
US10078843B2 (en) | Systems and methods for analyzing consumer sentiment with social perspective insight | |
US20100121883A1 (en) | Reporting language filtering and mapping to dimensional concepts | |
US20190272478A1 (en) | Generating feature vectors from rdf graphs | |
KR102593171B1 (ko) | 정보 처리 방법, 장치, 전자 기기 및 저장 매체 | |
US9239854B2 (en) | Multi-domain impact analysis using object relationships | |
CN108984155A (zh) | 数据处理流程设定方法和装置 | |
US20200409944A1 (en) | Visual distributed data framework for analysis and visualization of datasets | |
US20200210640A1 (en) | Method and apparatus for displaying textual information | |
WO2021253641A1 (zh) | 着色语言翻译方法 | |
US20180357278A1 (en) | Processing aggregate queries in a graph database | |
CN109408502A (zh) | 一种数据标准处理方法、装置及其存储介质 | |
CN106599241B (zh) | 一种gis软件中针对大数据的可视化管理方法 | |
CN110720097A (zh) | 图数据库中元组和边的功能性等价 | |
Sunuwar et al. | Comparative Analysis of Relational and Graph Databases for Data Provenance: Performance, Queries, and Security Considerations | |
KR101107582B1 (ko) | 웹기반의 온톨로지 편집 운영 시스템 | |
US9898493B2 (en) | Runtime generation of a mapping table for uploading data into structured data marts | |
CN110717025B (zh) | 一种问答方法、装置、电子设备及存储介质 | |
Gašpar et al. | Integrating Two Worlds: Relational and NoSQL |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C41 | Transfer of patent application or patent right or utility model | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20160302 Address after: 200335 Shanghai city Changning District Admiralty Road No. 968 Building No. 16 10 floor Applicant after: SHANGHAI XIECHENG BUSINESS CO., LTD. Address before: 200335 Shanghai City, Changning District Fuquan Road No. 99, Ctrip network technology building Applicant before: Ctrip computer technology (Shanghai) Co., Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |