CN104077405A - 时序类型数据存取方法 - Google Patents
时序类型数据存取方法 Download PDFInfo
- Publication number
- CN104077405A CN104077405A CN201410321184.1A CN201410321184A CN104077405A CN 104077405 A CN104077405 A CN 104077405A CN 201410321184 A CN201410321184 A CN 201410321184A CN 104077405 A CN104077405 A CN 104077405A
- Authority
- CN
- China
- Prior art keywords
- data
- memory buffer
- day
- main memory
- buffer zone
- 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
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/22—Indexing; Data structures therefor; Storage structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种时序类型数据存取方法,其中,存储方法包括:接收原始数据;判断原始数据来源:对于实时数据,根据系统配置项的配置,判断是否需要压缩处理;对于历史数据,则直接存放在主内存缓冲区中;当主内存缓冲区的内存使用达到预设的限值,切换内存缓冲区主备,即切换主内存缓冲区和备用内存缓冲区;将备用内存缓冲区数据按照测点分块连续写入相应日历史文件尾部,并在写入文件块中记录前一数据块的地址信息;和更新日索引文件最后文件块的地址。本发明的数据查询处理采用高速缓存处理机制,它将最近访问过的测点日数据缓存在内存中,从而提高了访问过测点的日数据相关数据访问接口效率。
Description
技术领域
本发明涉及数据处理领域,尤其涉及一种时序(基于时间序列)类型数据高速存取方法。
背景技术
传统的时序数据库,底层数据处理引擎会有两种处理方式,一种是采用常规的小型嵌入式关系数据库引擎;另一种是采用基于键值对方式的NoSQL数据处理引擎。
其中,NoSQL数据存储不需要固定的表结构,通常也不存在Join连接操作,在大数据存取上具备关系型数据库无法比拟的性能优势。
但这两种数据处理引擎,其底层都是基于B+树处理方式,而B+树算法会出现随着数据量的大量增加,树深度会加大,页面分裂更频繁,从而出现写入和读取性能显著下降,无法满足高速存取的性能要求。
发明内容
本发明要解决的技术问题是,针对现有技术的不足,提供一种时序类型数据高速存取方法。
根据本发明一个方面,提供一种时序类型数据高速存储方法,包括:接收原始数据;判断原始数据来源:对于实时数据,根据系统配置项的配置,判断是否需要压缩处理,如果需要压缩处理则采用数据过滤算法过滤掉冗余点并且将处理后的数据存放在主内存缓冲区中,如果不需要压缩处理则直接存放在主内存缓冲区中;对于历史数据,则直接存放在主内存缓冲区中;当主内存缓冲区的内存使用达到预设的限值,切换内存缓冲区主备,即切换主内存缓冲区和备用内存缓冲区;将备用内存缓冲区数据按照测点分块连续写入相应日历史文件尾部,并在写入文件块中记录前一数据块的地址信息,从而形成一个反向测点数据块链;和更新日索引文件最后文件块的地址;其中,存放在主、备内存缓冲区中的数据为根据时间进行排序的数据。
可选的,时序类型数据高速存储方法还包括:如果当所述主内存缓冲区已满而所述备用内存缓冲区还没有存盘完毕,则对主内存缓冲区进行扩容。
根据本发明另一个方面,提供一种时序类型数据高速读取方法,包括:根据要获取测点数据的日期和测点ID生成一个合成主键;和根据此主键在历史数据缓存字典表中进行查询,如果在历史数据缓存字典表中存在此主键,则直接可以获取日历史数据序列值,然后可以根据查询时间范围从日历史数据值中抽取相应查询数据。
可选的,时序类型数据高速读取方法还包括:如果在数据缓存表中不存在此主键,则从日历史文件中来读取历史数据,包括:读取日索引文件,获取历史数据最后文件块地址;通过反向测点数据块链将此ID的整日历史数据块全部读取出来;根据时间进行排序,整理后的日历史数据使用先前的合成主键放入到历史数据缓存字典表中;和根据查询时间范围从日历史数据序列值中抽取相应查询数据。
与现有技术相比,本发明的数据查询处理采用高速缓存处理机制,它将最近访问过的测点日数据缓存在内存中,从而提高了访问过测点的日数据相关数据访问接口效率,包括历史数据、断面数据等的访问。
附图说明
图1是根据本发明一个实施例提供的历史数据文件结构示意图;
图2是根据本发明另一个实施例提供的数据存储和读取流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图,对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
发明人经研究发现,基于B+树方式更适合于在同一个大数据文件中进行处理,而将历史数据按照自然天方式分文件存储能够保证数据量增加的情况下存取性能不会出现下降趋势,同时更适合于业务系统的应用需求。
基于上述发现,根据本发明一个实施例,提供一种历史文件结构,如图1所示。
其中,索引文件结构采用简单高效的连续文件数组方式,测点(即采集点,如采集电压、电流)ID与数组序号对应,数组内存储每个测点日文件最后历史数据块的地址信息,当为0时表示没有历史数据。这样可以保证一次磁盘读取操作就可以获取到索引信息,如果采用索引缓存处理机制则无需磁盘操作即可获取索引信息。
其中,历史数据文件的结构方式为反向数据块链表结构(只能从最后遍历到最前),最后一个数据块中记录前一个数据块地址,一直到块头为止。这种方式的优势在于存储历史数据时候可以连续写入日历史文件尾部,因为没有反复的文件访问定位,从而使数据写入效率可以达到磁盘处理的最高效率;也方便数据块碎片整理,可以在历史数据存储稳定以后对整个日历史文件进行重新整理,如将分散的数据块链表整合成连续存储,也可以重新过滤历史数据,去除冗余点,并可以根据需要精简历史数据,从而提高数据访问效率。
根据本发明一个实施例,提供一种处理基于时序类型数据高速存储方法,例如调度自动化系统的数据采集和存储,如图2所示的数据存贮流程,数据存储方法包括:
S11、接收原始数据,例如持续接收原始数据;
S12、判断原始数据来源:
如果是实时数据,则根据系统配置项的配置,判断是否需要压缩处理,如果需要,则采用旋转门压缩算法处理,如果不需要则与历史数据一样处理,采用旋转门压缩算法进行数据过滤,处理后的数据会存放在内存缓冲区中;其中,旋转门压缩算法是一种直线趋势化压缩算法,在本发明其他实施例中,亦可采用其他数据过滤算法来过滤掉冗余点;
如果是历史数据,则不需要数据过滤,直接存放在内存缓冲区中;
根据本发明一个实施例,对于存放在内存缓冲区中的数据,根据时间进行排序,例如插入时就排序处理,一方面能够提高数据写入效率,另一方面也提高了这部分数据的访问效率;
S13、当主内存缓冲区内存使用到一定限值(可以根据系统内存大小来设定限值)的情况下,切换内存缓冲区主备,即将当前主内存缓冲区设置成备用内存缓冲区,而将原备用的空内存缓冲区设置成主内存缓冲区用于继续处理接收数据;
另外,如果当主内存缓冲区已满而备内存缓冲区还没有存盘完毕,则主内存缓冲区会适当扩容,当容量超过一定比例时会阻塞数据的接收处理,直到备内存缓冲区处理完毕;
S14、将备用内存缓冲区数据按照测点分块连续写入相应日历史文件(历史文件以日为单位)尾部,并在写入文件块中记录前一数据块的地址信息,从而形成一个反向测点数据块链;
S15、更新日索引文件(索引文件以日为单位)最后文件块的地址。
其中,对于步骤S14-S15,例如,id为3的测点,从备用内存缓冲区将此测点的排序后的历史数据提取出来形成一个数据块,此数据块的块头记录此测点前一数据块的地址信息,将此数据块写入到日历史文件尾部,并更新日索引文件中id为3的最后文件块地址。
根据本发明一个实施例,提供一种基于时间序列类型数据高速读取方法,如图2所示的数据读取流程,数据读取方法包括:
S21、根据要获取测点数据的日期和测点ID(唯一标识码)生成一个合成主键;
S22、根据此主键在历史数据缓存字典表中进行查询:
如果在历史数据缓存字典表中存在此主键,则直接可以获取日历史数据序列值,然后可以根据查询时间范围从日历史数据值中抽取相应查询数据;
如果在数据缓存表中不存在此主键,则从日历史文件中来读取历史数据,包括:
(1)读取日索引文件,获取历史数据最后文件块地址,
(2)通过反向测点数据块链将此ID的整日历史数据块全部读取出来,
(3)根据时间进行排序,整理后的日历史数据使用先前的合成主键放入到历史数据缓存字典表中,
(4)根据查询时间范围从日历史数据序列值中抽取相应查询数据。
本发明的数据查询处理采用高速缓存处理机制,它将最近访问过的测点日数据缓存在内存中,从而提高了访问过测点的日数据相关数据访问接口效率,包括历史数据、断面数据等的访问。
应该注意到并理解,在不脱离后附的权利要求所要求的本发明的精神和范围的情况下,能够对上述详细描述的本发明做出各种修改和改进。因此,要求保护的技术方案的范围不受所给出的任何特定示范教导的限制。
Claims (7)
1.一种时序类型数据存储方法,包括:
接收原始数据;
判断原始数据来源:对于实时数据,根据系统配置项的配置,判断是否需要压缩处理,如果需要压缩处理则采用数据过滤算法过滤掉冗余点并且将处理后的数据存放在主内存缓冲区中,如果不需要压缩处理则直接存放在主内存缓冲区中;对于历史数据,则直接存放在主内存缓冲区中;
当主内存缓冲区的内存使用达到预设的限值,切换内存缓冲区主备,即切换主内存缓冲区和备用内存缓冲区;
将备用内存缓冲区数据按照测点分块连续写入相应日历史文件尾部,并在写入文件块中记录前一数据块的地址信息,从而形成一个反向测点数据块链;和
更新日索引文件最后文件块的地址;
其中,存放在主、备内存缓冲区中的数据为根据时间进行排序的数据。
2.根据权利要求1所述的时序类型数据存储方法,其中,所述数据过滤算法为直线趋势化压缩算法。
3.根据权利要求2所述的时序类型数据存储方法,其中,所述数据过滤算法为旋转门压缩算法。
4.根据权利要求1所述的时序类型数据存储方法,还包括:
如果当所述主内存缓冲区已满而所述备用内存缓冲区还没有存盘完毕,则对主内存缓冲区进行扩容。
5.根据权利要求4所述的时序类型数据存储方法,其中,对主内存缓冲区进行扩容还包括:
当主内存缓冲区容量超过一定比例时,阻塞对所述原始数据的接收处理,直到备用内存缓冲区处理完毕。
6.一种时序类型数据读取方法,包括:
根据要获取测点数据的日期和测点ID生成一个合成主键;和
根据此主键在历史数据缓存字典表中进行查询,如果在历史数据缓存字典表中存在此主键,则直接可以获取日历史数据序列值,然后可以根据查询时间范围从日历史数据值中抽取相应查询数据。
7.根据权利要求6所述的时序类型数据读取方法,还包括:
如果在数据缓存表中不存在此主键,则从日历史文件中来读取历史数据,包括:
读取日索引文件,获取历史数据最后文件块地址;
通过反向测点数据块链将此ID的整日历史数据块全部读取出来;
根据时间进行排序,整理后的日历史数据使用先前的合成主键放入到历史数据缓存字典表中;和
根据查询时间范围从日历史数据序列值中抽取相应查询数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410321184.1A CN104077405B (zh) | 2014-07-08 | 2014-07-08 | 时序类型数据存取方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410321184.1A CN104077405B (zh) | 2014-07-08 | 2014-07-08 | 时序类型数据存取方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104077405A true CN104077405A (zh) | 2014-10-01 |
CN104077405B CN104077405B (zh) | 2018-06-08 |
Family
ID=51598659
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410321184.1A Active CN104077405B (zh) | 2014-07-08 | 2014-07-08 | 时序类型数据存取方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104077405B (zh) |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104504105A (zh) * | 2014-12-30 | 2015-04-08 | 青岛海信网络科技股份有限公司 | 一种实时数据库的存储方法 |
CN105739912A (zh) * | 2014-12-11 | 2016-07-06 | 北京北方微电子基地设备工艺研究中心有限责任公司 | 半导体设备中实时数据的存储方法及系统 |
CN106970935A (zh) * | 2017-01-20 | 2017-07-21 | 朗坤智慧科技股份有限公司 | 实时数据存储结构、数据写入方法及数据读取方法 |
CN107038075A (zh) * | 2015-07-14 | 2017-08-11 | 阿里巴巴集团控股有限公司 | 消息队列系统以及实现消息通信的方法 |
CN107544964A (zh) * | 2016-06-24 | 2018-01-05 | 吴建凰 | 一种用于时序数据库的数据块存储方法 |
EP3318991A1 (en) * | 2016-11-02 | 2018-05-09 | Sap Se | Monitoring processes running on a platform as a service architecture |
CN108647243A (zh) * | 2018-04-13 | 2018-10-12 | 中国神华能源股份有限公司 | 基于时间序列的工业大数据存储方法 |
US10268566B2 (en) | 2016-11-04 | 2019-04-23 | Sap Se | Debugging in a private cloud environment |
CN110119418A (zh) * | 2018-01-16 | 2019-08-13 | 北京京东尚科信息技术有限公司 | 数据导出方法和装置 |
CN113051281A (zh) * | 2021-06-02 | 2021-06-29 | 成都四方伟业软件股份有限公司 | 一种时序数据库的实时流数据处理方法及装置 |
CN114328583A (zh) * | 2021-12-27 | 2022-04-12 | 中科星图股份有限公司 | 一种时序数据库的实时数据查询加速方法 |
CN114416797A (zh) * | 2022-01-19 | 2022-04-29 | 北京万旺科技有限公司 | 回放历史数据的方法及装置 |
WO2022126551A1 (zh) * | 2020-12-17 | 2022-06-23 | 北京涛思数据科技有限公司 | 一种时序数据的存储方法 |
CN116991925A (zh) * | 2023-07-27 | 2023-11-03 | 广东德尔智慧科技股份有限公司 | 一种高速采集数据以及快速海量数据保存的方法 |
CN117111846A (zh) * | 2023-08-23 | 2023-11-24 | 深圳市鼎飞技术有限公司 | 一种车辆定位点火熄火点实时识别方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1426244A (zh) * | 2001-12-20 | 2003-06-25 | 深圳市中兴通讯股份有限公司上海第二研究所 | 数据主备内存处理方法 |
US20050163014A1 (en) * | 2004-01-23 | 2005-07-28 | Nec Corporation | Duplicate data storing system, duplicate data storing method, and duplicate data storing program for storage device |
CN102779097A (zh) * | 2011-05-13 | 2012-11-14 | 上海振华重工(集团)股份有限公司 | 流程数据的内存存取方法 |
CN102779138A (zh) * | 2011-05-13 | 2012-11-14 | 上海振华重工(集团)股份有限公司 | 实时数据的硬盘存取方法 |
-
2014
- 2014-07-08 CN CN201410321184.1A patent/CN104077405B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1426244A (zh) * | 2001-12-20 | 2003-06-25 | 深圳市中兴通讯股份有限公司上海第二研究所 | 数据主备内存处理方法 |
US20050163014A1 (en) * | 2004-01-23 | 2005-07-28 | Nec Corporation | Duplicate data storing system, duplicate data storing method, and duplicate data storing program for storage device |
CN102779097A (zh) * | 2011-05-13 | 2012-11-14 | 上海振华重工(集团)股份有限公司 | 流程数据的内存存取方法 |
CN102779138A (zh) * | 2011-05-13 | 2012-11-14 | 上海振华重工(集团)股份有限公司 | 实时数据的硬盘存取方法 |
Cited By (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105739912A (zh) * | 2014-12-11 | 2016-07-06 | 北京北方微电子基地设备工艺研究中心有限责任公司 | 半导体设备中实时数据的存储方法及系统 |
CN104504105A (zh) * | 2014-12-30 | 2015-04-08 | 青岛海信网络科技股份有限公司 | 一种实时数据库的存储方法 |
CN104504105B (zh) * | 2014-12-30 | 2018-08-24 | 青岛海信网络科技股份有限公司 | 一种实时数据库的存储方法 |
CN107038075A (zh) * | 2015-07-14 | 2017-08-11 | 阿里巴巴集团控股有限公司 | 消息队列系统以及实现消息通信的方法 |
CN107038075B (zh) * | 2015-07-14 | 2020-12-25 | 阿里巴巴集团控股有限公司 | 消息队列系统以及实现消息通信的方法 |
CN107544964A (zh) * | 2016-06-24 | 2018-01-05 | 吴建凰 | 一种用于时序数据库的数据块存储方法 |
EP3318991A1 (en) * | 2016-11-02 | 2018-05-09 | Sap Se | Monitoring processes running on a platform as a service architecture |
US10180891B2 (en) | 2016-11-02 | 2019-01-15 | Sap Se | Monitoring processes running on a platform as a service architecture |
US10268566B2 (en) | 2016-11-04 | 2019-04-23 | Sap Se | Debugging in a private cloud environment |
CN106970935B (zh) * | 2017-01-20 | 2021-02-02 | 朗坤智慧科技股份有限公司 | 实时数据存储结构、数据写入方法及数据读取方法 |
CN106970935A (zh) * | 2017-01-20 | 2017-07-21 | 朗坤智慧科技股份有限公司 | 实时数据存储结构、数据写入方法及数据读取方法 |
CN110119418B (zh) * | 2018-01-16 | 2024-07-16 | 北京京东尚科信息技术有限公司 | 数据导出方法和装置 |
CN110119418A (zh) * | 2018-01-16 | 2019-08-13 | 北京京东尚科信息技术有限公司 | 数据导出方法和装置 |
CN108647243A (zh) * | 2018-04-13 | 2018-10-12 | 中国神华能源股份有限公司 | 基于时间序列的工业大数据存储方法 |
CN108647243B (zh) * | 2018-04-13 | 2021-11-23 | 中国神华能源股份有限公司 | 基于时间序列的工业大数据存储方法 |
WO2022126551A1 (zh) * | 2020-12-17 | 2022-06-23 | 北京涛思数据科技有限公司 | 一种时序数据的存储方法 |
US12093232B2 (en) | 2020-12-17 | 2024-09-17 | Taos Data | Method for storing time series data |
CN113051281A (zh) * | 2021-06-02 | 2021-06-29 | 成都四方伟业软件股份有限公司 | 一种时序数据库的实时流数据处理方法及装置 |
CN114328583A (zh) * | 2021-12-27 | 2022-04-12 | 中科星图股份有限公司 | 一种时序数据库的实时数据查询加速方法 |
CN114416797A (zh) * | 2022-01-19 | 2022-04-29 | 北京万旺科技有限公司 | 回放历史数据的方法及装置 |
CN114416797B (zh) * | 2022-01-19 | 2023-04-07 | 北京万旺科技有限公司 | 回放历史数据的方法及装置 |
CN116991925B (zh) * | 2023-07-27 | 2024-03-15 | 广东德尔智慧科技股份有限公司 | 一种高速采集数据以及快速海量数据保存的方法 |
CN116991925A (zh) * | 2023-07-27 | 2023-11-03 | 广东德尔智慧科技股份有限公司 | 一种高速采集数据以及快速海量数据保存的方法 |
CN117111846A (zh) * | 2023-08-23 | 2023-11-24 | 深圳市鼎飞技术有限公司 | 一种车辆定位点火熄火点实时识别方法 |
CN117111846B (zh) * | 2023-08-23 | 2024-08-02 | 深圳市鼎飞技术有限公司 | 一种车辆定位点火熄火点实时识别方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104077405B (zh) | 2018-06-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104077405A (zh) | 时序类型数据存取方法 | |
US10162598B2 (en) | Flash optimized columnar data layout and data access algorithms for big data query engines | |
CN103488709B (zh) | 一种索引建立方法及系统、检索方法及系统 | |
CN102890722B (zh) | 应用于时序历史数据库的索引方法 | |
CN111399777B (zh) | 一种基于数据值分类的差异化键值数据存储方法 | |
CN102663090B (zh) | 元数据查询方法和装置 | |
US9047330B2 (en) | Index compression in databases | |
KR102564170B1 (ko) | 데이터 객체 저장 방법, 장치, 및 이를 이용한 컴퓨터 프로그램이 저장되는 컴퓨터 판독가능한 저장 매체 | |
CN102541757B (zh) | 写缓存方法、缓存同步方法和装置 | |
KR102310246B1 (ko) | 세컨더리 인덱스 생성 방법 및 세컨더리 인덱스 저장 장치 | |
CN110162528A (zh) | 海量大数据检索方法及系统 | |
US9507705B2 (en) | Write cache sorting | |
CN104484471B (zh) | 一种高性能数据存储引擎的实现方法 | |
Athanassoulis et al. | MaSM: efficient online updates in data warehouses | |
CN103744913A (zh) | 一种基于搜索引擎技术的数据库检索方法 | |
CN104199892B (zh) | 一种基于压缩合并异步更新的索引读写方法 | |
CN110309233A (zh) | 数据存储的方法、装置、服务器和存储介质 | |
CN111475507B (zh) | 一种工作负载自适应单层lsmt的键值数据索引方法 | |
CN101782922A (zh) | 一种面向海量数据检索的多级桶哈希索引方法 | |
CN113268457B (zh) | 一种支持高效写的自适应学习索引方法和系统 | |
CN102411632B (zh) | 基于链表的内存数据库页式存储方法 | |
CN104391961A (zh) | 千万级小文件数据的一种读写解决策略 | |
US20160064030A1 (en) | Shingled magnetic recording data store | |
US10055442B2 (en) | Efficient updates in non-clustered column stores | |
Wang et al. | PLSM: a highly efficient LSM-tree index supporting real-time big data analysis |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |