CN117056344B - 一种对大规模固定连接模式的多表查询的数据建模方法 - Google Patents

一种对大规模固定连接模式的多表查询的数据建模方法 Download PDF

Info

Publication number
CN117056344B
CN117056344B CN202311316960.4A CN202311316960A CN117056344B CN 117056344 B CN117056344 B CN 117056344B CN 202311316960 A CN202311316960 A CN 202311316960A CN 117056344 B CN117056344 B CN 117056344B
Authority
CN
China
Prior art keywords
data
connection
tables
list
sequence
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
CN202311316960.4A
Other languages
English (en)
Other versions
CN117056344A (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.)
Kmerit Suzhou Information Science & Technology Co ltd
Taicang Yangtze River Delta Research Institute of Northwestern Polytechnical University
Original Assignee
Kmerit Suzhou Information Science & Technology Co ltd
Taicang Yangtze River Delta Research Institute of Northwestern Polytechnical University
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 Kmerit Suzhou Information Science & Technology Co ltd, Taicang Yangtze River Delta Research Institute of Northwestern Polytechnical University filed Critical Kmerit Suzhou Information Science & Technology Co ltd
Priority to CN202311316960.4A priority Critical patent/CN117056344B/zh
Publication of CN117056344A publication Critical patent/CN117056344A/zh
Application granted granted Critical
Publication of CN117056344B publication Critical patent/CN117056344B/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/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/2433Query languages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2457Query processing with adaptation to user needs
    • G06F16/24578Query processing with adaptation to user needs using ranking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • G06F16/288Entity relationship models
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本发明提供了一种对大规模固定连接模式的多表查询的数据建模方法,将数据嵌套入字段中保存,在保证数据完整的前提下,减少数据冗余,同时使用序列化技术将嵌套数据保存为二进制对象,尽可能减少存储空间占用,同时保留大表字段,将小表数据以对象形式存储,方便SQL查询对结果进行筛选。本发明避免了连接宽表中出现的数据冗余问题,减少了建模表占用空间,加快了查询效率。

Description

一种对大规模固定连接模式的多表查询的数据建模方法
技术领域
本发明涉及计算机技术领域,尤其是一种对多表查询的数据建模方法。
背景技术
大表连接是指在关系型数据库中,将两个或多个大型表进行连接操作。在实际业务场景中,对于多张大数据表,表内的数据及表之间的关系往往相对稳定,这种连接关系构成了表之间的一种固定的连接模式,这种模式意味着无论何时进行连接查询,连接的条件都不会随着时间和数据的变化而发生改变。在传统的关系型数据库中,当查询需要跨越多张表获取相关数据时,通常使用连接操作来关联多个表,这可能会导致查询操作的性能下降,特别是在大数据量的情况下。因此,为了提高查询效率,可以考虑使用一些新型建模技术,根据连接条件将表数据提前关联起来,存储在同一张表或者一个文档中,以便在查询时可以一次性获取所需的数据,而不需要重复的连接操作。
目前针对这种数据建模的方法有很多,比如,数据仓库等尝试在传统RMDB数据库框架下通过建立维度宽表来解决此问题,将检索时需要用到的维度字段集中到一个宽表中,使得查询SQL不涉及连接,但是表本身是一个冗余数据,对象检索时会以其他关联对象的字段作为维度,需要在每个宽表中包含所有可能用到的来自多个对象的字段,因此会造成多份数据冗余。为了解决这个问题,一些研究者提出了动态维度宽表的概念。动态维度宽表可以根据实际查询需求动态生成,只包含需要用到的字段,避免了数据冗余的问题。
此外,国外有实验室将维度宽表改为Key-value结构以窄表的形式进行存储:将不同对象的维度合并到一个大的维度表(标签表)中,这个表记录数非常多但字段很少,将多份数据冗余变为一份冗余,解决了不同对象的标签复用问题,这种方法将所有维度信息都存储在一个大的维度表中,每个维度都对应着一个唯一的键值,可以通过键值来快速查询对应的维度信息。但是这种方法的主要缺点是数据存储冗余导致表占用空间过大,数据量大但字段少导致遍历查询效率不高和缩减字段导致SQL能力受限等问题。
发明内容
为了克服现有技术的不足,本发明提供一种对大规模固定连接模式的多表查询的数据建模方法。本发明针对现有技术存在的两个主要缺点,提出一种新的数据建模技术,将数据嵌套入字段中保存,在保证数据完整的前提下,减少数据冗余,同时使用序列化技术将嵌套数据保存为二进制对象,尽可能减少存储空间占用。同时保留大表字段,将小表数据以对象形式存储,方便SQL查询对结果进行筛选。
本发明解决其技术问题所采用的技术方案的步骤如下:
步骤1:获取分别存储有多个需要进行连接查询的T张表以及T张表之间的连接关系,其中表为数据库中的数据表,连接关系为多个数据表之间连接的字段的关系式的集合,根据输入的连接关系确定T张表之间的固定连接模式;在实际应用中,考虑到确保数据的稳定性、一致性和成本的约束,数据库中多表之间的连接关系往往不常更改;
步骤2:根据T张表的固定连接模式及数据规模,确定T张表之间的连接顺序,根据连接顺序生成连接执行队列;
步骤3:取连接执行队列最末端的两张表为表M和表N,其中,表M为倒数第二排序,表N为倒数第一排序,对表M和表N开始执行连接操作,获得包含表M和表N数据的连接结果宽表R;
步骤4:选择倒数第二排序的表M进行遍历,对于获取的每一条M表的数据M_data,根据M_data的主键字段对步骤3中得到的连接结果宽表R进行搜索,获取连接结果宽表R上关于M表的主键字段与M_data主键字段相等的数据,由此分离出连接结果宽表R中关于表N的数据部分,以此得到满足表M和表N两表连接的连接条件的N表数据N_data,以实现将N表数据嵌套进M表字段的目的,并将N_data存入一个新建数据列表N_list中,列表N_list为需建模的N数据列表;使用序列化技术将列表N_list序列化,得到字符串格式的序列化对象;
步骤5:将所有序列化后的列表N_list按连接条件分别插入M表数据M_data的与N表的对应的连接键字段中,以此生成新的M表数据;
步骤6:根据新的M表数据建立一张新表,该新表为M表和N表的建模结果表K,表K同时具有表M和表N的数据,但只有和表M相等的字段数,将建模结果表K插回连接执行队列的尾端,此时连接执行队列中的表的数量为T-1张;
步骤7:重复循环步骤3-步骤6,每次循环均将执行队列里尾端的两张表汇总到一张,直到连接执行队列中只剩最后一张表H时,表H即为最终的建模结果表,在进行多频次的数据库查询时,每次查询只需要对表H进行查询操作,而无需对所有的表进行连接查询。
所述固定连接模式指一种连接多张表的确定性顺序,固定连接模式表示无论何时执行连接操作,所连接的T张表之间的连接关系和连接顺序都保持一致,不会随时间或数据变化而改变,其中T为大于1的正整数。
所述确定T张表之间的连接顺序是指将数据量最大的表G置于连接顺序的最前端,再根据表G与其余表的连接关系确定其余表在连接顺序中的位置,依次类推,根据此连接顺序生成连接执行队列;例如设A表连接B表连接C表,即A⋈B⋈C,将数据量最大的A表放在连接顺序的最前端,则根据A的连接关系,与A表有连接的B表则位于连接顺序的第二位,再根据B表的连接关系,与B表有连接的C表则位于连接顺序的最末端;
所述序列化技术为Kryo或Json。
所述序列化技术将java对象转换为字节序列,以便在网络传输、数据存储或跨进程通信场景中传输和重建java对象。
本发明的有益效果在于解决了数据冗余和SQL查询问题:将表之间对应的数据以循环嵌套的形式存入对应表的字段中,避免了连接宽表中出现的数据冗余问题。减少了建模表占用空间:将表之间对应的数据以循环嵌套的形式存入对应表的字段中,最终的建模结果表的结构与初始表的结构相同,避免了因多表连接而产生的字段数过多的问题,大大减少了建模表占用的内存和空间。加快了查询效率:基于本发明的建模结果表的查询避免了多表之间的连接操作,建模结果表包含了所有表的数据对象,查询仅仅需要对单表查询,而非传统建模查询时的对多表进行连接操作生成中间结果表再基于中间表进行查询。
本发明的关键点和保护点在于:
1.本建模方法提取表间连接关系,将数据库连接操作转换为扫描查询,减少不必要的连接操作。在数据量较大的情况下避免因连接费时造成性能下降。
2.本建模方法建模成本较低,且一次建模后支持多次查询,不需要为每次查询重新建模,能有效提高查询效率。
3.本建模方法提出一种固定连接模式,即一种连接多张表的确定性连接顺序,反映了现实情况中多表连接的连接关系、连接顺序等不常更改的情况。
4.本建模方法基于数据库,在不改变表原有结构的情况下,通过序列化将复杂对象转换为字符串,使不支持复杂对象存储的数据库能够存储嵌套数据。
5.本建模方法通过序列化对象存储,使得小表数据在字段中以对象形式存储,便于查询。
附图说明
图1为对大规模固定连接模式的多表查询的数据建模方法的整体流程图。
图2为本发明多表之间连接模式的示例图。
图3为本发明两表连接成连接结果宽表局部示例图。
图4为本发明多表之间序列化存储的局部示例图。
图5为根据图2的连接模式建立的最终结果建模表。
具体实施方式
下面结合附图和实施例对本发明进一步说明。
根据本实施例中提供的技术方案。获取分别存储有多个数据的T张输入表以及输入的表之间的连接关系,根据确定的连接关系确定T张表之间的固定连接模式,使得无论何时执行连接操作,所连接的表之间的连接条件和关系都保持一致,不会随时间或数据变化而改变,其中T为大于1的正整数;根据T张表的固定的连接模式及表数据的规模确定表之间的连接顺序,根据连接顺序生成连接执行队列;取连接执行队列最前端的两张表,表M和表N开始执行连接操作,获得包含两表数据的连接结果宽表R;选择两表M和N连接中连接顺序较靠前的表M(通常是数据量较大的表)进行遍历,对于每一条获取的M表数据M_data,根据M_data主键字段搜索连接结果表R,获取表R上M表主键字段与M_data主键相等的数据,分离出其中表N数据部分数据存入一个新建数据列表N_list中,该列表为需建模的N数据列表;使用Kryo序列化技术将列表N_list序列化,得到字符串格式的序列化对象;将序列化后的N_list插入M表数据M_data的与N表的连接键字段中,生成一条新的M表数据。根据新的M表数据建立一张新表,该新表即为M表和N表的建模结果表K,将建模结果表K插回连接执行队列的尾端;重复循环从取执行队列最前端的两张表到建模结果表K插回执行队列的尾端的步骤,直到连接执行队列中只剩最后一张表,该表为最终的建模结果表。
图1为对大规模固定连接模式的多表查询的数据建模方法的流程图,如图1所示,数据建模方法包括步骤S101~S107。
在步骤S101中,获取分别存储有多个需要进行连接查询的T张表以及T张表之间的连接关系,连接关系表示多表之间连接的字段的关系式的集合,根据输入的连接关系确定T张表之间的固定连接模式。在实际应用中,考虑到确保数据的稳定性、一致性和成本的约束,数据库中多表之间的连接关系往往不常更改,基于此,本发明提出的固定连接模式指一种连接多张表的确定性顺序,固定连接模式表示无论何时执行连接操作,所连接的T张表之间的连接关系和连接顺序都保持一致,不会随时间或数据变化而改变,其中T为大于1的正整数。
步骤S102中,根据T张表的固定连接模式及数据规模,确定T张表之间的连接顺序,将数据量最大的表G置于连接顺序的最前端,再根据表G与其余表的连接确定其余表在连接顺序中的位置,例如设A表连接B表连接C表,即A⋈B⋈C,将数据量最大的A表放在连接顺序的最前端,则根据A的连接关系,与A表有连接的B表则位于连接顺序的第二位,再根据B表的连接关系,与B表有连接的C表则位于连接顺序的最末端,根据此连接顺序生成连接执行队列。
步骤S103中,取连接执行队列最前端的两张表为表M和表N,对这两张表开始执行连接操作,获得包含两表数据的连接结果宽表R,例如在图2中,设置有4张表,连接条件为多表之间的非主键字段连接,如图2所示,则连接顺序为B、D表连接生成连接表BD;A、C表连接生成连接表AC;BD、AC表连接获得长度为A表长度的建模表。
步骤S104中,选择倒数第二排序的表M进行遍历,对于每一条获取的M表数据M_data,根据M_data主键字段对步骤三中得到的连接结果表R进行搜索,获取表R上关于M表的主键字段与M_data主键相等的数据,由此分离出连接结果宽表R中关于表N的数据部分,以此得到满足表M和表N两表连接的连接条件的N表数据N_data以实现将N表数据嵌套进M表字段的目的,并将N_data存入一个新建数据列表N_list中,该列表N_List为需建模的N数据列表;使用序列化技术,如Kryo、Json等将列表N_list序列化,得到字符串格式的序列化对象,由图2可知,首先应连接BD表,执行SQL语句获得连接结果。因为连接是一对多的,一条B表数据对应多条D表数据,在结果表中表现图3所示,数据b1对应d1、d2、d3,b2对应d4、d5,B表数据存在冗余现象。
步骤S105中,将序列化后的列表N_list插入M表数据M_data的与N表的连接键字段中,生成一条新的M表数据,如图4所示,根据B表遍历结果表,获得每条B表数据对应的D表列表,如上图为b1对应d1、d2、d3组成的数据表,b2对应d4、d5组成的数据表。
步骤S106中,根据新的M表数据建立一张新表,该新表即为M表和N表的建模结果表K,将建模结果表K插回连接执行队列的尾端,如图5所示,其中b1、b2为修改后的M表数据,组成一张新表,这张表即为M表和N表的建模结果表。
步骤S107中,重复循环S103到S106,直到连接执行队列中只剩最后一张表H,该表H即为最终的建模结果表,最终的建模表长度与图2中A表相同该表为最终的建模结果表,根据图2所设置的连接模式生成的最终连接结果表如图5所示。

