CN110188160B - 数据存储方法和数据读取方法 - Google Patents
数据存储方法和数据读取方法 Download PDFInfo
- Publication number
- CN110188160B CN110188160B CN201910470947.1A CN201910470947A CN110188160B CN 110188160 B CN110188160 B CN 110188160B CN 201910470947 A CN201910470947 A CN 201910470947A CN 110188160 B CN110188160 B CN 110188160B
- Authority
- CN
- China
- Prior art keywords
- data
- character string
- processing
- data character
- character strings
- 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
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/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/31—Indexing; Data structures therefor; Storage structures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开提供了一种数据存储方法,包括:获得数据;解析所述数据,得到所述数据的数据结构和数据字符串,其中,所述数据结构和所述数据字符串具有第一对应关系,并且共同构成所述数据;按照第二对应关系将所述数据结构和所述数据字符串分别存储在第一数据集合和第二数据集合,其中,所述第二对应关系包括数据结构与所述第一数据集合的对应关系,以及数据字符串与所述第二数据集合的对应关系。本公开还提供了一种数据读取方法。
Description
技术领域
本公开涉及一种数据存储方法和数据读取方法。
背景技术
随着通信和计算机技术的快速发展,数据在生产和生活中起到越来越重要的作用。由于电子设备的存储空间和传输带宽有限,需要通过数据压缩来提高存储空间和传输带宽的利用率。
以日志采集和存储场景为例,一个计算机设备厂商的日志的数据量按照压缩后可以达到每天几百吉字节(GB)的速度增长。因为数据是多副本的,所以实际数据存储成本和计算资源占用成本非常大,这给数据分析或者数据保存带来高额成本。
发明内容
本公开的一个方面提供了一种数据存储方法,可以包括如下操作,首先,获得数据,然后,对所述数据进行解析,得到所述数据的数据结构和数据字符串,其中,所述数据结构和所述数据字符串具有第一对应关系,并且共同构成所述数据,接着,按照第二对应关系将所述数据结构和所述数据字符串分别存储在第一数据集合和第二数据集合,其中,所述第二对应关系包括数据结构与所述第一数据集合的对应关系,以及数据字符串与所述第二数据集合的对应关系。
本公开实施例提供的数据存储方法,从数据中解析出数据结构后,将数据结构和数据字符串分别存储在第一数据集合中和第二数据集合中,这样无需重复存储相同的数据结构,能有效降低数据占用的存储空间。此外,还可以便于基于数据集合的特点分别采用对应的处理方式对数据分别进行处理以进一步降低数据占用的存储空间。
可选地,所述方法还可以包括如下操作,在得到所述数据的数据结构和数据字符串之后,采用第一处理方式对所述数据结构进行处理,以及采用第二处理方式对所述数据字符串进行处理,得到处理后的数据结构和处理后的数据字符串,相应地,所述按照第二对应关系将所述数据结构和所述数据字符串分别存储在第一数据集合和第二数据集合中可以包括按照第二对应关系将所述处理后的数据字符串和所述处理后的数据字符串分别存储在所述第一数据集合和所述第二数据集合,其中,采用第一处理方式或第二处理方式对相同数据字符串进行处理,处理后的数据字符串占用的存储空间不同。分别对数据结构和数据字符串采用不同的处理方式进行处理,以尽量减小所述数据结构和数据字符串占用的存储空间。
可选地,采用第二处理方式对所述数据字符串进行处理可以包括如下操作,如果所述数据字符串中至少部分数据字符串符合第一规律,则对所述至少部分数据字符串设置标注信息,所述第一规律指所述至少部分数据字符串的变化具有规律,然后,基于所述标注信息对所述至少部分数据字符串进行处理以减小所述至少部分数据字符串占用的存储空间,其中,所述标注信息包括算法标识和/或针对所述第一规律的处理算法。这可以对具有规律的至少部分数据字符串,如给某一列的数据字符串,或某一列的部分具有规律的数据字符串设置标注信息,以便于基于标注信息进行拟合等处理,以减小所述至少部分数据字符串占用的存储空间。
可选地,所述方法还可以包括如下操作:首先,获取所述数据结构的变量对应的数据字符串,然后,将不同变量对应的数据字符串分别存储在不同的列,接着,采用第二处理方式对所述数据字符串进行处理包括:以列为单位采用第二处理方式对所述数据字符串进行处理,其中,不同的列采用的第二处理方式不同。所述数据字符串可以以列的形式进行存储,不同变量的数据字符串存储在不同的列,便于对不同的列基于其包括的规律采取不同的处理方式进行处理,减小占用的存储空间。
可选地,所述方法还可以包括如下操作,对于所述第二数据集合中存储的第一格式的数据,将至少部分第一格式的数据转换为第二格式的数据,所述第一格式的数据与所述第二格式的数据占用的存储空间的大小不同。由于一些特定格式的数据字符串可以通过转换操作显著的减小其占用空间的大小,因此,可以对这些具有特定格式的数据进行转换。
可选地,解析所述数据得到所述数据的数据结构和数据字符串可以包括如下操作,首先,所述数据字符串为日志的字符串,对日志进行分析,得到模板,然后,基于所述模板获取所述至少一个日志的数据字符串。通过该方式可以简单高效地将数据解析为数据结构和数据字符串。
本公开的另一个方面提供了一种数据读取方法,可以包括如下操作,首先,获得处理指令,响应于所述处理指令,按照第二对应关系分别从第一数据集合和第二数据集合中获取所述数据结构和所述数据字符串,所述第二对应关系包括数据结构与所述第一数据集合的对应关系,以及数据字符串与所述第二数据集合的对应关系,然后,将所述数据结构和所述数据字符串按照第一对应关系进行整合,得到数据,其中,所述数据结构和所述数据字符串具有第一对应关系。
可选地,所述按照第二对应关系分别从第一数据集合和第二数据集合中获取所述数据结构和所述数据字符串可以包括如下操作,首先,按照第二对应关系从所述第一数据集合获取第一处理方式处理后的数据结构和按照第二对应关系从所述第二数据集合中获取第二处理方式处理后数据字符串,所述第一处理方式与所述第二处理方式不同,然后,对所述第一处理方式处理后的数据结构进行第一逆处理和对所述第二处理方式处理后的数据字符串进行第二逆处理,得到数据结构和数据字符串。
可选地,所述方法还可以包括如下操作,将所述第一数据集合中至少部分数据结构和对应的结构标识存储在缓存,以便当从第二数据集合中获取到所述处理指令对应的结构标识后,利用所述处理指令对应的结构标识从缓存获取对应的数据结构。
可选地,所述方法还可以包括如下操作,首先,接收检索指令,响应于所述检索指令,根据所述检索指令相应的变量从第二数据集合中获取待检索的列的数据字符串,所述待检索的列包括至少一列,所述至少一列中每列对应所述检索指令相应的一个变量,其中,不同变量对应不同的列,不同的列采用的第二处理方式不同,一个数据结构对应至少一列,然后,基于所述检索指令对所述待检索的列中每一列的数据字符串进行检索。
本公开的另一个方面提供了一种数据存储装置,可以包括数据获得模块、数据解析模块和数据存储模块,其中,所述数据获得模块用于获得数据,所述数据解析模块用于解析所述数据,得到所述数据的数据结构和数据字符串,其中,所述数据结构和所述数据字符串具有第一对应关系,并且共同构成所述数据,所述数据存储模块用于按照第二对应关系将所述数据结构和所述数据字符串分别存储在第一数据集合和第二数据集合,其中,所述第二对应关系包括数据结构与所述第一数据集合的对应关系,以及数据字符串与所述第二数据集合的对应关系。
可选地,所述装置还可以包括数据处理模块,所述数据处理模块用于在得到所述数据的数据结构和数据字符串之后,采用第一处理方式对所述数据结构进行处理,以及采用第二处理方式对所述数据字符串进行处理,得到处理后的数据结构和处理后的数据字符串。相应地,所述数据存储模块具体用于按照第二对应关系将所述处理后的数据字符串和所述处理后的数据字符串分别存储在所述第一数据集合和所述第二数据集合,其中,采用第一处理方式或第二处理方式对相同数据字符串进行处理,处理后的数据字符串占用的存储空间不同。
可选地,所述数据存储模块包括规律确定单元和标注单元,其中,所述规律确定单元用于如果所述数据字符串中至少部分数据字符串符合第一规律,则对所述至少部分数据字符串设置标注信息,所述第一规律指所述至少部分数据字符串的变化具有规律,所述标注单元用于基于所述标注信息对所述至少部分数据字符串进行处理以减小所述至少部分数据字符串占用的存储空间,其中,所述标注信息包括算法标识和/或针对所述第一规律的处理算法。
可选地,所述装置还可以包括:字符串获取模块和分列存储模块,其中,所述字符串获取模块用于获取所述数据结构的变量对应的数据字符串,所述分列存储模块用于将不同变量对应的数据字符串分别存储在不同的列。相应地,所述数据数据处理模块具体用于以列为单位采用第二处理方式对所述数据字符串进行处理,其中,不同的列采用的第二处理方式不同。
可选地,所述装置还包括格式转换模块,所述格式转换模块用于对于所述第二数据集合中存储的第一格式的数据字符串,将至少部分第一格式的数据字符串转换为第二格式的数据字符串,所述第一格式的数据字符串与所述第二格式的数据字符串占用的存储空间的大小不同。
可选地,所述数据解析模块包括模板获取单元和字符串获取单元,其中,所述模板获取单元用于当所述数据字符串为日志的字符串,对日志进行分析,得到模板,所述字符串获取单元用于基于所述模板获取所述至少一个日志的数据字符串。
本公开的另一个方面提供了一种数据读取装置,该装置可以包括指令获得模块、指令响应模块和整合模块,其中,所述指令获得模块用于获得处理指令,所述指令响应模块用于响应于所述处理指令,按照第二对应关系分别从第一数据集合和第二数据集合中获取所述数据结构和所述数据字符串,所述第二对应关系包括数据结构与所述第一数据集合的对应关系,以及数据字符串与所述第二数据集合的对应关系,所述整合模块用于将所述数据结构和所述数据字符串按照第一对应关系进行整合,得到数据,其中,所述数据结构和所述数据字符串具有第一对应关系。
可选地,所述指令响应模块可以包括数据获取单元和逆处理单元,其中,所述数据获取单元用于按照第二对应关系从所述第一数据集合获取第一处理方式处理后的数据结构和按照第二对应关系从所述第二数据集合中获取第二处理方式处理后数据字符串,所述第一处理方式与所述第二处理方式不同,所述逆处理单元用于对所述第一处理方式处理后的数据结构进行第一逆处理和对所述第二处理方式处理后的数据字符串进行第二逆处理,得到数据结构和数据字符串。
可选地,所述装置还可以包括缓存模块,该缓存模块用于将所述第一数据集合中至少部分数据结构和对应的结构标识存储在缓存,以便当从第二数据集合中获取到所述处理指令对应的结构标识后,利用所述处理指令对应的结构标识从缓存获取对应的数据结构。
可选地,所述装置还可以包括:指令接收模块、字符串获取模块和检索模块,其中,所述指令接收模块用于接收检索指令,所述字符串获取模块用于响应于所述检索指令,根据所述检索指令相应的变量从第二数据集合中获取待检索的列的数据字符串,所述待检索的列包括至少一列,所述至少一列中每列对应所述检索指令相应的一个变量,其中,不同变量对应不同的列,不同的列采用的第二处理方式不同,一个数据结构对应至少一列,所述检索模块用于基于所述检索指令对所述待检索的列中每一列的数据字符串进行检索。
本公开的另一个方面提供了一种电子设备,该电子设备可以包括:一个或多个处理器和计算机可读存储介质,所述计算机可读存储介质用于存储一个或多个计算机程序,所述计算机程序在被所述处理器执行时,用于实现如上所述的方法。
本公开的另一方面提供了一种计算机可读存储介质,存储有计算机可执行指令,所述指令在被执行时用于实现如上所述的方法。
本公开的另一方面提供了一种计算机程序,所述计算机程序包括计算机可执行指令,所述指令在被执行时用于实现如上所述的方法。
附图说明
为了更完整地理解本公开及其优势,现在将参考结合附图的以下描述,其中:
图1A示意性示出了根据本公开实施例的数据存储方法和数据读取方法的应用场景;
图1B示意性示出了根据本公开实施例的适于所述数据存储方法的系统架构图;
图2A示意性示出了根据本公开实施例的数据存储方法的流程图;
图2B示意性示出了根据本公开另一实施例的数据存储方法的流程图;
图2C示意性示出了根据本公开实施例的数据存储格式示意图;
图3A示意性示出了根据本公开实施例的数据读取方法的流程图;
图3B示意性示出了根据本公开另一实施例的数据读取方法的流程图;
图3C示意性示出了根据本公开实施例的数据检索示意图;
图4A示意性示出了根据本公开实施例的数据存储装置的框图;
图4B示意性示出了根据本公开实施例的数据读取装置的框图;以及
图5示意性示出了根据本公开实施例的电子设备的框图。
具体实施方式
以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本公开实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。
在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。
在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。
在使用类似于“A、B和C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B和C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。在使用类似于“A、B或C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B或C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。
附图中示出了一些方框图和/或流程图。应理解,方框图和/或流程图中的一些方框或其组合可以由计算机程序指令来实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,从而这些指令在由该处理器执行时可以创建用于实现这些方框图和/或流程图中所说明的功能/操作的装置。本公开的技术可以硬件和/或软件(包括固件、微代码等)的形式来实现。另外,本公开的技术可以采取存储有指令的计算机可读存储介质上的计算机程序产品的形式,该计算机程序产品可供指令执行系统使用或者结合指令执行系统使用。
现有技术中有多种数据处理方法可用于多种不同的数据格式以减小数据占用的存储空间。例如,可以压缩文档、音频、视频和任何其他数据格式。现有技术通常是将接收的数据采用相同的数据处理方法进行处理,节省的存储空间并不理想。例如,Deflate、bzip2、LZMA是常用归档数据格式(如zip、rar和tar)中的默认压缩算法。其原理是通过将所有输入文件组合成长数据串并基于长数据串内符号的排列和频率对长数据串进行压缩。但是,节省的存储空间并不理想。
本公开的实施例提供了一种数据存储方法和数据读取方法。该数据存储方法包括数据解析过程和数据存储过程。在数据解析过程中,解析所述数据,得到所述数据的数据结构和数据字符串,其中,所述数据结构和所述数据字符串具有第一对应关系,并且共同构成所述数据。在完成数据解析之后,进入数据存储过程,按照第二对应关系将所述数据结构和所述数据字符串分别存储在第一数据集合和第二数据集合,其中,所述第二对应关系包括数据结构与所述第一数据集合的对应关系,以及数据字符串与所述第二数据集合的对应关系。
图1A示意性示出了根据本公开实施例的数据存储方法和数据读取方法的应用场景。需要注意的是,图1A所示仅为可以应用本公开实施例的场景的示例,以帮助本领域技术人员理解本公开的技术内容,但并不意味着本公开实施例不可以用于其他设备、系统、环境或场景。
如图1A所示,以下以三个数据为例进行说明,需要说明的是,随着数据的数量的增多,减小数据占用存储空间的效果越好。图1A中虚线左边为获得的三个数据:数据1、数据2和数据3。现有技术为了减小这三个数据占用的存储空间,通常是将数据1、数据2和数据3组合成长数据串并基于长数据串内符号的排列和频率对长数据串进行压缩,这样的压缩效率不能满足需求。本公开的实施例中至少为了进一步降低三个数据占用的存储空间,对这三个数据进行解析,得到至少一个数据结构和三个数据字符串。其中,数据结构的个数小于等于数据的个数。随着数据个数的增加,具有相同数据结构的数据也会变多,这些相同的数据结构只需存储一个即可。以联想日志采集和存储场景为例,日志的数据量按照压缩后每天几百吉字节(GB)增长,由于数据是多副本的,所以实际数据存储成本和计算资源占用成本非常大。通过以上方式有效减少了数据中数据结构占用的存储空间,进而减小了数据占用的存储空间。
图1B示意性示出了根据本公开实施例的适于所述数据存储方法的系统架构图。
如图1B所示,根据该实施例的系统架构100可以包括终端设备101、102、103,网络104和服务器105、106、107。网络104用以在终端设备101、102、103和服务器105、106、107之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备101、102、103通过网络104与服务器105、106、107交互,以接收或发送信息等。终端设备101、102、103在运行过程中会产生各种类型的日志,如工作日志、操作日志等,此外,还可以安装有各种即时通讯的通讯客户端应用等。此外,服务器在运行过程中也会产生海量的日志,这些日志同样适用本公开提供的方法。
终端设备101、102、103,包括但不限于机床等能产生数据的生产制造类设备,复印机等能产生数据的办公类设备,以及手机、平板电脑、膝上型便携计算机等消费类电子产品,即,工作过程中会产生需要存储的数据的设备都适用。至少部分服务器用于解析并存储上述日志等数据。
图2A示意性示出了根据本公开实施例的数据存储方法的流程图。
如图2A所示,所述数据存储方法包括操作S201~操作S205。
在操作S201,获得数据。
在本实施例中,所述数据包括但不限于接收的来自其它设备的数据(如其它设备运行过程中产生的需要保存的数据、其它设备接收的需要保存的数据)、自身产生的需要保存的数据等,在此不做限定。
在操作S203,解析所述数据,得到所述数据的数据结构和数据字符串,其中,所述数据结构和所述数据字符串具有第一对应关系,并且共同构成所述数据。
在一个实施例中,所述解析所述数据,得到所述数据的数据结构和数据字符串可以包括如下操作。
首先,所述数据字符串为日志的字符串,对日志进行分析,得到模板。
在本实施例中,可以基于如下两种方式对日志进行解析。一种为每条日志都对应一个模板,其中,无法解析到模板的日志整体作为一个模板,由于每条日志必然对应一个模板,则可以按照时间顺序对所有日志进行处理,在后续日志读取时可以按时间顺序进行逆处理以恢复日志。另一种为解析出模板的每条日志分别对应一个模板,并对模板和对应的参数的值分别进行处理,没有解析出模板的每条日志分别作为一个整体数据进行处理,存储在第二数据集合之外或所述第二数据集合的单独一列中,当没有解析出模板的日志存储在第二数据集合之外时,每条日志具有排序信息以便于在进行日志读取时按照排序信息恢复成原始日志。
然后,基于所述模板获取所述至少一个日志的数据字符串。
在一个具体实施例中,对多个数据进行分析,尤其是设备工作过程中产生的用于记载各种设备状态的数据中,通常具有较多共用的数据结构。以日志为例进行说明。
设备在工作过程中生成的日志中很多是基于某种字符串模板生成,每次生成中由程序对目标进行自动填充,就可以生成一条日志。例如,日志生成的字符串模板如下所示。
模板:{time},{host},{application}运行状态:指标1={指标1},指标2={指标2}
某一工作时刻,设备生成的信息如表1所示。
表1设备生成的信息
参数 | 参数值 |
Time | 2019-03-27 14:39:21.008 |
Host | Windows-Node |
Application | 演示应用 |
指标1 | 1% |
指标2 | 20 |
则基于表1的信息生成的日志1如下所示。
2019-03-27 14:39:21.008,Windows-Node,演示应用运行状态:指标1=1%,指标2=20。
由此过程可见,日志生成过程是基于日志模板和变量数据的文本生成过程。因此,可以通过机器学习方法,从多个日志中,识别出日志模板,并进而提取日志中的变量数据,这个过程是上述日志文本生成过程的逆过程。机器学习可以采用如深度神经网络、卷积神经网络等及其结合,可以由神经网络对多个日志进行分析,得到预设个数的参数,作为数据的数据结构。其中,机器学习得到的数据结构的参数,其参数名称无需如表1中的第一栏中的名称,只需要机器识别出某些数据属于相同的参数即可。如时间参数可以由机器基于一定的规则命名为参数a,只要机器能将所有日志的时间参数的值归到参数a即可。此外,也可以是利用预先标注有参数信息的训练日志对神经网络进行训练,利用训练好的神经网络对日志进行解析,此时,生成的参数的名称应当与标注的参数的名称一致。
例如,日志1中包括大量数据结构相关信息,可以将这些数据结构相关信息(如表1中参数这一列信息,即相同的模板)解析出来,然后将相同的数据结构信息进行合并存储,可以有效降低数据占用的存储空间。
又例如,数据结构还可以是多个数据中的重复部分等,日志2如下所示。
2019-03-27 14:39:21.010,Windows-Node,演示应用运行状态:指标1=2%,指标2=22。
日志1、日志2、……日志N中存在大量重复的信息:2019-03-27,Windows-Node,演示应用运行状态。因此,可以通过对日志进行解析得到这些重复的信息,将其作为数据结构。其中,N为大于2的正整数。
在操作S205,按照第二对应关系将所述数据结构和所述数据字符串分别存储在第一数据集合和第二数据集合,其中,所述第二对应关系包括数据结构与所述第一数据集合的对应关系,以及数据字符串与所述第二数据集合的对应关系。
在本实施例中,参考图1A所示,可以将数据结构存储在第一数据集合中,将数据字符串存储在第二数据集合中。其中,第一数据集合中没有重复的数据结构,如第一数据集合中具有模板A,需要写入的新模板与模板A相同,则无需写入新模板,只需将该新模板的模板标识与模板A的模板标识建立关联即可。
在一个具体实施例中,以日志为例进行说明,数据存储过程主要包括:首先,对日志进行模式分析,如通过机器学习技术对日志进行解析,然后,对于解析出模板的日志,可以从日志中抽取模板中变量对应的值,并能识别变量类型,例如整型,浮点型,字符型。接着,重新持久化日志到2个独立的数据库:日志模板数据库和日志时间与模板变量数据库,其中日志时间可以转化为协调世界时间(Coordinated Universal Time,简称UTC)时间存储。
在另一个实施例中,所述方法还可以包括如下操作。
对于所述第二数据集合中存储的第一格式的数据字符串,将至少部分第一格式的数据字符串转换为第二格式的数据字符串,所述第一格式的数据字符串与所述第二格式的数据字符串占用的存储空间的大小不同。
在本实施例中,一些特定格式的数据字符串可以转换为占用存储空间更小的格式,例如,时间格式的数据字符串:2019-03-27 14:39:21.008,其通常是以文本格式进行存储,每个字符都需要较大的存储空间,如果将其转换成数值格式进行存储,则会大大降低时间格式的数据字符串占用的存储空间,例如,将其转换为时间戳:将一个起始时间与0000-00-00 00:00:00.000绑定,以毫秒为单位更新该时间戳,即,每过1毫秒,则该时间戳的值加1,这样就可以将时间格式的数据字符串转换为一个数值,如起始时间为2019-03-27 14:39:21.000,则2019-03-27 14:39:21.008可以表示为数值8,2019-03-27 14:39:22.008可以表示为数值1008。这样可以有效降低第一格式的数据字符串占用的存储空间。第一格式并不限定为时间格式,只要是能通过格式变换来减小数据占用的存储空间的各种格式都适用,在此不做限定。
本公开提供的数据存储方法从数据中解析出数据结构后,将数据结构和数据字符串分别存储在第一数据集合中和第二数据集合中,这样无需重复存储相同的数据结构,能有效降低数据占用的存储空间,如可以大大降低日志存储成本。因为数据压缩程度很高,数据读取时输入输出(IO)将大大降低,进而可能实现更高效率的数据读取。此外,还可以便于基于数据集合的特点分别采用对应的处理方式对数据分别进行处理以进一步降低数据占用的存储空间。
图2B示意性示出了根据本公开另一实施例的数据存储方法的流程图。
如图2B所示,所述方法还可以包括操作S207。
在操作S207,在得到所述数据的数据结构和数据字符串之后,采用第一处理方式对所述数据结构进行处理,以及采用第二处理方式对所述数据字符串进行处理,得到处理后的数据结构和处理后的数据字符串。
在本实施例中,由于将所述数据的数据结构和数据字符串分别存储在第一数据集合和第二数据集合中,因此,可以基于第一数据集合的特点对数据结构进行第一处理,基于第二数据集合的特点对数据结构进行第二处理。这样就可以基于数据集合的特点分别对其中的数据采用处理效果更好的处理算法来进一步降低占用的存储空间。
以日志为例进行说明,日志的数据结构可以为如上解析出的日志模板,通常都是文本类型数据,因此,可以基于文本数据的处理方式进行处理。日志的数据字符串中可以包括多个日志模板的参数对应的数据字符串,且至少部分参数对应的数据字符串为数值类型数据。因此,这部分数值类型数据可以基于数值数据的处理方式进行处理,其余参数对应的文本类型数据可以基于文本数据的处理方式进行处理。
可选地,所述第二数据集合为基于列式存储的数据集合,如每一列对应一个日志模板的参数,一个日志模板包括多少个参数,则一个日志模板可以对应多个列。例如,日志模板包括参数1,参数1对应第二列,则当多个日志中包括参数1的值时,则其都存储在第二列中,由于参数1的值的数据类型都一样,如浮点型数据,则可以基于相同的数据处理方法进行处理以降低其占用的存储空间。此外,基于列式存储时,也便于找出一列中数据的变化规律,按照变化规律对一列中数据进行处理,进一步降低其占用的存储空间。
相应地,所述按照第二对应关系将所述数据结构和所述数据字符串分别存储在第一数据集合和第二数据集合中可以包括如下操作:按照第二对应关系将所述处理后的数据字符串和所述处理后的数据字符串分别存储在所述第一数据集合和所述第二数据集合,其中,采用第一处理方式或第二处理方式对相同数据字符串进行处理,处理后的数据字符串占用的存储空间不同。
在另一个实施例中,上述采用第二处理方式对所述数据字符串进行处理可以包括如下操作。
如果所述数据字符串中至少部分数据字符串符合第一规律,则对所述至少部分数据字符串设置标注信息,所述第一规律指所述至少部分数据字符串的变化具有规律。
其中,所述规律包括但不限于以下至少一种:线性变化、周期性变化、可拟合变化、变化较小等。例如,分布式文件系统关于存储容量消耗与剩余容量的数值,在日志中的变化非常小,并接近于线性增长。又例如,记录环境温度,湿度的数据,在正常气候条件下,其变化幅度都很小。又例如,上述时间戳,是以1毫秒为单位累加的,时间戳的变化比如是以1毫秒为单位变化的,而且往往是周期性变化的,如每隔1分钟记录一次。
然后,基于所述标注信息对所述至少部分数据字符串进行处理以减小所述至少部分数据字符串占用的存储空间,其中,所述标注信息包括算法标识和/或针对所述第一规律的处理算法。
其中,与算法标识对应的算法可以是符合第一规律的数据字符串的处理算法。该对应的算法表明这些符合第一规律的数据字符串经过了哪些处理,以便于需要读取这些数据字符串时,利用与算法标识对应的算法对符合第一规律的数据字符串进行逆处理,以便还原符合第一规律的数据字符串。其中,算法可以存储在第二数据集合中,当然,也可以仅在第二数据集合中存储算法标识,而将算法存储在其它数据集合中,从而可以通过算法标识调用对应的算法。
以下以数据字符串的变化较小的场景为例进行说明,可以每4小时记录初始值,并记录期间数值变化的一阶导数,例如,每分钟的数值变化。或者,记录一段时间开始时间和结束时间的数值,其中数值通过线性回归进行拟合,则只需要通过开始和结束点的数据字符串就可以计算出来可接受的中间时间点的数据字符串。
需要说明的是,由于第二数据集合支持列式存储,因此,可以以列为单元确定每列是否分别具有不同的规律,可以分别对每列设置不同的算法或算法标识,进一步降低每列数据字符串占用的存储空间。所述方法还可以包括如下操作。
首先,获取所述数据结构的变量对应的数据字符串。
然后,将不同变量对应的数据字符串分别存储在不同的列。
相应地,所述采用第二处理方式对所述数据字符串进行处理包括:以列为单位采用第二处理方式对所述数据字符串进行处理,其中,不同的列采用的第二处理方式不同。
图2C示意性示出了根据本公开实施例的数据存储格式示意图。
如图2C所示,第一数据集合和第二数据集合相互独立,第一数据集合存储数据结构及数据结构标识,第二数据集合存储数据字符串和对应的数据结构标识,一行对应一个数据(如一个日志)和一个数据结构,一列对应一个数据结构的参数。例如,参数1对应时间参数,用于存储时间信息,则可以基于上述格式转换的方式和周期性规律对时间参数的列进行处理。参数2对应性能参数a,且其具有可拟合的规律,则基于可拟合的规律对这一列进行处理。参数3对应性能参数b,且其具有线性变化的规律,则基于线性变化的规律对这一列进行处理。参数4对应性能参数c,在某个时间段(如零点至4点之间的变化为零),则可以基于变化为零的规律对这一列中符合该规律的字符串进行标注或处理。通过上面的第二处理方式,只需要保存开始点和结束点的数据字符串以及数据字符串还原算法,而不需要保存两个时间点之间的变量数据,因此可以占用更少的存储空间。
相比于传统的保存完整的字符串的数据存储方法,将数据结构和数据字符串分离,将整型、浮点型等数据字符串基于列式存储,将特定格式的数据字符串,如时间信息从文本转化为整数时间戳,有效地解决了将数据字符串单纯以字符串的方法进行存储的成本高,占用存储空间大的问题。
图3A示意性示出了根据本公开实施例的数据读取方法的流程图。
如图3A所示,该数据读取方法可以包括操作S301~操作S305。
在操作S301,获得处理指令。
在本实施例中,该处理指令可以是由用户发送的处理指令,也可以是在系统需要调用数据时,内部执行的数据还原的处理指令。
在操作S303,响应于所述处理指令,按照第二对应关系分别从第一数据集合和第二数据集合中获取所述数据结构和所述数据字符串,所述第二对应关系包括数据结构与所述第一数据集合的对应关系,以及数据字符串与所述第二数据集合的对应关系。
在操作S305,将所述数据结构和所述数据字符串按照第一对应关系进行整合,得到数据,其中,所述数据结构和所述数据字符串具有第一对应关系。
在一个实施例中,以日志为例进行说明,为了将存储的数据的数据结构和数据字符串还原,可以先根据第二数据集合,如日志数值记录中记录的日志模板映射信息,在第一数据集合,如日志模板库中找到相应的日志模板。然后,将入日志数值按照第一对应关系(如依序)带入相应日志模板的参数,则可还原日志。读取过程是存储过程的逆过程,具体可以参考操作S201~操作S203,在此不再详述。
在另一个实施例中,由于存储数据字符串时还可能对第二数据集合中数据字符串进行了第二处理,因此,所述按照第二对应关系分别从第一数据集合和第二数据集合中获取所述数据结构和所述数据字符串可以包括如下操作。
首先,按照第二对应关系从所述第一数据集合获取第一处理方式处理后的数据结构和按照第二对应关系从所述第二数据集合中获取第二处理方式处理后数据字符串,所述第一处理方式与所述第二处理方式不同。
然后,对所述第一处理方式处理后的数据结构进行第一逆处理和对所述第二处理方式处理后的数据字符串进行第二逆处理,得到数据结构和数据字符串。其中,数据结构经过第一处理方式处理后再经过第一逆处理,则所述数据结构会被还原,此外,数据字符串经过第二处理方式处理后再经过第二逆处理,则所述数据字符串会被还原。
这样使得还原后的数据结构和数据字符串便于进行整合。
为了减少数据读取用时,可以利用缓存技术对常用的数据结构进行缓存,因此可以从缓存中获取大部分数据结构,几乎不会因为采用压缩技术而造成数据读取成本增加过多。
图3B示意性示出了根据本公开另一实施例的数据读取方法的流程图。
如图3B所示,所述方法还可以包括操作S307。
在操作S307,将所述第一数据集合中至少部分数据结构和对应的结构标识存储在缓存,以便当从第二数据集合中获取到所述处理指令对应的结构标识后,利用所述处理指令对应的结构标识从缓存获取对应的数据结构。其中,至少部分数据结构可以为常用的数据结构,可以基于数据结构在数据中存在的比例确定。
在一个具体实施例中,以日志为例进行说明,在日志输出场景中,90%以上的日志具有数据结构,即,是按照日志模板生成的日志。所以可以将最常用的日志模板缓存起来,通过索引帮助快速定位到日志模板的缓存数据,进而实现大部分日志快速恢复。
对于低频出现的日志,则通过查询第一数据集合,如日志模板数据库获得,并进而进行日志恢复。
由于基于缓存恢复数据,而磁盘数据读取IO量减少,甚至可能提升数据的读取效率。
在另一个实施例中,对于支持列式存储的第二数据集合,可以采用如下操作提升数据检索性能。
所述方法还可以包括如下操作。
首先,接收检索指令。
然后,响应于所述检索指令,根据所述检索指令相应的变量从第二数据集合中获取待检索的列的数据字符串,所述待检索的列包括至少一列,所述至少一列中每列对应所述检索指令相应的一个变量,其中,不同变量对应不同的列,不同的列采用的第二处理方式不同,一个数据结构对应至少一列。
接着,基于所述检索指令对所述待检索的列中每一列的数据字符串进行检索。
以下以日志检索场景为例进行说明,基于文本存储的日志,虽然可以进行文本分词,但是无法根据其变量数据建立有效的索引。例如,基于文本存储的日志如果想实现基于变量数值的分析或者过滤,只有将全量日志文本读取之后,才能进行分析或者过滤。这样将造成存储系统IO成本,系统之间网络传输成本,存储资源消耗成本,数据分析资源成本过大等问题,进而造成日志分析效率低下。
由于第二数据集合支持列式存储,一列对应数据结构的一个变量,便于实现基于变量进行检索。例如,无需将所有日志还原并读取出来,而是确定待检索的变量后,从第二数据集合中确定与变量对应的待检索列,然后读取待检索列中存储的数据(如果待检索列中存储的数据经过处理,则需要进行逆处理以还原数据)。这样就可以基于变量建立索引,并基于索引进行有针对性的数据分析和过滤。
图3C示意性示出了根据本公开实施例的数据检索示意图。
如图3C所示,检索指令中可以包括性能参数a,第二数据集合中包括参数2,其对应的性能参数a,因此,参数2这一列为待检索列,获取参数2这一列的还原算法(如通过还原算法标识调用对应的还原算法),利用还原算法将待检索列的数据进行还原,得到待检索数据,然后基于检索指令对待检索数据进行检索。
这样的数据分析、过滤的效率和质量将明显优于没有进行日志的数据结构和数据字符串解析的效率和质量,有效提升数据检索的效率和便利度。
图4A示意性示出了根据本公开实施例的数据存储装置的框图。
如图4A所示,本公开的另一个方面提供了一种数据存储装置400,该数据存储装置400可以包括数据获得模块401、数据解析模块403和数据存储模块405。
其中,所述数据获得模块401用于获得数据。
所述数据解析模块403用于解析所述数据,得到所述数据的数据结构和数据字符串,其中,所述数据结构和所述数据字符串具有第一对应关系,并且共同构成所述数据。
所述数据存储模块405用于按照第二对应关系将所述数据结构和所述数据字符串分别存储在第一数据集合和第二数据集合,其中,所述第二对应关系包括数据结构与所述第一数据集合的对应关系,以及数据字符串与所述第二数据集合的对应关系。
在一个实施例中,所述装置400还可以包括数据处理模块407。所述数据处理模块407用于在得到所述数据的数据结构和数据字符串之后,采用第一处理方式对所述数据结构进行处理,以及采用第二处理方式对所述数据字符串进行处理,得到处理后的数据结构和处理后的数据字符串。
相应地,所述数据存储模块405具体用于按照第二对应关系将所述处理后的数据字符串和所述处理后的数据字符串分别存储在所述第一数据集合和所述第二数据集合,其中,采用第一处理方式或第二处理方式对相同数据字符串进行处理,处理后的数据字符串占用的存储空间不同。
其中,所述数据存储模块405可以包括规律确定单元和标注单元。
所述规律确定单元用于如果所述数据字符串中至少部分数据字符串符合第一规律,则对所述至少部分数据字符串设置标注信息,所述第一规律指所述至少部分数据字符串的变化具有规律,所述标注单元用于基于所述标注信息对所述至少部分数据字符串进行处理以减小所述至少部分数据字符串占用的存储空间,其中,所述标注信息包括算法标识和/或针对所述第一规律的处理算法。
此外,所述装置400还可以包括:字符串获取模块和分列存储模块。
其中,所述字符串获取模块用于获取所述数据结构的变量对应的数据字符串。
所述分列存储模块用于将不同变量对应的数据字符串分别存储在不同的列。相应地,所述数据数据处理模块具体用于以列为单位采用第二处理方式对所述数据字符串进行处理,其中,不同的列采用的第二处理方式不同。
在另一个实施例中,所述装置400还包括格式转换模块,所述格式转换模块用于对于所述第二数据集合中存储的第一格式的数据字符串,将至少部分第一格式的数据字符串转换为第二格式的数据字符串,所述第一格式的数据字符串与所述第二格式的数据字符串占用的存储空间的大小不同。
可选地,所述数据解析模块403包括模板获取单元和字符串获取单元。
所述模板获取单元用于当所述数据字符串为日志的字符串,对日志进行分析,得到模板。
所述字符串获取单元用于基于所述模板获取所述至少一个日志的数据字符串。
图4B示意性示出了根据本公开实施例的数据读取装置的框图。
如图4B所示,本公开的另一个方面提供了一种数据读取装置4000,该装置4000可以包括指令获得模块411、指令响应模块413和整合模块415。
其中,所述指令获得模块411用于获得处理指令。
所述指令响应模块413用于响应于所述处理指令,按照第二对应关系分别从第一数据集合和第二数据集合中获取所述数据结构和所述数据字符串,所述第二对应关系包括数据结构与所述第一数据集合的对应关系,以及数据字符串与所述第二数据集合的对应关系。
所述整合模块415用于将所述数据结构和所述数据字符串按照第一对应关系进行整合,得到数据,其中,所述数据结构和所述数据字符串具有第一对应关系。
例如,所述指令响应模块413可以包括数据获取单元和逆处理单元。
其中,所述数据获取单元用于按照第二对应关系从所述第一数据集合获取第一处理方式处理后的数据结构和按照第二对应关系从所述第二数据集合中获取第二处理方式处理后数据字符串,所述第一处理方式与所述第二处理方式不同。
所述逆处理单元用于对所述第一处理方式处理后的数据结构进行第一逆处理和对所述第二处理方式处理后的数据字符串进行第二逆处理,得到数据结构和数据字符串。
此外,所述装置4000还可以包括缓存模块417。
该缓存模块417用于将所述第一数据集合中至少部分数据结构和对应的结构标识存储在缓存,以便当从第二数据集合中获取到所述处理指令对应的结构标识后,利用所述处理指令对应的结构标识从缓存获取对应的数据结构。
在其它实施例中,所述装置4000还可以包括:指令接收模块、字符串获取模块和检索模块。
所述指令接收模块用于接收检索指令。
所述字符串获取模块用于响应于所述检索指令,根据所述检索指令相应的变量从第二数据集合中获取待检索的列的数据字符串,所述待检索的列包括至少一列,所述至少一列中每列对应所述检索指令相应的一个变量,其中,不同变量对应不同的列,不同的列采用的第二处理方式不同,一个数据结构对应至少一列,所述检索模块用于基于所述检索指令对所述待检索的列中每一列的数据字符串进行检索。
根据本公开的实施例,有关数据的存储和读取,可以参见上面的描述,这里不再重复。
根据本公开的实施例的模块、子模块、单元中的任意多个、或其中任意多个的至少部分功能可以在一个模块中实现。根据本公开实施例的模块、子模块、单元中的任意一个或多个可以被拆分成多个模块来实现。根据本公开实施例的模块、子模块、单元中的任意一个或多个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式的硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,根据本公开实施例的模块、子模块、单元中的一个或多个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
例如,数据获得模块401、数据解析模块403和数据存储模块405中的任意多个可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。根据本公开的实施例,数据获得模块401、数据解析模块403和数据存储模块405中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,数据获得模块401、数据解析模块403和数据存储模块405中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
图5示意性示出了根据本公开实施例的电子设备的框图。图5示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图5所示,所述服务器500包括:一个或多个处理器510和计算机可读存储介质520。该服务器可以执行根据本公开实施例的方法。
具体地,处理器510例如可以包括通用微处理器、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(ASIC)),等等。处理器510还可以包括用于缓存用途的板载存储器。处理器510可以是用于执行根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。
计算机可读存储介质520,例如可以是非易失性的计算机可读存储介质,具体示例包括但不限于:磁存储装置,如磁带或硬盘(HDD);光存储装置,如光盘(CD-ROM);存储器,如随机存取存储器(RAM)或闪存等等。
计算机可读存储介质520可以包括程序521,该程序521可以包括代码/计算机可执行指令,其在由处理器510执行时使得处理器510执行根据本公开实施例的方法或其任何变形。
程序521可被配置为具有例如包括计算机程序模块的计算机程序代码。例如,在示例实施例中,程序521中的代码可以包括一个或多个程序模块,例如包括程序模块521A、程序模块521B、……。应当注意,程序模块的划分方式和个数并不是固定的,本领域技术人员可以根据实际情况使用合适的程序模块或程序模块组合,当这些程序模块组合被处理器510执行时,使得处理器510可以执行根据本公开实施例的方法或其任何变形。
根据本公开的实施例,处理器510可以与计算机可读存储介质520进行交互,来执行根据本公开实施例的方法或其任何变形。
根据本公开的实施例,数据获得模块401、数据解析模块403和数据存储模块405中的至少一个可以实现为参考图5描述的程序模块,其在被处理器510执行时,可以实现上面描述的相应操作。
本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的设备/装置/系统中所包含的;也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本公开实施例的方法。
根据本公开的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质,例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
本领域技术人员可以理解,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合,即使这样的组合或结合没有明确记载于本公开中。特别地,在不脱离本公开精神和教导的情况下,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本公开的范围。
尽管已经参照本公开的特定示例性实施例示出并描述了本公开,但是本领域技术人员应该理解,在不背离所附权利要求及其等同物限定的本公开的精神和范围的情况下,可以对本公开进行形式和细节上的多种改变。因此,本公开的范围不应该限于上述实施例,而是应该不仅由所附权利要求来进行确定,还由所附权利要求的等同物来进行限定。
Claims (7)
1.一种数据存储方法,包括:
获得数据;
解析所述数据,得到所述数据的数据结构和数据字符串,其中,所述数据结构和所述数据字符串具有第一对应关系,并且共同构成所述数据;
采用第一处理方式对所述数据结构进行处理,以及采用第二处理方式对所述数据字符串进行处理,得到处理后的数据结构和处理后的数据字符串;
按照第二对应关系将所述处理后的数据字符串和所述处理后的数据字符串分别存储在第一数据集合和第二数据集合,采用第一处理方式或第二处理方式对相同数据字符串进行处理,处理后的数据字符串占用的存储空间不同;
其中,所述第二对应关系包括数据结构与所述第一数据集合的对应关系,以及数据字符串与所述第二数据集合的对应关系;
其中,采用第一处理方式对所述数据字符串进行处理包括:文本类型数据基于文本数据的处理方式进行处理;数值类型数据基于数值数据的处理方式进行处理;
其中,采用第二处理方式对所述数据字符串进行处理包括:
如果所述数据字符串中至少部分数据字符串符合第一规律,则对所述至少部分数据字符串设置标注信息,所述第一规律指所述至少部分数据字符串的变化具有规律;以及
基于所述标注信息对所述至少部分数据字符串进行处理以减小所述至少部分数据字符串占用的存储空间,其中,所述标注信息包括算法标识和/或针对所述第一规律的处理算法。
2.根据权利要求1所述的方法,还包括:
获取所述数据结构的变量对应的数据字符串;
将不同变量对应的数据字符串分别存储在不同的列;以及
采用第二处理方式对所述数据字符串进行处理包括:以列为单位采用第二处理方式对所述数据字符串进行处理,其中,不同的列采用的第二处理方式不同。
3.根据权利要求1所述的方法,还包括:
对于所述第二数据集合中存储的第一格式的数据字符串,将至少部分第一格式的数据字符串转换为第二格式的数据字符串,所述第一格式的数据字符串与所述第二格式的数据字符串占用的存储空间的大小不同。
4.根据权利要求1所述的方法,其中,所述解析所述数据,得到所述数据的数据结构和数据字符串包括:
所述数据字符串为日志的字符串,对日志进行分析,得到模板;以及
基于所述模板获取至少一个日志的数据字符串。
5.一种数据读取方法,包括:
获得处理指令;
响应于所述处理指令,按照第二对应关系从第一数据集合获取第一处理方式处理后的数据结构和按照第二对应关系从第二数据集合中获取第二处理方式处理后数据字符串,所述第一处理方式与所述第二处理方式不同;
对所述第一处理方式处理后的数据结构进行第一逆处理和对所述第二处理方式处理后的数据字符串进行第二逆处理,得到数据结构和数据字符串,所述第二对应关系包括数据结构与所述第一数据集合的对应关系,以及数据字符串与所述第二数据集合的对应关系;以及
将所述数据结构和所述数据字符串按照第一对应关系进行整合,得到数据,其中,所述数据结构和所述数据字符串具有第一对应关系;
其中,第一处理方式包括:文本类型数据基于文本数据的处理方式进行处理;数值类型数据基于数值数据的处理方式进行处理;
其中,第二处理方式包括:
如果所述数据字符串中至少部分数据字符串符合第一规律,则对所述至少部分数据字符串设置标注信息,所述第一规律指所述至少部分数据字符串的变化具有规律;
基于所述标注信息对所述至少部分数据字符串进行处理以减小所述至少部分数据字符串占用的存储空间,其中,所述标注信息包括算法标识和/或针对所述第一规律的处理算法。
6.根据权利要求5所述的方法,还包括:
将所述第一数据集合中至少部分数据结构和对应的结构标识存储在缓存,以便当从第二数据集合中获取到所述处理指令对应的结构标识后,利用所述处理指令对应的结构标识从缓存获取对应的数据结构。
7.根据权利要求5所述的方法,还包括:
接收检索指令;
响应于所述检索指令,根据所述检索指令相应的变量从第二数据集合中获取待检索的列的数据字符串,所述待检索的列包括至少一列,所述至少一列中每列对应所述检索指令相应的一个变量,其中,不同变量对应不同的列,不同的列采用的第二处理方式不同,一个数据结构对应至少一列;以及
基于所述检索指令对所述待检索的列中每一列的数据字符串进行检索。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910470947.1A CN110188160B (zh) | 2019-05-31 | 2019-05-31 | 数据存储方法和数据读取方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910470947.1A CN110188160B (zh) | 2019-05-31 | 2019-05-31 | 数据存储方法和数据读取方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110188160A CN110188160A (zh) | 2019-08-30 |
CN110188160B true CN110188160B (zh) | 2021-10-22 |
Family
ID=67719461
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910470947.1A Active CN110188160B (zh) | 2019-05-31 | 2019-05-31 | 数据存储方法和数据读取方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110188160B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112492353B (zh) * | 2019-09-12 | 2023-06-23 | 杭州山草互娱科技有限公司 | 直播间中数据的加工方法、装置、设备及存储介质 |
CN115037796B (zh) * | 2022-06-06 | 2024-06-11 | 联通(广东)产业互联网有限公司 | 一种实时数据发送方法、接收方法及相应的设备和系统 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103020262A (zh) * | 2012-12-24 | 2013-04-03 | Tcl集团股份有限公司 | 一种数据存储方法、系统及数据存储设备 |
CN106055585A (zh) * | 2016-05-20 | 2016-10-26 | 北京神州绿盟信息安全科技股份有限公司 | 一种日志解析方法及装置 |
CN106656607A (zh) * | 2016-12-27 | 2017-05-10 | 上海爱数信息技术股份有限公司 | 设备日志解析方法、系统及具有该系统的服务器端 |
CN107733709A (zh) * | 2017-10-17 | 2018-02-23 | 北京奇虎科技有限公司 | 数据存储方法、装置及电子设备 |
CN107977166A (zh) * | 2017-11-27 | 2018-05-01 | 广西塔锡科技有限公司 | 一种数据存储方法和系统 |
US10235372B1 (en) * | 2016-02-18 | 2019-03-19 | Amazon Technologies, Inc. | Log message storage |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9922102B2 (en) * | 2013-07-31 | 2018-03-20 | Splunk Inc. | Templates for defining fields in machine data |
-
2019
- 2019-05-31 CN CN201910470947.1A patent/CN110188160B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103020262A (zh) * | 2012-12-24 | 2013-04-03 | Tcl集团股份有限公司 | 一种数据存储方法、系统及数据存储设备 |
US10235372B1 (en) * | 2016-02-18 | 2019-03-19 | Amazon Technologies, Inc. | Log message storage |
CN106055585A (zh) * | 2016-05-20 | 2016-10-26 | 北京神州绿盟信息安全科技股份有限公司 | 一种日志解析方法及装置 |
CN106656607A (zh) * | 2016-12-27 | 2017-05-10 | 上海爱数信息技术股份有限公司 | 设备日志解析方法、系统及具有该系统的服务器端 |
CN107733709A (zh) * | 2017-10-17 | 2018-02-23 | 北京奇虎科技有限公司 | 数据存储方法、装置及电子设备 |
CN107977166A (zh) * | 2017-11-27 | 2018-05-01 | 广西塔锡科技有限公司 | 一种数据存储方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN110188160A (zh) | 2019-08-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109034993B (zh) | 对账方法、设备、系统及计算机可读存储介质 | |
US8949799B2 (en) | Program log record optimization | |
DE102016013248A1 (de) | Bezugsblockansammlung in einer Bezugsmenge zur Deduplizierung beim Speichermanagement | |
US20130198272A1 (en) | Operation log storage system, device, and program | |
US11704286B2 (en) | High-density compression method and computing system | |
CN109994131B (zh) | 一种基于索引的工频录波文件压缩存储方法及系统 | |
CN110188160B (zh) | 数据存储方法和数据读取方法 | |
CN110147203B (zh) | 一种文件管理方法、装置、电子设备及存储介质 | |
CN110727406A (zh) | 一种数据存储调度方法及装置 | |
US20180041224A1 (en) | Data value suffix bit level compression | |
CN110851409A (zh) | 一种日志压缩、解压缩方法、设备及存储介质 | |
CN110647423B (zh) | 一种基于应用创建存储卷镜像的方法、设备及可读介质 | |
CN109521954B (zh) | 一种配网ftu定点文件管理方法及装置 | |
WO2018080560A1 (en) | Encoding edges in graph databases | |
CN114297196A (zh) | 元数据存储方法、装置、电子设备及存储介质 | |
JP7404734B2 (ja) | データ圧縮装置、履歴情報管理システム、データ圧縮方法およびデータ圧縮プログラム | |
CN111176928B (zh) | 一种嵌入式边缘计算系统的日志处理方法 | |
CN110928898A (zh) | 数据采集方法、数据采集装置、存储介质及电子设备 | |
CN111782588A (zh) | 一种文件读取方法、装置、设备和介质 | |
US10037148B2 (en) | Facilitating reverse reading of sequentially stored, variable-length data | |
CN111241191A (zh) | 一种数据库的同步方法及装置 | |
CN114556283A (zh) | 一种数据写入、一致性检查和读取的方法及装置 | |
US10942969B2 (en) | Non-transitory computer-readable storage medium, search control method, and search control apparatus | |
CN113177143B (zh) | 时序数据访问方法、装置、存储介质及电子设备 | |
CN115328702A (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 |