CN111506628A - 数据处理方法及装置 - Google Patents
数据处理方法及装置 Download PDFInfo
- Publication number
- CN111506628A CN111506628A CN202010320592.0A CN202010320592A CN111506628A CN 111506628 A CN111506628 A CN 111506628A CN 202010320592 A CN202010320592 A CN 202010320592A CN 111506628 A CN111506628 A CN 111506628A
- Authority
- CN
- China
- Prior art keywords
- data
- content
- data block
- target
- block
- 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
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/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2474—Sequence data queries, e.g. querying versioned data
-
- 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/21—Design, administration or maintenance of databases
- G06F16/219—Managing data history or versioning
-
- 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
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种数据处理方法及装置,方法包括:获得待存储的目标数据,所述目标数据中至少包括至少一个待存储的内容数据对象和所述内容数据对象的数据关键词,且所述目标数据中的内容数据对象属于至少一种数据类型的数据;针对具有同一数据关键词的内容数据对象,进行序列化处理,以生成初始数据块;将包含所述初始数据块和所述数据关键词的目标数据块写入到存储介质中,其中,所述目标数据块中的数据关键词用于与数据访问请求中的访问关键词进行比对,以得到所述存储介质中与所述数据访问请求相对应的目标数据块。
Description
技术领域
本申请涉及数据处理技术领域,尤其涉及一种数据处理方法及装置。
背景技术
目前的应用***为了能够实现更多的数据处理功能,需要存储较长时间的历史数据。例如,对于票务***而言,为了支持客票退改签业务,需要存储两年甚至更长时间的历史数据。
而在每次进行应用***的计算事务时,为了找到不同数据类型的数据对象,需要频繁的在海量历史数据中进行访问,例如在海量的历史数据中进行fare类型和rule类型的数据查询等访问操作,由此,导致数据访问效率较低。
因此,如何提高数据访问效率,成为目前各类应用***所面临的一大难题。
发明内容
有鉴于此,本申请提供一种数据处理方法及装置,用以解决现有技术中数据访问效率较低的技术问题。如下:
一种数据处理方法,包括:
获得待存储的目标数据,所述目标数据中至少包括至少一个待存储的内容数据对象和所述内容数据对象的数据关键词,且所述目标数据中的内容数据对象属于至少一种数据类型的数据;
针对具有同一数据关键词的内容数据对象,进行序列化处理,以生成初始数据块;
将包含所述初始数据块和所述数据关键词的目标数据块写入到存储介质中,其中,所述目标数据块中的数据关键词用于与数据访问请求中的访问关键词进行比对,以得到所述存储介质中与所述数据访问请求相对应的目标数据块。
一种数据处理装置,包括:
数据获得单元,用于获得待存储的目标数据,所述目标数据中至少包括至少一个待存储的内容数据对象和所述内容数据对象的数据关键词,且所述目标数据中的内容数据对象属于至少一种数据类型的数据;
数据块生成单元,用于针对具有同一数据关键词的内容数据对象,进行序列化处理,以生成初始数据块;
数据块写入单元,用于将包含所述初始数据块和所述数据关键词的目标数据块写入到存储介质中,其中,所述目标数据块中的数据关键词用于与数据访问请求中的访问关键词进行比对,以得到所述存储介质中与所述数据访问请求相对应的目标数据块。
从上述技术方案可以看出,本申请公开的一种数据处理方法及装置,以关键词和数据块的形式对数据对象进行存储,进而以关键词作为访问条件,就可以使得所查询到的数据中包含有一种或多种数据类型的数据对象,由此,基于本申请中的技术方案,无需对存储介质进行多次访问,就可以通过一次访问请求得到多种数据类型的访问结果,进而避免繁琐的数据访问流程,由此达到提高数据访问效率的目的。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例一提供的一种数据处理方法的流程图;
图2-图4分别为本申请实施例一的部分流程图;
图5为本申请实施例二提供的一种数据处理装置的结构示意图;
图6-图12分别为本申请实施例的应用示例图;
图13为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
本文使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”;术语“一些实施例”表示“至少一些实施例”。其他术语的相关定义将在下文描述中给出。
需要注意,本公开中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。
需要注意,本公开中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。
如图1所示,为本申请实施例一提供的一种数据处理方法的实现流程图,该方法适用于能够进行数据处理的电子设备中,如计算机或服务器等。本实施例中的技术方案主要用于解决对存储介质中的数据对象进行访问时存在数据访问效率较低的技术问题。
具体的,本实施例中的方法可以包括以下步骤:
步骤101:获得待存储的目标数据。
其中,目标数据中至少包括有:至少一个待存储的内容数据对象和内容数据对象的数据关键词,需要说明的是,目标数据中的内容数据对象属于至少一个数据类型的数据,也就是说,待存储的内容数据对象可能属于同一数据类型的数据,也可能属于不同数据类型的数据,如Fare、Rule等多种数据类型。而内容数据对象的数据关键词可能根据其他内容数据对象的数据关键词相同或不同,例如,具有相同数据关键词的内容数据对象可能属于不同数据类型的数据,具有不同数据关键词的内容数据对象可能属于相同或不同数据类型的数据。例如,具有数据关键词key1的内容数据对象A1为fare数据类型的数据对象,具有数据关键词key1的内容数据对象A2为rule数据类型的数据对象,具有数据关键词key2的内容数据对象B1为fare数据类型的数据对象,具有数据关键词key2的内容数据对象B2为rule数据类型的数据对象,等等。
步骤102:针对具有同一数据关键词的内容数据对象,进行序列化处理,以生成初始数据块。
其中,本实施例中可以先将具有同一数据关键词的内容数据对象进行聚类,再将聚类到一族的内容数据对象进行序列化处理,进而得到序列化的初始数据块。
具体的,本实施例中可以根据具有同一数据关键词的内容数据对象的内存地址,进行数据对象序列化,进而得到初始数据块,相应的,所得到的初始数据块与其内的内容数据对象对应的数据关键词之间具有映射关系。
步骤103:将包含初始数据块和数据关键词的目标数据块写入到存储介质中。
其中,目标数据块中的数据关键词用于与数据访问请求中的访问关键词进行比对,以得到存储介质中与数据访问请求相对应的目标数据块。
也就是说,本实施例中先将数据关键词和其对应的初始数据块组成目标数据块,再将目标数据块写入到存储介质,进而在存储介质中接收到数据访问请求之后,可以用数据访问请求中的访问关键词与存储介质中每个目标数据块对应的数据关键词进行比对,进而得到存储介质中与访问关键词相匹配的数据关键词,而存储介质中与访问关键词相匹配的数据关键词所对应的目标数据块就可以作为与数据访问请求相对应的目标数据块,此时可以对该与数据访问请求相对应的目标数据块进行读取,而由于存储介质中的目标数据块均是由具有同一数据关键词的一种或多种数据类型的内容数据对象所序列化形成的,因此,此时所读取的与数据访问请求相对应的目标数据块中是包含有一种或多种数据类型的内容数据对象,因此,可以通过一次访问访问到一种或多种数据类型的内容数据对象,从而实现快速数据访问。
从上述技术方案可以看出,本申请实施例一提供的一种数据处理方法,以关键词和数据块的形式对数据对象进行存储,进而以关键词作为访问条件,就可以使得所查询到的数据中包含有一种或多种数据类型的数据对象,由此,基于本实施例中的技术方案,无需对存储介质进行多次访问,就可以通过一次访问请求得到多种数据类型的访问结果,进而避免繁琐的数据访问流程,由此达到提高数据访问效率的目的。
在一种实现方式中,本实施例中的步骤102在针对具有同一关键词的内容数据对象进行序列化处理时,具体可以通过以下方式实现,如图2中所示:
步骤201:针对具有同一数据关键词的内容数据对象,创建初始数据块。
其中,初始数据块具有首地址,如图3中所示,初始数据块可以是向内存申请数据块时所得到初始数据块,该初始数据块具有首地址,该首地址是初始数据块的第一个字段在内存中的内存地址。
具体的,本实施例中先对具有同一数据关键词的内容数据对象进行聚类,再针对同一族的内容数据对象,向内存申请初始数据块,该初始数据块具有首地址。
步骤202:将具有同一数据关键词的内容数据对象依次写入到其对应的初始数据块中。
例如,对于具有数据关键词key1的内容数据对象A1和内容数据对象A2,申请到初始数据块之后,将内容数据对象A1和内容数据对象A2分别写入到初始数据块中。
在一种实现方式中,如果在对初始数据块进行数据对象写入的过程中,出现初始数据块的存储空间小于目标数据的存储空间的情况,那么可以在初始数据块中的最大存储地址之后扩展相应的存储空间。也就是说,在初始数据块的尾部的存储地址之后动态扩展相应的存储空间,以使得初始数据块中有足够的存储空间用于存储目标数据中的数据对象。
步骤203:在初始数据块中记录内容数据对象的内存地址相对于首地址的第一偏移量。
例如,对于具有数据关键词key1的内容数据对象A1和内容数据对象A2,在将内容数据对象A1和内容数据对象A2分别写入到内存中申请到的初始数据块之后,在初始数据块中分别记录内容数据对象A1和内容数据对象A2各自在内存中的内存地址相对于初始数据块的首地址的第一偏移量,相应的,第一偏移量是与内容数据对象的内存地址和初始数据块的首地址相关的,能够根据第一偏移量和首地址确定内容数据对象的内存地址。
基于以上实现,在目标数据中可能还包括有指向内容数据对象的关系数据对象,如指针对象等。相应的,本实施例中在生成初始数据块时,还可以包括以下步骤,如图3中所示:
步骤204:将内容数据对象对应的关系数据对象设置为指向第一偏移量。
也就是说,将指向内容数据对象的关系数据对象不再指向内容数据对象的内存地址,而是指向写入初始数据块之后的内容数据对象对应的第一偏移量。例如,将指向内容数据对象A1的关系数据对象C1指向初始数据块中内容数据对象A1对应的第一偏移量,将指向内容数据对象A2的关系数据对象C2指向初始数据块中内容数据对象A2对应的第一偏移量。
步骤205:将内容数据对象对应的关系数据对象依次写入到相应的初始数据块中。
例如,对于指向内容数据对象A1的关系数据对象C1和指向内容数据对象A2的关系数据对象C2,在将内容数据对象A1和内容数据对象A2分别写入到初始数据块中之后,将指向内容数据对象A1的关系数据对象C1指向初始数据块中内容数据对象A1对应的第一偏移量,并将指向内容数据对象A2的关系数据对象C2指向初始数据块中内容数据对象A2对应的第一偏移量,并将指向内容数据对象A1对应的第一偏移量的关系数据对象C1和指向内容数据对象A2对应的第一偏移量的关系数据对象C2依次写入到初始数据块中。
步骤206:在初始数据块中记录关系数据对象的内存地址到首地址之间的第二偏移量。
例如,对于指向内容数据对象A1对应的第一偏移量的关系数据对象C1和指向内容数据对象A2对应的第一偏移量的关系数据对象C2,在将关系数据对象C1和关系数据对象C2分别写入到内存中申请到的初始数据块之后,在初始数据块中分别记录关系数据对象C1和关系数据对象C2各自在内存中的内存地址相对于初始数据块的首地址的第二偏移量,相应的,第二偏移量是与关系数据对象的内存地址和初始数据块的首地址相关的,能够根据第二偏移量和首地址确定内容数据对象的内存地址。
在一种实现方式中,目标数据块中具有内容数据对象的时间存储标识,以使得时间存储标识能够唯一标识目标数据块中的内容数据对象(以及内容数据对象对应的关系数据对象)的存储批次。例如,在完成数据对象和相应的偏移量写入之后,除了将数据关键词写入到目标数据块之外,还可以将数据对象的写入时刻作为时间存储标识写入到目标数据块中,该时间存储标识能够用来在存储介质中唯一标识目标数据块中新被写入的内容数据对象,以便于在目标数据块查找和访问相应的内容数据。
相应的,数据访问请求中还包括时间访问标识,时间访问标识用于与存储介质中目标数据块内的内容数据对象的时间存储标识进行比对,以得到存储介质中的目标数据块内与数据访问请求相对应的内容数据对象。
例如,在存储介质中接收到数据访问请求之后,可以先使用数据访问请求中的访问关键词与筛选出的集合中的每个目标数据块对应的数据关键词进行比对,进而得到存储介质中与访问关键词相匹配的数据关键词,从而找到与数据访问请求对应的目标数据块,之后,再利用数据访问请求中的时间访问标识对目标数据块中的内容数据对象进行查找,以得到与数据访问请求相对应的内容数据对象(以及内容数据对象对应的关系数据对象),从而实现精确的数据对象的查找与访问。
另外,基于以上实现,本实施例中在针对具有同一数据关键词的内容数据对象,进行序列化处理,以生成初始数据块之前,可以首先对存储介质中具有同一数据关键词的目标数据块,根据目标数据中的内容数据对象进行增量更新,并对更新的内容数据对象设置相应的时间存储标识,由此,时间存储标识能够区别目标数据块中先后写入的内容数据对象(以及内容数据对象对应的关系数据对象)。
例如,在获得目标数据之后,首先在存储介质中找到具有与目标数据中内容数据对象A3的数据关键词key1相一致的数据关键词的目标数据块X1,然后对目标数据块X1根据内容数据对象A3进行更新,并对目标数据块X1中更新的内容数据对象A3设置相应的时间存储标识,以使得内容数据对象A3和目标数据块中已有的内容数据对象A1区分。进一步的,在对存储介质中的目标数据块更新之后,将目标数据中剩余的内容数据对象(以及内容数据对象对应的关系数据对象)按照所具有数据关键词进行聚类的序列化处理,相应得到目标数据块。
在一种实现方式中,本实施例中在针对存储介质进行数据对象的访问时,具体可以通过以下方式实现,如图4中所示:
步骤401:在存储介质中,读取与数据访问请求相对应的目标数据块。
其中,本实施例中,在接收到数据访问请求之后,在存储介质中查找具有与数据访问请求中的访问关键词相同的数据关键词的目标数据块,进而在存储介质中读取与该数据访问请求相对应的目标数据块。
步骤402:对目标数据块进行反序列化,至少得到所述目标数据块中的内容数据对象。
其中,本实施例中可以对目标数据块中的内容数据对象进行读取,并得到内容数据对象在内存中的内存地址。
具体如下:
首先,本实施例中读取目标数据块中的首地址,该首地址为目标数据块在内存中的首地址,在该目标数据块生成时被写入到目标数据块;
其次,依次读取目标数据块中的内容数据对象以及目标数据块中内容数据对象对应的第一偏移量;例如,读取目标数据块中的内容数据对象A1和内容数据对象A2,并读取内容数据对象A1和内容数据对象A2各自对应的第一偏移量;
之后,根据目标数据块中内容数据对象对应的第一偏移量和首地址,获得内容数据对象的内存地址。
例如,本实施例中将内容数据对象A1对应的第一偏移量和首地址进行地址计算,得到内容数据对象A1在内存中的内存地址;将内容数据对象A2对应的第一偏移量和首地址进行地址计算,得到内容数据对象A2在内存中的内存地址。
进一步的,在目标数据块中可能存在关系数据对象,此时,本实施例中在对目标数据块进行反序列化时,除了通过以上方式获得内容数据对象及其内存地址之后,还可以通过以下方式获得关系数据对象和相应的内存地址,如下:
首先,依次读取目标数据块中指向第一偏移量的关系数据对象。例如,在目标数据块中读取指向内容数据对象A1对应的第一偏移量的关系数据对象C1及其对应的第二偏移量,并读取指向内容数据对象A2对应的第一偏移量的关系数据对象C2及其对应的第二偏移量。
其次,将关系数据对象指向其对应的内容数据对象的内存地址。例如,本实施例中在读取到指向内容数据对象A1对应的第一偏移量的关系数据对象C1和指向内容数据对象A2对应的第一偏移量的关系数据对象C2之后,将关系数据对象C1指向内容数据对象A1的内存地址,即将关系数据对象C1指向内容数据对象A1,并将关系数据对象C2指向内容数据对象A2的内存地址,即将关系数据对象C2指向内容数据对象A2。
最后,根据目标数据块中关系数据对象对应的第二偏移量和首地址,获得关系数据对象的内存地址。
例如,本实施例中将关系数据对象C1对应的第二偏移量和首地址进行地址计算,得到关系数据对象C1在内存中的内存地址;将关系数据对象C2对应的第二偏移量和首地址进行地址计算,得到关系数据对象C2在内存中的内存地址。
步骤403:至少将内容数据对象写入到内存中。
具体的,本实施例中将内容数据对象按照其内存地址写入到内存中,进一步的,本实施例中将关系数据对象按照其内存地址写入到内存中,其中关系数据对象指向其对应的内容数据对象的内存地址。
需要说明的是,附图中的流程图和框图,图示了按照本公开各种实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
本公开实施方式中的多个装置之间所交互的消息或者信息的名称仅用于说明性的目的,而并不是用于对这些消息或信息的范围进行限制。
虽然采用特定次序描绘了各操作,但是这不应当理解为要求这些操作以所示出的特定次序或以顺序次序执行来执行。在一定环境下,多任务和并行处理可能是有利的。
应当理解,本公开的方法实施方式中记载的各个步骤可以按照不同的顺序执行,和/或并行执行。此外,方法实施方式可以包括附加的步骤和/或省略执行示出的步骤。本公开的范围在此方面不受限制。
可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括但不限于面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
参考图5,为本申请实施例二提供的一种数据处理装置的结构示意图,该装置可以配置在能够进行数据处理的电子设备中,如计算机或服务器等。本实施例中的技术方案主要用于解决对存储介质中的数据对象进行访问时存在数据访问效率较低的技术问题。
具体的,本实施例中的装置可以包括以下功能单元:
数据获得单元501,用于获得待存储的目标数据,所述目标数据中至少包括至少一个待存储的内容数据对象和所述内容数据对象的数据关键词,且所述目标数据中的内容数据对象属于至少一种数据类型的数据;
数据块生成单元502,用于针对具有同一数据关键词的内容数据对象,进行序列化处理,以生成初始数据块;
数据块写入单元503,用于将包含所述初始数据块和所述数据关键词的目标数据块写入到存储介质中,其中,所述目标数据块中的数据关键词用于与数据访问请求中的访问关键词进行比对,以得到所述存储介质中与所述数据访问请求相对应的目标数据块。
在一种实现方式中,所述装置还包括:
数据块访问单元504,用于在所述存储介质中,读取与所述数据访问请求相对应的目标数据块;对所述目标数据块进行反序列化,至少得到所述目标数据块中的内容数据对象;至少将所述内容数据对象写入到内存中。
从上述技术方案可以看出,本申请实施例二提供的一种数据处理装置,以关键词和数据块的形式对数据对象进行存储,进而以关键词作为访问条件,就可以使得所查询到的数据中包含有一种或多种数据类型的数据对象,由此,基于本实施例中的技术方案,无需对存储介质进行多次访问,就可以通过一次访问请求得到多种数据类型的访问结果,进而避免繁琐的数据访问流程,由此达到提高数据访问效率的目的。
在一种实现方式中,数据块生成单元502在针对具有同一数据关键词的内容数据对象,进行序列化处理,以生成初始数据块时,可以通过以下方式实现:
针对具有同一数据关键词的内容数据对象,创建初始数据块,所述初始数据块具有首地址;将具有同一数据关键词的内容数据对象依次写入到其对应的初始数据块中,并在所述初始数据块中记录所述内容数据对象的内存地址相对于所述首地址的第一偏移量。
可选的,所述目标数据中还包括指向所述内容数据对象的关系数据对象;
其中,在所述初始数据块中记录所述内容数据对象的内存地址相对于所述首地址的第一偏移量之后,数据块生成单元502还用于:
将所述内容数据对象对应的关系数据对象设置为指向所述第一偏移量;将所述内容数据对象对应的关系数据对象依次写入到相应的初始数据块中,并在所述初始数据块中记录所述关系数据对象的内存地址到所述首地址之间的第二偏移量。
可选的,所述数据块生成单元502还用于:
在所述初始数据块的存储空间小于所述目标数据的存储空间的情况下,在所述初始数据块中的最大存储地址之后扩展相应的存储空间。
在一种实现方式中,所述目标数据块中具有所述内容数据对象的时间存储标识,所述时间存储标识用于唯一标识所述目标数据块中的内容数据对象的存储批次;
其中,所述数据访问请求中还包括时间访问标识,所述时间访问标识用于与所述存储介质中所述目标数据块内的内容数据对象的时间存储标识进行比对,以得到所述存储介质中的目标数据块内与所述数据访问请求相对应的内容数据对象。
可选的,在针对具有同一数据关键词的内容数据对象,进行序列化处理,以生成初始数据块之前,所述数据块生成单元502还用于:
对所述存储介质中具有同一所述数据关键词的目标数据块,根据所述目标数据中的内容数据对象进行增量更新,并对更新的内容数据对象设置相应的时间存储标识。
可选的,所述数据块访问单元504在对所述目标数据块进行反序列化,得到所述目标数据块中的内容数据对象时,可以通过以下方式实现:
读取所述目标数据块中的首地址;依次读取所述目标数据块中的内容数据对象;根据所述目标数据块中所述内容数据对象对应的第一偏移量和所述首地址,获得所述内容数据对象的内存地址。
基于此,数据块访问单元504还用于:
依次读取所述目标数据块中指向所述第一偏移量的关系数据对象;将所述关系数据对象指向其对应的内容数据对象的内存地址;根据所述目标数据块中所述关系数据对象对应的第二偏移量和所述首地址,获得所述关系数据对象的内存地址。
描述于本公开实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,模块的名称在某种情况下并不构成对该单元本身的限定,例如,分析模块还可以被描述为“统计分析模块”。
本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上***(SOC)、复杂可编程逻辑设备(CPLD)等等。
以下以国际客票运价计算***中的相关数据对象存储和访问为例,对本申请的技术方案进行举例说明:
国际客票运价数据通常遵循一个行业标准,如ATPCO标准,这些数据每日定时发布,且具有不可变更的特性,即仅有标识数据生命周期的截止时间可变更,以及部分确定不再使用且不含截止时间属性的规则数据可被删除。国际客票运价计算***为支持客票退改签业务,需要存储两年的历史数据,海量的历史数据存储是国际客票运价计算***的一大难题。
国际客票运价计算***对性能要求十分苛刻,由于国际客票运价数据的结构化,每次计算事务中都要频繁大量访问各种数据,数据访问效率是影响计算性能的一大因素,如何降低数据访问频次从而整体提升计算性能也是国际客票计算***的一大难题。
一些国际客票运价计算***采用传统的关系型数据库或者文本数据库,这两种形式都能实现海量数据存储,但是数据访问比较低效,需要很多其它手段提升整体计算性能,***扩展能力有限。
还有一些国际客票运价计算***采用Mmap内存数据库方式,这种形式数据访读取都在内存中进行,具有最好的数据访问效率,但是以内存方式存储海量数据,***扩展的代价极大,非常不便于运维。
基于此,本申请为克服上述现有技术存在的缺陷,提供一种降低高频数据访问压力的国际客票运价数据存储与读取方法,数据以Key-Value形式存储,Key值可以设置为各种数据类型常用的查询条件,Value是二进制数据块,数据块是实际数据对象的集合,对于计算***中最常读取的Fare和Rule数据采用多种数据类型聚合形成一个数据块,从而实现一次访问操作,获取多种数据类型的目的。在存储介质和应用程序中使用相同的数据结构。这种方式读写性能好,可应用于多种物理存储介质,易于扩展和维护。
在具体实现中,本申请的技术方案所实现的***中可以包括有存储介质和处理器,在处理器中搭建如图6中所示的逻辑架构,其中包括有:数据读取组件、数据写入组件、数据持久化组件、计算服务引擎等。其中:
存储介质:数据存储的物理设备,对于本申请的技术方案,存储介质可以是缓存、内存数据库、Mmap内存文件等,甚至可以是支持二进制大数据块的关系型数据库。
数据读取组件:作为存储介质的读数接口,按照Key值读取数据块,所有其它组件读取数据必须通过本组件。
数据写入组件:作为存储介质的写数接口,按照Key-Value形式将数据块写入到存储介质,所有其它组件写入数据必须通过本组件。
数据持久化组件:数据读取组件在读取数据时,通过本组件将二进制数据块反序列化为应用程序的数据对象;数据写入组件在写入数据时,通过本组件将应用程序的数据对象序列化为二进制数据块。数据持久化组件是本申请的技术方案中的核心组件,在每批次ATPCO数据更新后,扫描各种数据类型的更新数据,将更新的数据以增量形式存储到原有数据块中。对于Fare、Rule等多种数据类型聚合的数据块,任何一种构成的数据类型都会导致整个数据块增量更新。
数据处理组件:本组件用于维护和更新数据。ATPCO定时发布新数据文件,本组件将新数据文件按照特定逻辑关系处理成新的数据层次,加入到已有的数据块,并写回到存储介质。
计算服务引擎:本组件按需读取所有数据,完成国际客票运价计算服务。
具体实现流程如图7中所示:
1、数据处理。数据处理组件实现ATPCO数据处理,包括数据库初始化,数据更新及历史数据清除。
(1)数据初始化。***初始状态时读取全量的ATPCO数据,产生初始的数据层次,结果最终写入到存储介质。
(2)数据更新。ATPCO每天定期按批次发送数据文件,数据处理组件在接收到一个批次数据文件后,再从存储介质中读取原有的数据层次,按照每种数据类型不同的处理逻辑,形成新的数据层次,结果最终写回到存储介质。
(3)历史数据清除。原则上ATPCO数据一经发布和处理即不可删除,但是按照计算逻辑***只需要保留两年历史数据,对于已经失效超过两年且不再被其它数据引用的历史数据可做删除,以清除存储空间。
2、数据对象序列化。本申请的技术方案可在应用程序和存储介质中使用相同的Key-Value数据结构,实现这个功能的关键组件是数据持久化组件:数据写入时实现数据对象序列化;数据读取时实现数据对象反序列化。以下为数据对象序列化过程:
(1)读取更新的源数据。例如对于Fare,需要读取更新的Ifare、Dfare、Cfare等;对于Rule,需要读取更新的Record0、Record1、Record2、Record2Cat25,Record2Ftnt等。
(2)将更新的数据按照数据存储的Key分组。
(3)按Key读取存储介质中的原有数据,读取过程具体可以参考步骤4;
(4)按Key将更新数据与原有数据形成新的数据对象。数据增量更新都以Key发生变化。例如Fare按照始发地目的地为Key,全市场有数百万个Key,但是一个批次更新可能只有数千个Key的数据块发生变化。
(5)申请初始数据块,记录数据块的首地址。写入每个数据块必须的Meta对象(后文的实际实现中是Header对象)。
(6)将数据结构中的实际数据对象逐一写入到数据块,例如Fare的Ifare对象,Rule的Record0对象等,记录每个对象到首地址的偏移量。
(7)将数据结构中的关系数据中指向内存中实际对象的指针修改为指向数据块中相应位置的偏移量,然后将关系数据对象写入到数据块,记录关系数据对象到首地址的偏移量。
(8)在实际数据对象和关系数据对象写入到数据块的过程中,如果数据块空间不够则在数据块尾动态扩展空间。
(9)确定数据结构的所有对象都已写入到数据块,修改Meta中的Size属性为整个数据块的大小。
3、序列化结果入库。数据处理组件调用数据写入组件将序列化后的数据块写入到数据库。
4、数据块反序列化。数据持久化组件将Key-Value存储的数据块反序列化为程序访问的数据结构对象。以下是数据块反序列化的过程:
(1)读取数据块到内存,记录数据块的首地址。
(2)逐一读取实际数据对象,根据偏移量与首地址计算数据的实际内存地址。
(3)读取关系数据对象,将其中指向实际对象的指针修改为实际内存地址,然后根据关系对象的偏移量与首地址计算实际内存地址。
5、数据对象读取。数据处理组件读取反序列化结果加载到内存。
6、国际客票计算。计算服务引擎在接收到运价计算请求之后,发出使用数据对象请求,以读取存储介质中的数据对象并实现国际客票运价计算。由于数据对象在存储介质中按照生效时间存储为不同层次,在计算指令请求中需要给出相应的计算时间。
为了更好地理解本申请的技术方案,本申请实施将以C++为开发语言举例进行说明。
1、数据结构
数据存储方法的核心是数据结构,对于本提案应用的国际客票运价计算,数据结构设计是其中的关键技术,数据结构及其Key-Value对必须符合几个原则:
(1)支持历史数据层次,即数据块中的数据可以按历史层次划分,用户历史查询不需要遍历整个数据块,只需要遍历相应的历史层次;
(2)数据块大小适中;
(3)数据结构可变化并向上(历史)兼容。
需要说明的是,ATPCO标准中有很多种数据类型,其中Fare和Rule是计算过程中最常用和访问最多的数据。Fare和Rule都是多种类型的统称,而在Rule中还存在多种数据类型如Record1与Record2,Record1与Record0,Record2与Record0之间的关系,因此在数据结构设计中,要设计广泛适用的基础数据结构,也要设计适用于Fare和Rule的特有数据结构。
1.1基础数据结构如图8中所示,其中:
(1)<DataTypeName>是数据类型名称的泛指,具体的类如DfarePartition、AddonPartition等;
(2)m_dataBlock指向数据块内的具体数据对象,其中的<DataTypeName>如(1)所述;
(3)m_sliceBlock指向数据块内的历史层次,其中的<DataTypeName>如(1)所述;
(4)Header中的m_version标识数据结构版本,数据结构变化引发该属性变化;
(5)Header中的m_size标识整个数据块的大小;
(6)DataBlock是一个模板类,模板参数是具体的数据对象,m_count标识所含数据对象的数量;
(7)DataBlock中的m_data指向一组数据对象集合,m_data本身是这个集合的首地址;
(8)SliceBlock是一个模板类,模板参数是具体对象的指针,m_count标识所含历史层次的数量;
(9)SliceBlock中的m_slice指向一组历史层次Slice对象集合,m_data本身是这个集合的首地址;
(10)Slice是一个模板类,m_dataLayer标识该Slice所属历史层次;
(11)Slice中的m_count标识所含数据对象的数量;
(12)Slice中的m_data指向一组数据对象指针集合,每个指针指向DataBlock中的一个数据对象,m_data本身是这个集合的首地址。
需要说明的是,图8中箭头是指针指向数据对象。
1.2Fare数据结构
Fare数据是ATPCO标准中最核心的数据,按照始发地目的地不同及构造方式不同,可以分为Ifare,Dfare,Cfare三类,在一次计算过程中这三类Fare都可能用到,因此设计一种单一的数据结构,如图9中所示,用于包含这三种Fare。
(1)数据结构中同时存在Ifare、Dfare、Cfare三种类型数据及其历史层次;
(2)DataBlock的m_data指向对应数据类型的一个集合,m_data本身是这个集合的首地址;
(3)Slice中的m_data指向一个数据指针集合,每个指针指向DataBlock的数据集合中的一个数据对象,m_data本身是这个数据指针集合的首地址。
1.3Rule数据结构
Rule数据包括Record0,Record1,Record2,Record3、Record6,Record8等多种数据,其中Record0,Record1,Record2及其之间的关联关系应用最多,为此需要设计特定的数据结构用于存储这些数据及其关系,如图10中所示。
(1)DataBlock的m_data指向实际的数据对象集合,其它的m_data都是指向数据对象的指针集合;
(2)R1R2Rel是Record1与Record2关系的数据结构,一个Record1对应一组相应的Record2,这一组Record2对应数据结构R2Rel;
(3)R0R1R2Rel是Record1与Record0指向的Record2关系的数据结构,一个Record0指向一组Record2,这个关系以数据结构R0R2Rel表示,其中的m_r0EffDate与m_r0DiscDate分别是Record0的生效和截止日期,一个Record1对应一组这样的Record2;
(4)Record1按历史分层,Record1与Record2的关系也按历史分层。
1.4Key-Value结构
每种数据类型的Value都是一个以上数据结构的数据块,Key的定义按照计算过程中对数据块的访问需求而定。以下分别是Fare和Rule数据的Key值:
Fare:Orig+Dest,即始发地+目的地
Rule:Cxr+Trf+RuleNo,即航空公司+编码+规则编号
按照上述数据结构存储的数据块中,由于一个数据对象可能在多个历史层次都处于生效状态,因此存在指向这个数据对象的指针冗余。如果一个数据块用于存储两年历史数据,会出现数据块过大导致传输开销过大的情况,因此在实际应用中以月为单位存储历史数据,两年历史数据存储为24个数据块,在每个数据块的Key中加入标识月的数值。
2、数据更新示例
以Fare为例说明使用以上数据结构的Key-Value国际客票运价数据的存储方法。
(1)初始状态***中无数据,此时ATPCO发送一批源数据文件,其中包含Ifare如下:
Ifare1:BJS(Orig)+NYC(Dest)+...(Others)
Ifare2:BJS(Orig)+NYC(Dest)+...(Others)
Ifare3:BJS(Orig)+NYC(Dest)+...(Others)
Ifare4:BJS(Orig)+NYC(Dest)+...(Others)
Ifare5:BJS(Orig)+NYC(Dest)+...(Others)
Ifare6:BJS(Orig)+LAX(Dest)+...(Others)
Ifare7:BJS(Orig)+LAX(Dest)+...(Others)
并且此时预处理产生Cfare如下:
Cfare1:BJS(Orig)+NYC(Dest)+...(Others)
Cfare2:BJS(Orig)+NYC(Dest)+...(Others)
处理后按照BJSNYC和BJSLAX(都忽略按月分区)两个Key值产生两个数据块的Value,其中BJSNYC如图11中所示。
(2)ATPCO再次发送一批源数据文件,其中包含Ifare如下:
Ifare8:BJS(Orig)+NYC(Dest)+...(Others)
Ifare9:BJS(Orig)+NYC(Dest)+...(Others)
Ifare10:BJS(Orig)+NYC(Dest)+...(Others)
Ifare11:BJS(Orig)+NYC(Dest)+...(Others)
Ifare8将修改上批数据的Ifare2,导致Ifare2被截止;Ifare10本身是一个无效数据,不会被存储,只是用于截止Ifare4。
此时预处理产生Cfare如下:
Cfare3:BJS(Orig)+NYC(Dest)+...(Others)
Cfare4:BJS(Orig)+NYC(Dest)+...(Others)
Cfare5:BJS(Orig)+NYC(Dest)+...(Others)
并且上批数据产生的Cfare1被截止,此时BJSNYC如图12中所示。
可见,本申请的技术方案中通过提出一种降低高频数据访问压力的国际客票运价数据存储与读取方法,具有以下特点:
(1)数据物理上采用Key-Value结构,能够存储海量数据,适用于各种主流Key-Value数据库,具有良好的扩展性与维护性;
(2)Fare和/或Rule数据在存储时,将多种数据类型扁平化绑定存储在一个数据结构中,一次访问可获得所有需要的数据类型对象,减小了对内存数据库的访问次数,具有更优的数据访问性能。并且数据结构中有结构版本号,可实现多种基础数据结构变化的版本兼容;
(3)数据块的数据按历史层次分片,数据访问可快速定位到所需时间片,具有更优的历史数据访问效率;
(4)每个批次的数据更新中,实现数据的动态增量更新,提高数据更新效率,减少了用户数据的上线时间,提升用户体验。
下面参考图13,其示出了适于用来实现本公开实施例的电子设备的结构示意图。图13示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图13所示,电子设备可以包括处理器(例如中央处理器、图形处理器等)1301,其可以根据存储在只读存储器(ROM)1302中的程序或者从存储装置106加载到随机访问存储器(RAM)1303中的程序而执行各种适当的动作和处理。在RAM 1303中,还存储有电子设备操作所需的各种程序和数据。处理器1301、ROM 1302以及RAM 1303通过总线1304彼此相连。输入/输出(I/O)接口1305也连接至总线1304。
通常,以下装置可以连接至I/O接口1305:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置1306;包括例如液晶显示器(LCD)、扬声器、振动器等的输出装置1307;包括例如磁带、硬盘等的存储装置1306;以及通信装置1309。通信装置1309可以允许电子设备与其他设备进行无线或有线通信以交换数据。虽然图13示出了具有各种装置的电子设备,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在非暂态计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置1309从网络上被下载和安装,或者从存储装置1306被安装,或者从ROM 1302被安装。在该计算机程序被处理器1301执行时,执行本公开实施例的方法中限定的上述功能:
获得待存储的目标数据,所述目标数据中至少包括至少一个待存储的内容数据对象和所述内容数据对象的数据关键词,且所述目标数据中的内容数据对象属于至少一种数据类型的数据;
针对具有同一数据关键词的内容数据对象,进行序列化处理,以生成初始数据块;
将包含所述初始数据块和所述数据关键词的目标数据块写入到存储介质中,其中,所述目标数据块中的数据关键词用于与数据访问请求中的访问关键词进行比对,以得到所述存储介质中与所述数据访问请求相对应的目标数据块。
本发明实施例还要求保护一种计算机存储介质,用于储存为上述电子设备所用的计算机软件指令,其包含用于执行上述方面所设计的程序。
上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被电子设备执行时,使得该电子设备:
获得待存储的目标数据,所述目标数据中至少包括至少一个待存储的内容数据对象和所述内容数据对象的数据关键词,且所述目标数据中的内容数据对象属于至少一种数据类型的数据;
针对具有同一数据关键词的内容数据对象,进行序列化处理,以生成初始数据块;
将包含所述初始数据块和所述数据关键词的目标数据块写入到存储介质中,其中,所述目标数据块中的数据关键词用于与数据访问请求中的访问关键词进行比对,以得到所述存储介质中与所述数据访问请求相对应的目标数据块。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行***、装置或设备使用或与指令执行***、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体***、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。
上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。
根据本公开的一个或多个实施例,图1所示实施例提供了一种数据处理方法,包括:
获得待存储的目标数据,所述目标数据中至少包括至少一个待存储的内容数据对象和所述内容数据对象的数据关键词,且所述目标数据中的内容数据对象属于至少一种数据类型的数据;
针对具有同一数据关键词的内容数据对象,进行序列化处理,以生成初始数据块;
将包含所述初始数据块和所述数据关键词的目标数据块写入到存储介质中,其中,所述目标数据块中的数据关键词用于与数据访问请求中的访问关键词进行比对,以得到所述存储介质中与所述数据访问请求相对应的目标数据块。
根据本公开的一个或多个实施例,图2所示实施例所公开的一种数据处理方法中,针对具有同一数据关键词的内容数据对象,进行序列化处理,以生成初始数据块,包括:
针对具有同一数据关键词的内容数据对象,创建初始数据块,所述初始数据块具有首地址;
将具有同一数据关键词的内容数据对象依次写入到其对应的初始数据块中,并在所述初始数据块中记录所述内容数据对象的内存地址相对于所述首地址的第一偏移量。
根据本公开的一个或多个实施例,图3所示实施例所公开的一种数据处理方法中,所述目标数据中还包括指向所述内容数据对象的关系数据对象;
其中,在所述初始数据块中记录所述内容数据对象的内存地址相对于所述首地址的第一偏移量之后,所述方法还包括:
将所述内容数据对象对应的关系数据对象设置为指向所述第一偏移量;
将所述内容数据对象对应的关系数据对象依次写入到相应的初始数据块中,并在所述初始数据块中记录所述关系数据对象的内存地址到所述首地址之间的第二偏移量。
根据本公开的一个或多个实施例,本申请实施例所公开的一种数据处理方法中,还包括:
在所述初始数据块的存储空间小于所述目标数据的存储空间的情况下,在所述初始数据块中的最大存储地址之后扩展相应的存储空间。
根据本公开的一个或多个实施例,本申请实施例公开的一种数据处理方法中,所述目标数据块中具有所述内容数据对象的时间存储标识,所述时间存储标识用于唯一标识所述目标数据块中的内容数据对象的存储批次;
其中,所述数据访问请求中还包括时间访问标识,所述时间访问标识用于与所述存储介质中所述目标数据块内的内容数据对象的时间存储标识进行比对,以得到所述存储介质中的目标数据块内与所述数据访问请求相对应的内容数据对象。
根据本公开的一个或多个实施例,本申请实施例公开的一种数据处理方法中,在针对具有同一数据关键词的内容数据对象,进行序列化处理,以生成初始数据块之前,所述方法还包括:
对所述存储介质中具有同一所述数据关键词的目标数据块,根据所述目标数据中的内容数据对象进行增量更新,并对更新的内容数据对象设置相应的时间存储标识。
根据本公开的一个或多个实施例,图4所示实施例公开的一种数据处理方法中,还包括:
在所述存储介质中,读取与所述数据访问请求相对应的目标数据块;
对所述目标数据块进行反序列化,至少得到所述目标数据块中的内容数据对象;
至少将所述内容数据对象写入到内存中。
根据本公开的一个或多个实施例,本申请实施例公开的一种数据处理方法中,对所述目标数据块进行反序列化,得到所述目标数据块中的内容数据对象,包括:
读取所述目标数据块中的首地址;
依次读取所述目标数据块中的内容数据对象;
根据所述目标数据块中所述内容数据对象对应的第一偏移量和所述首地址,获得所述内容数据对象的内存地址。
根据本公开的一个或多个实施例,本申请实施例公开的一种数据处理方法中,在获得所述内容数据对象的内存地址之后,所述方法还包括:
依次读取所述目标数据块中指向所述第一偏移量的关系数据对象;
将所述关系数据对象指向其对应的内容数据对象的内存地址;
根据所述目标数据块中所述关系数据对象对应的第二偏移量和所述首地址,获得所述关系数据对象的内存地址。
根据本公开的一个或多个实施例,图5所示实施例提供了一种数据处理装置,包括:
数据获得单元,用于获得待存储的目标数据,所述目标数据中至少包括至少一个待存储的内容数据对象和所述内容数据对象的数据关键词,且所述目标数据中的内容数据对象属于至少一种数据类型的数据;
数据块生成单元,用于针对具有同一数据关键词的内容数据对象,进行序列化处理,以生成初始数据块;
数据块写入单元,用于将包含所述初始数据块和所述数据关键词的目标数据块写入到存储介质中,其中,所述目标数据块中的数据关键词用于与数据访问请求中的访问关键词进行比对,以得到所述存储介质中与所述数据访问请求相对应的目标数据块。
尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本主题,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。
虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本公开的范围的限制。在单独的实施例的上下文中描述的某些特征还可以组合地实现在单个实施例中。相反地,在单个实施例的上下文中描述的各种特征也可以单独地或以任何合适的子组合的方式实现在多个实施例中。
以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的公开范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述公开构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
Claims (10)
1.一种数据处理方法,其特征在于,包括:
获得待存储的目标数据,所述目标数据中至少包括至少一个待存储的内容数据对象和所述内容数据对象的数据关键词,且所述目标数据中的内容数据对象属于至少一种数据类型的数据;
针对具有同一数据关键词的内容数据对象,进行序列化处理,以生成初始数据块;
将包含所述初始数据块和所述数据关键词的目标数据块写入到存储介质中,其中,所述目标数据块中的数据关键词用于与数据访问请求中的访问关键词进行比对,以得到所述存储介质中与所述数据访问请求相对应的目标数据块。
2.根据权利要求1所述的方法,其特征在于,针对具有同一数据关键词的内容数据对象,进行序列化处理,以生成初始数据块,包括:
针对具有同一数据关键词的内容数据对象,创建初始数据块,所述初始数据块具有首地址;
将具有同一数据关键词的内容数据对象依次写入到其对应的初始数据块中,并在所述初始数据块中记录所述内容数据对象的内存地址相对于所述首地址的第一偏移量。
3.根据权利要求2所述的方法,其特征在于,所述目标数据中还包括指向所述内容数据对象的关系数据对象;
其中,在所述初始数据块中记录所述内容数据对象的内存地址相对于所述首地址的第一偏移量之后,所述方法还包括:
将所述内容数据对象对应的关系数据对象设置为指向所述第一偏移量;
将所述内容数据对象对应的关系数据对象依次写入到相应的初始数据块中,并在所述初始数据块中记录所述关系数据对象的内存地址到所述首地址之间的第二偏移量。
4.根据权利要求2所述的方法,其特征在于,所述方法还包括:
在所述初始数据块的存储空间小于所述目标数据的存储空间的情况下,在所述初始数据块中的最大存储地址之后扩展相应的存储空间。
5.根据权利要求1或2所述的方法,其特征在于,所述目标数据块中具有所述内容数据对象的时间存储标识,所述时间存储标识用于唯一标识所述目标数据块中的内容数据对象的存储批次;
其中,所述数据访问请求中还包括时间访问标识,所述时间访问标识用于与所述存储介质中所述目标数据块内的内容数据对象的时间存储标识进行比对,以得到所述存储介质中的目标数据块内与所述数据访问请求相对应的内容数据对象。
6.根据权利要求5所述的方法,其特征在于,在针对具有同一数据关键词的内容数据对象,进行序列化处理,以生成初始数据块之前,所述方法还包括:
对所述存储介质中具有同一所述数据关键词的目标数据块,根据所述目标数据中的内容数据对象进行增量更新,并对更新的内容数据对象设置相应的时间存储标识。
7.根据权利要求1所述的方法,其特征在于,还包括:
在所述存储介质中,读取与所述数据访问请求相对应的目标数据块;
对所述目标数据块进行反序列化,至少得到所述目标数据块中的内容数据对象;
至少将所述内容数据对象写入到内存中。
8.根据权利要求7所述的方法,其特征在于,对所述目标数据块进行反序列化,得到所述目标数据块中的内容数据对象,包括:
读取所述目标数据块中的首地址;
依次读取所述目标数据块中的内容数据对象;
根据所述目标数据块中所述内容数据对象对应的第一偏移量和所述首地址,获得所述内容数据对象的内存地址。
9.根据权利要求8所述的方法,其特征在于,在获得所述内容数据对象的内存地址之后,所述方法还包括:
依次读取所述目标数据块中指向所述第一偏移量的关系数据对象;
将所述关系数据对象指向其对应的内容数据对象的内存地址;
根据所述目标数据块中所述关系数据对象对应的第二偏移量和所述首地址,获得所述关系数据对象的内存地址。
10.一种数据处理装置,其特征在于,包括:
数据获得单元,用于获得待存储的目标数据,所述目标数据中至少包括至少一个待存储的内容数据对象和所述内容数据对象的数据关键词,且所述目标数据中的内容数据对象属于至少一种数据类型的数据;
数据块生成单元,用于针对具有同一数据关键词的内容数据对象,进行序列化处理,以生成初始数据块;
数据块写入单元,用于将包含所述初始数据块和所述数据关键词的目标数据块写入到存储介质中,其中,所述目标数据块中的数据关键词用于与数据访问请求中的访问关键词进行比对,以得到所述存储介质中与所述数据访问请求相对应的目标数据块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010320592.0A CN111506628B (zh) | 2020-04-22 | 2020-04-22 | 数据处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010320592.0A CN111506628B (zh) | 2020-04-22 | 2020-04-22 | 数据处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111506628A true CN111506628A (zh) | 2020-08-07 |
CN111506628B CN111506628B (zh) | 2023-06-20 |
Family
ID=71872963
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010320592.0A Active CN111506628B (zh) | 2020-04-22 | 2020-04-22 | 数据处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111506628B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112073218A (zh) * | 2020-08-10 | 2020-12-11 | 烽火通信科技股份有限公司 | 一种网络配置文件兼容方法、电子设备及存储介质 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130246334A1 (en) * | 2011-12-27 | 2013-09-19 | Mcafee, Inc. | System and method for providing data protection workflows in a network environment |
CN105243086A (zh) * | 2015-09-08 | 2016-01-13 | 北京北大千方科技有限公司 | 一种车辆信息查询方法和装置 |
CN107133300A (zh) * | 2017-04-27 | 2017-09-05 | 福建中金在线信息科技有限公司 | 一种数据查询方法及装置 |
CN108009254A (zh) * | 2017-12-05 | 2018-05-08 | 北京百度网讯科技有限公司 | 多索引方法及装置、云***以及计算机可读存储介质 |
CN108038114A (zh) * | 2017-10-17 | 2018-05-15 | 广东欧珀移动通信有限公司 | 一种路径查询方法、终端、计算机可读存储介质 |
CN110222086A (zh) * | 2019-05-07 | 2019-09-10 | 深圳壹账通智能科技有限公司 | 基于区块链的数据管理方法、装置、设备和存储介质 |
CN110275935A (zh) * | 2019-05-10 | 2019-09-24 | 平安科技(深圳)有限公司 | 政策信息的处理方法、装置、及存储介质、电子装置 |
CN110457281A (zh) * | 2019-08-14 | 2019-11-15 | 北京博睿宏远数据科技股份有限公司 | 数据处理方法、装置、设备及介质 |
WO2020067237A1 (en) * | 2018-09-27 | 2020-04-02 | Yokogawa Electric Corporation | System, method, program, and recording medium |
CN110969469A (zh) * | 2018-09-30 | 2020-04-07 | 北京国双科技有限公司 | 数据的获取方法及装置 |
-
2020
- 2020-04-22 CN CN202010320592.0A patent/CN111506628B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130246334A1 (en) * | 2011-12-27 | 2013-09-19 | Mcafee, Inc. | System and method for providing data protection workflows in a network environment |
CN105243086A (zh) * | 2015-09-08 | 2016-01-13 | 北京北大千方科技有限公司 | 一种车辆信息查询方法和装置 |
CN107133300A (zh) * | 2017-04-27 | 2017-09-05 | 福建中金在线信息科技有限公司 | 一种数据查询方法及装置 |
CN108038114A (zh) * | 2017-10-17 | 2018-05-15 | 广东欧珀移动通信有限公司 | 一种路径查询方法、终端、计算机可读存储介质 |
CN108009254A (zh) * | 2017-12-05 | 2018-05-08 | 北京百度网讯科技有限公司 | 多索引方法及装置、云***以及计算机可读存储介质 |
WO2020067237A1 (en) * | 2018-09-27 | 2020-04-02 | Yokogawa Electric Corporation | System, method, program, and recording medium |
CN110969469A (zh) * | 2018-09-30 | 2020-04-07 | 北京国双科技有限公司 | 数据的获取方法及装置 |
CN110222086A (zh) * | 2019-05-07 | 2019-09-10 | 深圳壹账通智能科技有限公司 | 基于区块链的数据管理方法、装置、设备和存储介质 |
CN110275935A (zh) * | 2019-05-10 | 2019-09-24 | 平安科技(深圳)有限公司 | 政策信息的处理方法、装置、及存储介质、电子装置 |
CN110457281A (zh) * | 2019-08-14 | 2019-11-15 | 北京博睿宏远数据科技股份有限公司 | 数据处理方法、装置、设备及介质 |
Non-Patent Citations (1)
Title |
---|
刘科;秦磊华;周敬利;聂雪军;曾东;: "内容感知存储***中的两阶段检索策略", 计算机科学, no. 05 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112073218A (zh) * | 2020-08-10 | 2020-12-11 | 烽火通信科技股份有限公司 | 一种网络配置文件兼容方法、电子设备及存储介质 |
CN112073218B (zh) * | 2020-08-10 | 2022-05-31 | 烽火通信科技股份有限公司 | 一种网络配置文件兼容方法、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111506628B (zh) | 2023-06-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110622152B (zh) | 用于查询时间序列数据的可扩展数据库*** | |
Silva et al. | SQL: From traditional databases to big data | |
US8250590B2 (en) | Apparatus, system, and method for seamless multiple format metadata abstraction | |
CN101364217B (zh) | 数据库中数据维护方法、设备及其*** | |
CN111258966A (zh) | 一种数据去重方法、装置、设备及存储介质 | |
US20070250517A1 (en) | Method and Apparatus for Autonomically Maintaining Latent Auxiliary Database Structures for Use in Executing Database Queries | |
CN110287189B (zh) | 一种基于spark streaming处理流动车辆数据的方法及*** | |
US10133767B1 (en) | Materialization strategies in journal-based databases | |
Ferraro Petrillo et al. | Analyzing big datasets of genomic sequences: fast and scalable collection of k-mer statistics | |
CN110096509A (zh) | 大数据环境下实现历史数据拉链表存储建模处理的***及方法 | |
CN106909554A (zh) | 一种数据库文本表数据的加载方法及装置 | |
US9396218B2 (en) | Database insert with deferred materialization | |
CN114443680A (zh) | 数据库管理***、相关装置、方法和介质 | |
CN112307065A (zh) | 一种数据处理方法、装置及服务器 | |
WO2022179122A1 (zh) | 基于大数据的数据存储方法、装置、电子设备及存储介质 | |
US20070174329A1 (en) | Presenting a reason why a secondary data structure associated with a database needs rebuilding | |
CN114443615A (zh) | 数据库管理***、相关装置、方法和介质 | |
CN111506628A (zh) | 数据处理方法及装置 | |
CN115470235A (zh) | 一种数据处理方法、装置以及设备 | |
US7890456B2 (en) | Sharing of database objects | |
CN117290395A (zh) | 优惠券库存管理方法、装置、存储介质及处理器 | |
US20130304707A1 (en) | Data Archiving Approach Leveraging Database Layer Functionality | |
CN115576947A (zh) | 一种数据管理方法、装置、组合库、电子设备及存储介质 | |
CN115344603A (zh) | 运价数据存储方法、装置、电子设备和计算机存储介质 | |
CN115114297A (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 |