Claims (3)

1.一种对大规模固定连接模式的多表查询的数据建模方法,其特征在于包括下述步骤:
步骤1:获取分别存储有多个需要进行连接查询的T张表以及T张表之间的连接关系,其中表为数据库中的数据表,连接关系为多个数据表之间连接的字段的关系式的集合,根据输入的连接关系确定T张表之间的固定连接模式;所述固定连接模式指一种连接多张表的确定性顺序,固定连接模式表示无论何时执行连接操作,所连接的T张表之间的连接关系和连接顺序都保持一致,不会随时间或数据变化而改变,其中T为大于1的正整数;所述确定T张表之间的连接顺序是指将数据量最大的表G置于连接顺序的最前端,再根据表G与其余表的连接关系确定其余表在连接顺序中的位置,依次类推,根据此连接顺序生成连接执行队列;例如设A表连接B表连接C表,即将数据量最大的A表放在连接顺序的最前端,则根据A的连接关系,与A表有连接的B表则位于连接顺序的第二位,再根据B表的连接关系,与B表有连接的C表则位于连接顺序的最末端;在实际应用中,考虑到确保数据的稳定性、一致性和成本的约束,数据库中多表之间的连接关系往往不常更改;
步骤2:根据T张表的固定连接模式及数据规模,确定T张表之间的连接顺序,根据连接顺序生成连接执行队列;
步骤3:取连接执行队列最末端的两张表为表M和表N,其中,表M为倒数第二排序,表N为倒数第一排序,对表M和表N开始执行连接操作,获得包含表M和表N数据的连接结果宽表R;
步骤4:选择倒数第二排序的表M进行遍历,对于获取的每一条M表的数据M_data,根据M_data的主键字段对步骤3中得到的连接结果宽表R进行搜索,获取连接结果宽表R上关于M表的主键字段与M_data主键字段相等的数据,由此分离出连接结果宽表R中关于表N的数据部分,以此得到满足表M和表N两表连接的连接条件的N表数据N_data,以实现将N表数据嵌套进M表字段的目的,并将N_data存入一个新建数据列表N_list中,列表N_list为需建模的N数据列表;使用序列化技术将列表N_list序列化,得到字符串格式的序列化对象;
步骤5:将所有序列化后的列表N_list按连接条件分别插入M表数据M_data的与N表的对应的连接键字段中,以此生成新的M表数据;
步骤6:根据新的M表数据建立一张新表,该新表为M表和N表的建模结果表K,表K同时具有表M和表N的数据,但只有和表M相等的字段数,将建模结果表K插回连接执行队列的尾端,此时连接执行队列中的表的数量为T-1张;
步骤7:重复循环步骤3-步骤6,每次循环均将执行队列里尾端的两张表汇总到一张,直到连接执行队列中只剩最后一张表H时,表H即为最终的建模结果表,在进行多频次的数据库查询时,每次查询只需要对表H进行查询操作,而无需对所有的表进行连接查询。
2.根据权利要求1所述的对大规模固定连接模式的多表查询的数据建模方法,其特征在于:
所述序列化技术为Kryo或Json。
3.根据权利要求1所述的对大规模固定连接模式的多表查询的数据建模方法,其特征在于:
所述序列化技术将java对象转换为字节序列,以便在网络传输、数据存储或跨进程通信场景中传输和重建java对象。
CN202311316960.4A 2023-10-12 2023-10-12 一种对大规模固定连接模式的多表查询的数据建模方法 Active CN117056344B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311316960.4A CN117056344B (zh) 2023-10-12 2023-10-12 一种对大规模固定连接模式的多表查询的数据建模方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311316960.4A CN117056344B (zh) 2023-10-12 2023-10-12 一种对大规模固定连接模式的多表查询的数据建模方法

Publications (2)

Publication Number Publication Date
CN117056344A CN117056344A (zh) 2023-11-14
CN117056344B true CN117056344B (zh) 2024-02-20

Family

ID=88663108

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311316960.4A Active CN117056344B (zh) 2023-10-12 2023-10-12 一种对大规模固定连接模式的多表查询的数据建模方法

Country Status (1)

Country Link
CN (1) CN117056344B (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101561837A (zh) * 2009-05-25 2009-10-21 北京理工大学 面向对象的图形模块化建模方法及求仿真系统参数的方法
US20150302058A1 (en) * 2014-04-17 2015-10-22 Wisconsin Alumni Research Foundation Database system with highly denormalized database structure
CN114330184A (zh) * 2022-03-15 2022-04-12 上海国微思尔芯技术股份有限公司 一种多层次分组方法及装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101561837A (zh) * 2009-05-25 2009-10-21 北京理工大学 面向对象的图形模块化建模方法及求仿真系统参数的方法
US20150302058A1 (en) * 2014-04-17 2015-10-22 Wisconsin Alumni Research Foundation Database system with highly denormalized database structure
CN114330184A (zh) * 2022-03-15 2022-04-12 上海国微思尔芯技术股份有限公司 一种多层次分组方法及装置

Also Published As

Publication number Publication date
CN117056344A (zh) 2023-11-14

Similar Documents

Publication Publication Date Title
EP2069979B1 (en) Dynamic fragment mapping
US7886224B2 (en) System and method for transforming tabular form date into structured document
JP3318834B2 (ja) データファイルシステム及びデータ検索方法
CN111190904B (zh) 一种图-关系数据库混合存储的方法和装置
US20030212694A1 (en) Method and mechanism of improving performance of database query language statements
JP2022058529A (ja) 大規模データセットの高速検索またはフィルタリングのためのシステム、方法、およびデータ構造
EP3159815A1 (en) Database hierarchy-independent data drilling
EP3289484A1 (en) Method and database computer system for performing a database query using a bitmap index
WO2015010508A1 (zh) 一种基于一维线性空间实现Trie树的词典存储管理方法
JP6418431B2 (ja) 効率的な1対1結合のための方法
CN111435347A (zh) 数据库中关系表的高效扩展方法和系统
US6999966B2 (en) Content management system and methodology for implementing a complex object using nested/recursive structures
CN102207935A (zh) 用于创建索引的方法和系统
CN109933589B (zh) 用于数据汇总的基于ElasticSearch聚合运算结果的数据结构转换方法
CN106127863B (zh) 一种冰箱发泡模具系列化设计系统及其方法
CN117056344B (zh) 一种对大规模固定连接模式的多表查询的数据建模方法
US7225198B2 (en) Data compiling method
CN111159020B (zh) 一种应用于同步软件测试的方法和装置
CN110389953B (zh) 基于压缩图的数据存储方法、存储介质、存储装置和服务器
CN112434085A (zh) 基于Roaring Bitmap的用户数据统计方法
CN110321388B (zh) 一种基于Greenplum的快速排序查询方法及系统
US7882114B2 (en) Data processing method and data processing program
US8341153B2 (en) Apparatus and method for heap sorting with collapsed values and selective value expansion
WO2022052586A1 (zh) 一种分布式存储系统中对象元数据检索列举方法及装置
CN112488708B (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