CN113792043A - 一种实时数据的存储方法及系统 - Google Patents
一种实时数据的存储方法及系统 Download PDFInfo
- Publication number
- CN113792043A CN113792043A CN202110972664.4A CN202110972664A CN113792043A CN 113792043 A CN113792043 A CN 113792043A CN 202110972664 A CN202110972664 A CN 202110972664A CN 113792043 A CN113792043 A CN 113792043A
- Authority
- CN
- China
- Prior art keywords
- data
- real
- field
- time
- time data
- 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.)
- Pending
Links
Images
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
- G06F16/2219—Large Object storage; Management thereof
-
- 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
- G06F16/2228—Indexing structures
-
- 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/24—Querying
- G06F16/248—Presentation of query results
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种实时数据的存储方法及系统,包括:接收预定协议格式的实时数据,所述实时数据包含数据域字段和时间戳字段;解析所述实时数据中各字段的数据类型;从所述实时数据中提取数据域字段的内容和时间戳字段的内容,所述数据域字段的内容用于表示接入的数据域,所述时间戳字段的内容用于表示实时数据的采集时间;根据所述数据域字段定义索引名称,根据所述时间戳字段定义索引的时间后缀,生成唯一性的索引;基于解析出的数据类型为所述实时数据添加所述索引;对添加索引后的实时数据进行存储。通过采用自动索引的技术,提高了数据接入的效率和索引吞吐量,从而能够大幅提升实时数据分析时对字符类型数据的查询性能,提升实时数据分析的效率。
Description
技术领域
本发明涉及大数据技术领域,具体涉及一种实时数据的存储方法及系统。
背景技术
实时大数据分析是指对规模巨大的数据进行分析,利用大数据技术高效的快速完成分析,达到近似实时的效果,更及时的反映数据的价值和意义。一般认为,对于实时数据分析来说,数据从产生到可以分析展示出来,理想的情况下延迟应控制在在秒级。当前,业界常用实时数据分析系统(如Superset、Kibana等)来解决数据分析结果展示的问题。
在实现本发明过程中,发明人发现现有技术中至少存在如下问题:
现有技术未解决数据索引问题,导致了实时数据分析的效率较低,对于大型分布式数据库交互分析来说,查询响应一般在分钟级。
发明内容
本发明实施例提供一种实时数据的存储方法及系统,用以解决现有的实时数据分析的效率较低的问题。
为达到上述目的,一方面,本发明实施例提供一种实时数据的存储方法,包括:接收预定协议格式的实时数据,所述实时数据包含数据域字段和时间戳字段;解析所述实时数据中各字段的数据类型;从所述实时数据中提取数据域字段的内容和时间戳字段的内容,所述数据域字段的内容用于表示接入的数据域,所述时间戳字段的内容用于表示实时数据的采集时间;根据所述数据域字段定义索引名称,根据所述时间戳字段定义索引的时间后缀,生成唯一性的索引;基于解析出的数据类型为所述实时数据添加所述索引;对添加索引后的实时数据进行存储。
另一方面,本发明实施例提供一种实时数据的存储系统,包括:接收模块,用于接收预定协议格式的实时数据,所述实时数据包含数据域字段和时间戳字段;解析模块,用于解析所述实时数据中各字段的数据类型;提取模块,用于从所述实时数据中提取数据域字段的内容和时间戳字段的内容,所述数据域字段的内容用于表示接入的数据域,所述时间戳字段的内容用于表示实时数据的采集时间;索引创建模块,用于根据所述数据域字段定义索引名称,根据所述时间戳字段定义索引的时间后缀,生成唯一性的索引;存储模块,用于基于解析出的数据类型对添加索引后的实时数据进行存储。
上述技术方案具有如下有益效果:
本申请的技术方案,采用自动索引的技术,通过制定数据接入的协议格式,自动解析各字段的数据类型,并根据字段类型,确定添加索引的类型,从而提高了索引吞吐量;进一步通过定制化索引的创建,能够大幅提升实时数据分析时对字符类型数据的查询性能,提升实时数据分析的效率。
此外,本技术方案还具有以下特点:
1、现有技术未解决数据接入的问题,导致新业务接入数据,配置复杂,人工干预的阶段较多。采用本技术方案后,通过制定数据接入协议,提高了数据接入的效率,同时还降低了实时数据分析系统的运维成本;
2、本申请设计了一种根据数据流量来计算最优的索引分片数量的方法,从而保证了后续数据分析时具有很好的查询性能。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一种实时数据的存储方法的流程图;
图2是本发明一种实时数据的存储系统的组成图;
图3是采用了本发明实时数据的存储系统的实时数据分析系统整体架构图;
图4是本发明具体实施例中自动索引模块的架构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,本发明提供一种实时数据的存储方法,包括:
S101、接收预定协议格式的实时数据,所述实时数据包含数据域字段和时间戳字段;
S102、解析所述实时数据中各字段的数据类型;
S103、从所述实时数据中提取数据域字段的内容和时间戳字段的内容,所述数据域字段的内容用于表示接入的数据域,所述时间戳字段的内容用于表示实时数据的采集时间;
S104、根据所述数据域字段定义索引名称,根据所述时间戳字段定义索引的时间后缀,生成唯一性的索引;
S105、基于解析出的数据类型为所述实时数据添加所述索引;
S108、对添加所述索引后的实时数据进行存储。
为了提高实时数据分析系统的工作效率,本技术方案中采用对实时数据中的字符类型数据字段增加索引的方式,来提高对字符类型数据的查询速度。由于本技术方案中的索引由数据域字段和时间戳字段的值拼接而成,因此需要预先定义数据格式,要求实时数据中必须至少包含这两个字段,以便后续的处理。自动索引模块根据business数据域字段字段,定义索引名称。根据timestamp时间戳字段,定义索引的时间后缀,两个字段共同保证索引名称的唯一性。本实施例中,timesstamp中的值表示的是以自然日为单位的日期,用于后续创建按天为单位的索引。
进一步的,所述步骤S105具体包括:
S1051、选定所述实时数据中除所述数据域字段外的所有字符数据类型字段;
S1052、为每个选定的字符数据类型字段分别添加所述唯一性的索引。
由于在数据分析中,数值类型的字段不参与查询,只会用来计算,因此本技术方案中,为了节省索引开销,自动索引模块不再为数值类型的字段添加索引,而只为字符数据类型的字段增加索引。
进一步的,所述步骤S104具体包括:将所述数据域字段的内容和所述时间戳字段的内容进行拼接,将拼接结果作为所述唯一性的索引。
进一步的,所述预定协议格式的实时数据是指JSON格式数据;在步骤S101之前,还包括:
S001、确定所述实时数据的采集时间、以及接入的数据域;
S002、将所述采集时间添加到所述时间戳字段中,以及将接入的数据域添加到所述数据域字段中。
索引中的后部分代表数据采集的时间,由数据采集SDK负责添加。
进一步的,在步骤S108之前,还包括:
S106、根据实时数据流量和预定的索引保存时限确定实时数据总量;
S107、根据预定的分片存储容量和所述实时数据总量确定分片数量并设置相应数量的分片,所述分片用于存储添加所述索引后的实时数据。;
分布式索引查询的性能受分片大小和数量的影响,现有技术通常是结合服务器配置和索引大小,凭借集群管理员的经验,人工设置索引分片的大小和数量。本发明实现了一种依据数据流量(每秒接入的数据量),计算最优索引分片数量的方法,根据集群规模及服务器配置确定分片数量的区间和分片最大值。分片的大小原则上不能大于集群节点JVM堆内存,否则查询性能会下降。
如图2所示,本发明实施例提供一种实时数据的存储系统,包括:
接收模块21,用于接收预定协议格式的实时数据,所述实时数据包含数据域字段和时间戳字段;
解析模块22,用于解析所述实时数据中各字段的数据类型;
提取模块23,用于从所述实时数据中提取数据域字段的内容和时间戳字段的内容,,所述数据域字段的内容用于表示接入的数据域,所述时间戳字段的内容用于表示实时数据的采集时间;
索引创建模块24,用于根据所述数据域字段定义索引名称,根据所述时间戳字段定义索引的时间后缀,生成唯一性的索引;
索引添加模块25,用于基于解析出的数据类型为所述实时数据添加所述索引;
存储模块28,用于对添加索引后的实时数据进行存储。
进一步的,所述索引添加模块25具体用于:
选定所述实时数据中除所述数据域字段外的所有字符数据类型字段;为每个选定的字符数据类型字段分别添加所述唯一性的索引。
进一步的,所述索引创建模块24具体用于:将所述数据域字段的内容和所述时间戳字段的内容进行拼接,将拼接结果作为所述唯一性的索引。
进一步的,所述预定协议格式的实时数据是指JSON格式数据;所述系统还包括:
添加模块20,用于确定所述实时数据的采集时间、以及接入的数据域;将所述采集时间添加到所述时间戳字段中,以及将接入的数据域添加到所述数据域字段中。
进一步的,所述系统还包括:
计算模块26,用于根据实时数据流量和预定的索引保存时限确定实时数据总量;
分片设置模块27,用于根据预定的分片容量和所述实时数据总量确定分片数量并设置相应数量的分片,所述分片用于存储添加所述索引后的实时数据。
以下结合具体应用实例对本发明技术方案进行详细说明:
如图3所示,是采用了本发明一种实时数据分析系统的具体实施例,其由数据接入、自动索引、数据存储和实时数据分析四部分组成,其中自动索引和数据存储部分采用本发明的技术方案。
数据接入模块:开发数据采集SDK,嵌入到应用程序服务端或客户端,自动收集并上报数据。考虑到数据接入需要高吞吐量、易扩展及高可用等方面的性能要求,数据采集SDK将数据上报到分布式消息队列Kafka中。数据接入模块,实时监控数据流量,根据流量自动扩容消息队列,以保证数据上报的实时性。
自动索引模块:定义数据接入协议JSON格式,举例如下:
协议要求,接入数据必须包括business和timestamp两个字段。Business代表接入的数据域,timestamp代表数据采集的时间,由数据采集SDK负责添加。
自动索引模块根据business字段,定义索引名称。根据timestamp字段,定义索引的时间后缀,两个字段共同保证索引名称的唯一性。其它数据字段,自动解析数据类型,字符类型数据添加索引,对象或数值类型的数据,不再创建索引。以上面数据为例,自动索引模块会自动创建索引名为video-play-data-20210329的索引,字段system、province,、country、network和app_version值的类型为字符型,自动给这些字段添加索引,以提高数据分析中的查询性能。字段buffer_count和play_time值的类型是数值,由于在数据分析中,数值类型的字段不参与查询,只会用来计算,为了节省索引开销,自动索引模块不再为数值类型的字段添加索引。字段的索引保到fielddata中,加载到内存,提升查询性能。添加索引后数据,格式如下:
数据存储模块:存储模块负责存储数据和索引,并提供多维分析查询能力。索引的类型在自动索引模块自动解析,提升数据查询的性能。
在此之中,自动索引模块的架构如图4所示:
自动索引模块从分布式消息队列中获取数据,解析JSON数据,确定索引名、索引时间后缀以及字段是否需要添加索引。这些信息确定之后,接下来需要创建索引,而索引的创建和业务数据相关。
首先不同业务数据,历史数据保存的时间不同,有的保存几天,有的保存几个月,最长的有保存几年的。创建索引时,需要根据历史数据保存的时长,来考虑创建天索引,月索引或按年索引。其次不同业务数据写入QPS各不相同。创建索引时,还需要根据数据量,计算最优的索引分片大小和数量,保证数据分析时查询性能最优。
因此,自动索引模块需要和具体的业务数据解耦,才能实现索引的自动创建。本系统设计一种逻辑的天索引,实现了索引与业务数据的解耦。逻辑的天索引是一种虚索引,由索引管理模块负责将这种虚索引对应到具体的物理索引上去。
另以一具体实例说明本发明方案中计算最优的索引分片数量的方法:
假设某集群分片数量的区间是:大于等于12并且小于等于72,分片大小小于等20GB。现有一份实时接入的数据,数据流量是50MB/秒,业务上查询需求需要一天的数据创建一个索引。通过数据流量计算出一天的数据总量是50Mb/8×3600×24=527GB,计算索引的分片数量是527GB/20GB=26个。从而确定该实时数据索引分片的最优数量是26个。
为使本领域内的任何技术人员能够实现或者使用本发明,上面对所公开实施例进行了描述。对于本领域技术人员来说;这些实施例的各种修改方式都是显而易见的,并且本申请定义的一般原理也可以在不脱离本公开的精神和保护范围的基础上适用于其它实施例。因此,本公开并不限于本申请给出的实施例,而是与本申请公开的原理和新颖性特征的最广范围相一致。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种实时数据的存储方法,其特征在于,包括:
接收预定协议格式的实时数据,所述实时数据包含数据域字段和时间戳字段;
解析所述实时数据中各字段的数据类型;
从所述实时数据中提取数据域字段的内容和时间戳字段的内容,所述数据域字段的内容用于表示接入的数据域,所述时间戳字段的内容用于表示实时数据的采集时间;
根据所述数据域字段定义索引名称,根据所述时间戳字段定义索引的时间后缀,生成唯一性的索引;
基于解析出的数据类型为所述实时数据添加所述索引;
对添加索引后的实时数据进行存储。
2.如权利要求1所述的实时数据的存储方法,其特征在于,所述基于解析出的数据类型为所述实时数据添加索引,具体包括:
选定所述实时数据中除所述数据域字段外的所有字符数据类型字段;
为每个选定的字符数据类型字段分别添加所述唯一性的索引。
3.如权利要求1所述的实时数据的存储方法,其特征在于,根据所述数据域字段定义索引名称,根据所述时间戳字段定义索引的时间后缀,生成唯一性的索引,具体包括:
将所述数据域字段的内容和所述时间戳字段的内容进行拼接,将拼接结果作为所述唯一性的索引。
4.如权利要求1所述的实时数据的存储方法,其特征在于,所述预定协议格式的实时数据是指JSON格式数据;在接收符合预定协议格式的实时数据之前,还包括:
确定所述实时数据的采集时间、以及接入的数据域;
将所述采集时间添加到所述时间戳字段中,以及将接入的数据域添加到所述数据域字段中。
5.如权利要求2所述的实时数据的存储方法,其特征在于,所述对添加索引后的实时数据进行存储之前,还包括:
根据实时数据流量和预定的索引保存时限确定实时数据总量;
根据预定的分片存储容量和所述实时数据总量确定分片数量并设置相应数量的分片,所述分片用于存储添加所述索引后的实时数据。
6.一种实时数据的存储系统,其特征在于,包括:
接收模块,用于接收预定协议格式的实时数据,所述实时数据包含数据域字段和时间戳字段;
解析模块,用于解析所述实时数据中各字段的数据类型;
提取模块,用于从所述实时数据中提取数据域字段的内容和时间戳字段的内容,所述数据域字段的内容用于表示接入的数据域,所述时间戳字段的内容用于表示实时数据的采集时间;
索引创建模块,用于根据所述数据域字段定义索引名称,根据所述时间戳字段定义索引的时间后缀,生成唯一性的索引;
索引添加模块,用于基于解析出的数据类型为所述实时数据添加所述索引;
存储模块,用于对添加索引后的实时数据进行存储。
7.如权利要求6所述的实时数据的存储系统,其特征在于,所述索引添加模块具体用于:
选定所述实时数据中除所述数据域字段外的所有字符数据类型字段;为每个选定的字符数据类型字段分别添加所述唯一性的索引。
8.如权利要求6所述的实时数据的存储系统,其特征在于,所述索引创建模块具体用于:将所述数据域字段的内容和所述时间戳字段的内容进行拼接,将拼接结果作为所述唯一性的索引。
9.如权利要求6所述的实时数据的存储系统,其特征在于,所述预定协议格式的实时数据是指JSON格式数据;所述系统还包括:
添加模块,用于确定所述实时数据的采集时间、以及接入的数据域;将所述采集时间添加到所述时间戳字段中,以及将接入的数据域添加到所述数据域字段中。
10.如权利要求7所述的实时数据的存储系统,其特征在于,所述系统还包括:
计算模块,用于根据实时数据流量和预定的索引保存时限确定实时数据总量;
分片设置模块,用于根据预定的分片存储容量和所述实时数据总量确定分片数量并设置相应数量的分片,所述分片用于存储添加所述索引后的实时数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110972664.4A CN113792043A (zh) | 2021-08-24 | 2021-08-24 | 一种实时数据的存储方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110972664.4A CN113792043A (zh) | 2021-08-24 | 2021-08-24 | 一种实时数据的存储方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113792043A true CN113792043A (zh) | 2021-12-14 |
Family
ID=78876305
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110972664.4A Pending CN113792043A (zh) | 2021-08-24 | 2021-08-24 | 一种实时数据的存储方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113792043A (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110069219A (zh) * | 2019-04-23 | 2019-07-30 | 深信服科技股份有限公司 | 一种数据存储方法、系统及电子设备和存储介质 |
CN110427368A (zh) * | 2019-07-12 | 2019-11-08 | 深圳绿米联创科技有限公司 | 数据处理方法、装置、电子设备及存储介质 |
CN111797095A (zh) * | 2020-06-10 | 2020-10-20 | 阿里巴巴集团控股有限公司 | 索引构建方法和json数据查询方法 |
CN112434039A (zh) * | 2020-11-30 | 2021-03-02 | 浙江大华技术股份有限公司 | 数据的存储方法、装置、存储介质以及电子装置 |
-
2021
- 2021-08-24 CN CN202110972664.4A patent/CN113792043A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110069219A (zh) * | 2019-04-23 | 2019-07-30 | 深信服科技股份有限公司 | 一种数据存储方法、系统及电子设备和存储介质 |
CN110427368A (zh) * | 2019-07-12 | 2019-11-08 | 深圳绿米联创科技有限公司 | 数据处理方法、装置、电子设备及存储介质 |
CN111797095A (zh) * | 2020-06-10 | 2020-10-20 | 阿里巴巴集团控股有限公司 | 索引构建方法和json数据查询方法 |
CN112434039A (zh) * | 2020-11-30 | 2021-03-02 | 浙江大华技术股份有限公司 | 数据的存储方法、装置、存储介质以及电子装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109947668B (zh) | 存储数据的方法和装置 | |
CN108776934B (zh) | 分布式数据计算方法、装置、计算机设备及可读存储介质 | |
CN101277272B (zh) | 一种海量广播数据入库的实现方法 | |
CN112800095A (zh) | 一种数据处理方法、装置、设备及存储介质 | |
CN113312376B (zh) | 一种用于Nginx日志实时处理分析的方法及终端 | |
CN110704484A (zh) | 一种对海量实时数据流进行处理的方法及系统 | |
CN106815254A (zh) | 一种数据处理方法和装置 | |
CN110147470B (zh) | 一种跨机房数据比对系统及方法 | |
CN111552885A (zh) | 实现自动化实时消息推送运营的系统及其方法 | |
CN113420032A (zh) | 一种日志的分类存储方法及装置 | |
CN111897867A (zh) | 一种数据库日志统计方法、系统及相关装置 | |
CN108763323A (zh) | 基于资源集和大数据技术的气象格点文件应用方法 | |
CN111984505A (zh) | 一种运维数据采集引擎及采集方法 | |
EP3314865A1 (en) | Datastore for aggregated measurements for metrics | |
CN111666344A (zh) | 异构数据同步方法及装置 | |
CN114971714A (zh) | 一种基于大数据标签的精准客户运营方法和计算机设备 | |
CN116089414B (zh) | 基于海量数据场景的时序数据库写入性能优化方法及装置 | |
CN110851758A (zh) | 一种网页访客数量统计方法及装置 | |
CN114625805B (zh) | 一种回测配置方法、装置、设备及介质 | |
CN113792043A (zh) | 一种实时数据的存储方法及系统 | |
CN111049898A (zh) | 一种实现计算集群资源跨域架构的方法及系统 | |
EP4209933A1 (en) | Data processing method and apparatus, and electronic device and storage medium | |
CN115344633A (zh) | 数据处理方法、装置、设备和存储介质 | |
CN114722045A (zh) | 时间序列数据的存储方法及装置 | |
CN116628042A (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 |