CN115344603A - 运价数据存储方法、装置、电子设备和计算机存储介质 - Google Patents
运价数据存储方法、装置、电子设备和计算机存储介质 Download PDFInfo
- Publication number
- CN115344603A CN115344603A CN202211014897.4A CN202211014897A CN115344603A CN 115344603 A CN115344603 A CN 115344603A CN 202211014897 A CN202211014897 A CN 202211014897A CN 115344603 A CN115344603 A CN 115344603A
- Authority
- CN
- China
- Prior art keywords
- data
- memory
- database
- freight rate
- mmap
- 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/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
-
- 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/215—Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
-
- 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
- G06F16/2282—Tablespace storage structures; Management thereof
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供一种运价数据存储方法、装置、电子设备和计算机存储介质,该方法包括读取运价数据文件,确定运价数据文件的数据源;解析运价数据文件,得到数据文件中所包含的数据类型、每一数据类型包括的数据对象,以及数据对象中的运价数据;按照数据源预先配置的MMap数据库的内存地址,以及每一数据类型预先配置的数据表和索引的内存地址,映射数据对象至对应的内存地址;将数据对象中的运价数据存储至对应的内存地址,并配置MMap数据库的数据版本。在本申请中通过为不同数据源预先配置MMap数据库,将物理内存中创建的数据对象映射的逻辑内存地址写入到MMap数据库,通过内存直接获取数据,能够实现提高数据访问效率的目的。
Description
技术领域
本发明涉及数据处理技术领域,特别涉及一种运价数据存储方法、装置、电子设备和计算机存储介质。
背景技术
在各个民航公司对客票进行管理的过程中,都依赖于民航客票计算系统或搜索系统。民航客票计算系统或搜索系统的数据来源均来自于民航运价数据库。
为提高民航客票计算系统或搜索系统的计算性能,需要性能优异的运价数据库为其提供数据基础,以便于通过提高数据访问效率提高计算性能。但是,传统的运价数据库一般采用文本数据库、关系型数据库,其针对数据的存储方式无法支持高效的数据访问效率,从而影响民航客票计算系统或搜索系统的计算性能。
发明内容
针对上述现有技术的问题,本申请提供一种运价数据存储方法、装置、电子设备和计算机存储介质,以实现支持高效的数据访问效率的目的。
本申请第一方面公开了一种运价数据存储方法,包括:
读取运价数据文件,确定所述运价数据文件的数据源;
解析所述运价数据文件,得到所述数据文件中所包含的数据类型、每一所述数据类型包括的数据对象,以及所述数据对象中的运价数据;
按照所述数据源预先配置的MMap内存映射数据库的内存地址,以及每一数据类型预先配置的数据表和索引的内存地址,映射所述数据对象至对应的内存地址;
将所述数据对象和所述数据对象中的运价数据存储至对应的内存地址,并配置所述MMap内存映射数据库的数据版本。
可选的,为所述数据源预先配置数据库的过程包括:
确定与民航客票相关的数据源;
为每一数据源建立一对应的MMap内存映射数据库,并为每一MMap内存映射数据库配置基础信息,所述基础信息包括数据库名、数据库的内存起始地址、数据库序号和数据库占用内存范围;
确定所述数据源中的数据类型和所述数据类型包括的数据对象;
为每一所述数据类型配置一数据表;
基于构建的所述数据表和查询需求,基于所述数据对象构建所述数据表的索引;
按照所述数据类型的预设存储顺序和所述数据类型对应的数据表所占用的内存大小,由所述数据库的内存起始地址开始配置各个所述数据类型对应的数据表和索引的内存起始地址;
其中,所述数据库的内存起始地址作为第一存储顺次的数据类型对应的数据表的内存起始地址,基于所述第一存储顺次的数据类型对应的数据表所占用的内存大小计算下一存储顺次的数据类型对应的数据表的内存起始地址,直至计算出最后一个数据类型对应的数据表的内存起始地址。
可选的,所述解析所述运价数据文件,得到所述数据文件中所包含的数据类型、每一所述数据类型包括的数据对象,以及所述数据对象中的运价数据,包括:
逐行解析所述运价数据文件;
针对不存在变长片段的数据类型,确定所述数据类型包括的数据对象,以及所述数据对象下的运价数据;
针对存在变长片段的数据类型,将所述变长片段由所述数据类型中拆分出,得到一个新的数据类型,确定拆分后的数据类型和所述新的数据类型各自包括的数据对象,以及所述数据对象下的运价数据。
可选的,所述按照所述数据源预先配置的MMap内存映射数据库的内存地址,以及每一数据类型预先配置的数据表和索引的内存地址,映射所述数据对象至对应的内存地址,包括:
基于所述数据源预先配置的MMap内存映射数据库的内存地址,定位映射起始内存地址和内存范围;
在所述起始内存地址和内存范围内,定位每一数据类型预先配置的数据表和索引的内存地址;
按照所述数据对象所属的数据类型的存储顺序,映射所述数据对象至对应的数据表的内存地址;
将由所述数据对象构件的索引,映射至定位的索引的内存地址。
可选的,将所述数据对象和所述数据对象中的运价数据存储至对应的内存地址中,包括:
若为首次映射,将所述数据对象和所述数据对象中的运价数据依次存储至对应的内存地址中;
若非首次映射,根据所述数据对象所属的数据类型预先配置的数据更新类型,将所述数据对象和所述数据对象中的运价数据存储至对应的内存地址中;
其中,所述数据更新类型包括Replace更新类型、DeleteAddByID更新类型、Update更新类型和UpdateByDate更新类型中的一种;
相应的,所述配置所述MMap内存映射数据库的数据版本,包括:
若为首次映射,配置所述MMap内存映射数据库的数据版本为1;
若非首次映射,当所述MMap内存映射数据库中的数据表的数据结构发生变化,或者,所述MMap内存映射数据库中新增或删除任意数据表时,将所述MMap内存映射数据库的当前数据版本递增1。
可选的,还包括:
在所述MMap内存映射数据库中,根据不同的查询接口查询所述数据对象以及所述数据对象中的运价数据,所述查询接口至少包括:
基于完整数据表查询所有未软删除的数据对象指针;
基于完整数据表查询包含软删除在内的所有数据对象指针;
根据索引查询所有未软删除的数据对象指针;
根据索引查询包含软删除在内的所有数据对象指针。
可选的,还包括:
每隔预设时间物理删除所述MMap内存映射数据库中执行软删除的数据对象和/或运价数据;或者,
在设定时间区间内物理删除所述MMap内存映射数据库中执行软删除的数据对象和/或运价数据。
本申请实施例第二方面公开了一种运价数据存储装置,所述装置包括:
读取模块,用于读取运价数据文件;
元数据管理器,用于为不同数据源建立对应的MMap内存映射数据库,预先配置所述MMap数据库的内存地址、并在预先配置的所述数据库的内存范围内,为每一数据类型预先配置对应的数据表和索引的内存地址;以及为每一数据类型配置数据更新类型;配置所述MMap内存映射数据库的数据版本;
内存分配组件,用于确定所述运价数据文件的数据源,并根据所述元数据管理器为所述数据源预先配置的MMap内存映射数据库的内存地址,以及每一数据类型预先配置的数据表和索引的内存地址,映射所述数据对象至对应的内存地址;
数据操作组件,用于基于所述内存分配组件执行的映射操作确定的内存地址,将所述数据对象和所述数据对象中的运价数据存储至对应的内存地址;
数据存储器,用于承载所述MMap内存映射数据库。
本申请实施例第三方面公开了一种电子设备,包括存储器和处理器;
其中,所述存储器用于存储计算机程序;
所述处理器用于执行所述计算机程序,具体用于实现如本申请实施例第一方面公开的所述运价数据存储方法。
本申请实施例第四方面公开了一种计算机存储介质,用于存储计算机程序,所述计算机程序被执行时,具体用于实现如本申请实施例第一方面公开的所述运价数据存储方法。
本申请提供一种运价数据存储方法、装置、电子设备和计算机存储介质,该方法包括读取运价数据文件,确定运价数据文件的数据源;解析运价数据文件,得到数据文件中所包含的数据类型、每一数据类型包括的数据对象,以及数据对象中的运价数据;按照数据源预先配置的MMap数据库的内存地址,以及每一数据类型预先配置的数据表和索引的内存地址,映射数据对象至对应的内存地址;将数据对象中的运价数据存储至对应的内存地址,并配置MMap数据库的数据版本。在本申请中,通过为不同数据源预先配置MMap数据库,将物理内存中创建的数据对象映射的逻辑内存地址写入到MMap数据库,通过映射文件实现数据对象的序列化,在后续通过内存直接获取数据,利用内存读写取代I/O读写,从而大大提高了数据访问的效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例提供的一种运价数据存储系统的架构图;
图2为本申请实施例提供的一种运价数据存储方法的流程图;
图3为本申请实施例提供的一种预先配置数据库的流程图。
具体实施方式
下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
本文使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”;术语“一些实施例”表示“至少一些实施例”。其他术语的相关定义将在下文描述中给出。
需要注意,本申请中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。本申请中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。
首先,为了方便理解本申请实施例所提供的运价数据存储方法,下面对本申请所涉及的一些术语进行简要说明:
航空公司费用发布公司(Airline Tariff Publishing Company,ATPCO),目前国际通用的民航客票运价数据标准由该公司制定和发布。
国际航空运输协会(International Air Transport Association,IATA),民航客票运价计算中的一些基础数据如航空里程、汇率等由该机构发布。
中国民航信息网络股份有限公司(TravelSky Technology Limited,Travelsky/TTL/TSK),目前中国国内的民航客票运价数据标准由该公司制定和发布。
内存映射数据库(Memory MMap Database)是近年新兴的一种NoSQL内存数据库,将所有数据存储于指定的绝对逻辑内存地址中,通过使用MMap方法实现内存与文件的映射,从而实现数据的序列化和反序列化。
如图1所示,为本申请实施例提供的一种运价数据存储系统的架构图。本申请实施例通过该运价数据存储系统将所有民航客票计算与搜索相关的数据类型及其索引均存储于内存映射数据库中,在后续执行数据查询时,从内存中直接读取数据,不涉及网络传输及读写I/O操作,从而实现提高数据访问效率的目的。该运价数据存储系统主要包括:元数据管理器10、内存分配组件11、数据操作组件12和数据存储器13。
元数据管理器10主要是用于管理该运价数据库存储系统的各种静态或动态配置项,主要包括以下重要配置项:
1、数据库内存地址配置。
本申请实施例中提供的运价数据存储系统具有强业务关联性,存储的数据内容来源于民航客票相关的不同机构,包括但不限于下列公司或组织:ATPCO、IATA、中国航信等。按照数据来源不同,在数据存储器13中为每个数据源都建立对应的数据库,如ATPCO DB、IATA DB、中国航信DB等。每一个独立的数据库都经由元数据管理器10配置对应的内存地址。
2、数据表内存地址配置。
针对每个独立的数据库中的数据类型,每种数据类型对应一个数据表,按照数据查询需求,每个数据表可以构造若干个索引。每种索引在数据结构上是一个关联容器map,它的键是一个字符串,由数据对象的若干属性值组合构成;它的值是一个集合容器,里面的每个元素是包含键组成的属性所属数据对象的指针。
其中,每个数据表可用的索引类型数量必需指定一个最大值。
每个数据表及其所有索引都经由元数据管理器10配置对应的内存地址。所有数据类型及其索引通过相应的技术手段设计为定长类型,实现在内存中依次顺序存储。
3、数据更新类型配置。
所有数据类型都具有操作标识属性,所有数据类型的更新操作可以归类为以下四类。
1)、Replace:应用这种方式的数据类型无需检查操作标识属性值,仅使用新数据整体替换旧数据,即在接收到新数据之后将所有旧数据软删除,然后插入所有新数据。
2)、DeleteAddByID:应用这种方式的数据类型的操作标识属性只有新增和删除两个取值。逐条遍历新数据,如果操作标识是新增则插入该新数据,否则从数据库中查找具有相同键值的旧数据并做软删除。
3)、Update:应用这种方式的数据类型的操作标识属性具有新增、删除、修改三个取值。逐条遍历新数据,如果操作标识是新增则插入该新数据,否则从数据库中查找具有相同键值的旧数据,如果操作标识是删除则做软删除,如果是修改则将旧数据软删除并插入新数据。
4)、UpdateByDate:应用这种方式的数据类型的操作标识属性具有新增、删除、修改以及截止四个取值。逐条遍历新数据,如果操作标识是新增则插入该新数据,否则从数据库中查找具有相同键值的旧数据,如果操作标识是删除则做软删除,如果是截止则软删除旧数据,并插入一条在旧数据基础上修改了截止时间的数据,如果是修改则软删除旧数据,并插入一条在旧数据基础上修改了截止时间的数据以及新数据。
4、数据版本配置。
不同的数据库有不同的数据版本,用于标识其中的数据结构。任何数据表的数据结构变化,或者增加、删除一种数据表,都由元数据管理器10对引起相应数据版本配置进行修改。
内存分配组件11主要用于动态分配物理内存创建数据对象,再按照元数据管理器10中对不同数据库和数据表的配置,将分配的物理内存映射到相应的逻辑地址,即数据存储器13中相应的内存地址。具体在映射的过程中,因为所有数据对象或索引都是依次顺序存储,内存分配组件11中会记录每种数据对象的首地址、已用内存尾地址,因此,下一次分配逻辑地址即从尾地址开始。
数据操作组件12主要用于提供针对本申请实施例中公开的运价数据存储系统的操作。主要包括如下五种类型:
1、数据插入。
调用内存分配组件11创建的数据对象,然后写入到数据存储器13中。
2、数据修改。
读取数据存储器13中的数据对象,修改数据对象的属性值,然后回写入数据存储器13。
3、数据软删除。该操作是针对数据对象的特有操作。软删除并不实际将数据对象从数据存储器移除,而是修改数据对象的标识属性值,从而数据查询时将该对象视为已删除状态。在本申请实施例中涉及到的数据更新过程的删除操作实际都是软删除。
4、数据物理删除。将数据对象从数据存储器13中实际移除。
5、数据查询。由于数据对象及其索引都是在内存中按顺序依次存储,使用迭代器实现数据查询。可以通过表级迭代器实现全表查询,也可以通过索引迭代器实现按索引查询。
数据存储器13,即MMap内存映射文件。物理内存中创建的数据对象映射的逻辑内存地址写入到MMap内存映射文件,通过映射文件实现数据对象的序列化,从而永久保存。MMap内存映射文件存储在物理硬盘中,数据操作时有一次I/O读写开销,使用SSD硬盘以提高读写速度。
本申请实施例公开的运价数据存储架构通过将所有民航客票计算与搜索相关的数据类型及其索引均存储于内存映射数据库中,在后续执行数据查询时,从内存中直接读取数据,不涉及网络传输及读写I/O操作,从而实现提高数据访问效率的目的。
基于上述本发明实施例公开的运价数据存储系统,本发明实施例还对应公开了一种运价数据存储处理方法,请参考图2,该方法可以包括以下步骤:
S201:读取运价数据文件,确定所述运价数据文件的数据源。
在S201中,根据读取的运价数据文件确定其对应的数据源,以便于后续基于预先为该数据源建立的对应数据库进行操作。
S202:解析所述运价数据文件,得到所述数据文件中所包含的数据类型、每一所述数据类型包括的数据对象,以及所述数据对象中的运价数据。
在具体实现S202的过程中,首先,逐行解析该运价数据文件,如果解析出的数据类型为不存在变长片段的数据类型,则说明该运价数据文件的每一行对应一个数据对象,确定该数据类型包括的数据对象,以及数据对象下的运价数据。如果解析出的数据类型为存在变长片段的数据类型,则说明该运价数据文件的每一行对应一个数据对象及其子表对象,此时,通过将该变长片段由数据类型中拆分出,得到一个新的数据类型,确定拆分后的数据类型和新的数据类型各自包括的数据对象,以及该数据对象下的运价数据。
例如,数据类型Record1具有变长片段。这个变长片段是由若干个定长的小块组成,小块的数量记载在Record1的一个属性中。可将这个变长片段从Record1拆分出来,形成一个新的数据类型Record1Segment,一个Record1Segment对象存储上述的定长小块。需要说明的是,该Record1Segment作为Record1的子表,不能独立存在。
S203:按照所述数据源预先配置的MMap内存映射数据库的内存地址,以及每一数据类型预先配置的数据表和索引的内存地址,映射所述数据对象至对应的内存地址。
在具体实现S203的过程中,首先,基于所述数据源预先配置的MMap内存映射数据库的内存地址,定位映射起始内存地址和内存范围。
其次,在所述起始内存地址和内存范围内,定位每一数据类型预先配置的数据表和索引的内存地址。
其次,按照所述数据对象所属的数据类型的存储顺序,映射所述数据对象至对应的数据表的内存地址。
最后,将由所述数据对象构件的索引,映射至定位的索引的内存地址。
S204:将所述数据对象和所述数据对象中的运价数据存储至对应的内存地址,并配置所述MMap内存映射数据库的数据版本。
在具体执行S204的过程中,若为首次映射,将所述数据对象和所述数据对象中的运价数据依次存储至对应的内存地址中。
若非首次映射,根据所述数据对象所属的数据类型预先配置的数据更新类型,将所述数据对象和所述数据对象中的运价数据存储至对应的内存地址中。
其中,所述数据更新类型包括Replace更新类型、DeleteAddByID更新类型、Update更新类型和UpdateByDate更新类型中的一种。
基于此,若为首次映射,配置所述MMap内存映射数据库的数据版本为1。
若非首次映射,当所述MMap内存映射数据库中的数据表的数据结构发生变化,或者所述MMap内存映射数据库中新增或删除任意数据表时,将所述MMap内存映射数据库的当前数据版本递增1。
需要说明的是,每个数据表可以构造若干个索引。每种索引在数据结构上是一个关联容器map,它的键是一个字符串,由数据对象的若干属性值组合构成;当数据对象中的运价数据发生变化时,作为索引的关联容器map的内容发生变化:会新增/删除key-value对或在原有key的value中新增或删除数据;当需要增加新的索引类型或删除已有索引类型时,会有索引的数据结构变化,相应地,致使该数据表的数据结构发生变化。
本申请提供一种运价数据存储方法,通过为不同数据源预先配置MMap数据库,将物理内存中创建的数据对象映射的逻辑内存地址写入到MMap数据库,通过映射文件实现数据对象的序列化,在后续通过内存直接获取数据,利用内存读写取代I/O读写,从而大大提高了数据访问的效率。
在一实施例中,在运价数据存储之后,可基于该运价数据存储数据库进行数据查询,即在所述MMap内存映射数据库中,根据不同的查询接口查询所述数据对象以及所述数据对象中的运价数据,所述查询接口至少包括:
1、基于完整数据表查询所有未软删除的数据对象指针。
2、基于完整数据表查询包含软删除在内的所有数据对象指针。
3、根据索引查询所有未软删除的数据对象指针。
4、根据索引查询包含软删除在内的所有数据对象指针。
在一实施例中,基于该MMap内存映射数据库,每隔预设时间物理删除所述MMap内存映射数据库中执行软删除的数据对象和/或运价数据。
在一实施例中,基于该MMap内存映射数据库,在设定时间区间内物理删除所述MMap内存映射数据库中执行软删除的数据对象和/或运价数据。
基于上述本发明实施例公开的运价数据存储方法,其中涉及针对数据源预先配置的数据库,该为数据源预先配置数据库的过程如图3所示,主要包括如下步骤:
S301:确定与民航客票相关的数据源。
S302:为每一数据源建立一对应的MMap内存映射数据库,并为每一MMap内存映射数据库配置基础信息。
在S302中,所述基础信息包括数据库名、数据库的内存起始地址、数据库序号和数据库占用内存范围。
在具体执行S302中,数据库内存地址配置由多种方式,可以指定数据库的起始和截止地址的方式,每个数据库可用内存空间大小由截止地址和起始地址的差值计算得到;也可以指定数据库系统的起始地址以及各个数据库占用内存大小和数据库的内存分配顺序,各个数据库的起止地址通过简单计算获取。
例如,为数据源ATPCO和数据源IATA所对应的数据库ATPCO DB和IATA DB进行配置。可以通过指定的方式配置数据库系统的起始地址以及各个数据库占用内存大小和数据库的内存分配顺序,如表1所示。
表1:
需要说明的是,数据写入过程中,ATPCO数据写入到0x200000000000L开始的ATPCODB,所有数据大小不能超过4T。IATA DB的首地址通过动态计算出是0x240000000000L,所有IATA数据大小不能超过1T。
S303:确定所述数据源中的数据类型和所述数据类型包括的数据对象。
在S303中,根据数据源的不同,其中所包含的数据类型也有所不同。
例如,针对ATPCO与IATA的数据源中包含了多达100多种数据,包括但不限于下列的数据类型:美国国内运价(DomesticFare)、国际运价(IntlFare)、规则(Record1、Record2、Record3、Record6、Record8等)、航线(Routing)、脚注(Footnote)、里程(TPM、MPM)等。
S304:为每一所述数据类型配置一数据表。
在S304中,需要说明的是,针对具有变长片段的数据类型,其可将变长片段从该数据类型中拆分出来,构成一个新的数据类型,并产生一个Segment子表,利用该Segment子表存储该数据类型的变长片段。同样的,该Segment子表与主表及其索引一样,都需要配置相应的内存地址。所有数据类型最多有3个Segment子表。
S305:基于构建的所述数据表和查询需求,基于所述数据对象构建所述数据表的索引。
在S305中,由于数据对象和索引按顺序依次存储,只设定第一种数据对象的首地址以及每种数据对象和索引占用内存大小。每个数据表最多可以创建10种索引。
以ATPCO与IATA的数据源中最常用的两种数据类型IntlFare和Record1为例进行说明。
针对数据类型IntlFare,因在民航客票计算系统或搜索系统的计算过程中通常根据始发地(Orig)、目的地(Dest)和航空公司(Carrier)或者只根据始发地和目的地查询IntlFare,因此为IntlFare建立两种索引,分别是Orig+Dest+Carrier以及Orig+Dest。当然,如果有其它查询需求,还可以建立其它索引。
针对数据类型Record1,根据查询需求,可以用航空公司(Carrier)、运价类型(Fare Class)、规则编号(Rule No)作为Record1的索引。
S306:按照所述数据类型的预设存储顺序和所述数据类型对应的数据表所占用的内存大小,由所述数据库的内存起始地址开始配置各个所述数据类型对应的数据表和索引的内存起始地址。
在S306中,所述数据库的内存起始地址作为第一存储顺次的数据类型对应的数据表的内存起始地址,基于所述第一存储顺次的数据类型对应的数据表所占用的内存大小计算下一存储顺次的数据类型对应的数据表的内存起始地址,直至计算出最后一个数据类型对应的数据表的内存起始地址。
基于上述举例,上述数据类型IntlFare与Record1的内存地址配置如表2所示。
表2
IntlFare与Record1的数据对象、子表数据对象及各种索引的各自大小总和不能超出表二的配置。
如果IntlFare是ATPCO DB顺序存储的第一种类型,它的起始地址就是0x200000000000L;Record1如果紧随IntlFare存储,它的首地址通过计算得出是0x206000000000L。
需要说明的是,在配置的过程中,也根据各个数据类型的操作标识属性为各个数据类型配置数据更新类型。如IntlFare与Record1的数据更新类型都是UpdateByDate。
在本申请实施例公开的运价数据存储方法中,通过预先为不同数据源配置MMap数据库,在后续处理中将物理内存中创建的数据对象映射的逻辑内存地址写入到MMap数据库,通过映射文件实现数据对象的序列化,在后续通过内存直接获取数据,利用内存读写取代I/O读写,从而大大提高了数据访问的效率。
基于上述本发明实施例公开的一种运价数据存储方法,本申请实施例还对应公开了一种运价数据存储装置,该运价数据存储装置包括:
读取模块,用于读取运价数据文件。
元数据管理器,用于为不同数据源建立对应的MMap内存映射数据库,预先配置所述MMap数据库的内存地址、并在预先配置的所述数据库的内存范围内,为每一数据类型预先配置对应的数据表和索引的内存地址;以及为每一数据类型配置数据更新类型;配置所述MMap内存映射数据库的数据版本。
该元数据管理器可以为上述图1中公开的元数据管理器10。
内存分配组件,用于确定所述运价数据文件的数据源,并根据所述元数据管理器为所述数据源预先配置的MMap内存映射数据库的内存地址,以及每一数据类型预先配置的数据表和索引的内存地址,映射所述数据对象至对应的内存地址。
该内存分配组件可以为上述图1中公开的内存分配组件11。
数据操作组件,用于基于所述内存分配组件执行的映射操作确定的内存地址,将所述数据对象和所述数据对象中的运价数据存储至对应的内存地址。
该数据操作组件可以为上述图1中公开的数据操作组件12。
在一实施例中,在运价数据完成存储之后,基于MMap内存映射数据库的操作,由该数据操作组件执行,具体为:
在所述MMap内存映射数据库中,根据不同的查询接口查询所述数据对象以及所述数据对象中的运价数据,所述查询接口至少包括:
基于完整数据表查询所有未软删除的数据对象指针;
基于完整数据表查询包含软删除在内的所有数据对象指针;
根据索引查询所有未软删除的数据对象指针;
根据索引查询包含软删除在内的所有数据对象指针。
在一实施例中,在运价数据完成存储之后,基于MMap内存映射数据库的操作,由该数据操作组件执行,具体为:
每隔预设时间物理删除所述MMap内存映射数据库中执行软删除的数据对象和/或运价数据;或者,
在设定时间区间内物理删除所述MMap内存映射数据库中执行软删除的数据对象和/或运价数据。
数据存储器,用于承载所述MMap内存映射数据库。
该数据存储器可以为上述图1中公开的数据存储器13。
本申请实施例提供一种运价数据存储装置,通过为不同数据源预先配置MMap数据库,将物理内存中创建的数据对象映射的逻辑内存地址写入到MMap数据库,通过映射文件实现数据对象的序列化,在后续通过内存直接获取数据,利用内存读写取代I/O读写,从而大大提高了数据访问的效率。
描述于本公开实施例中所涉及到的单元或组件可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,单元的名称在某种情况下并不构成对该单元本身的限定。
本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑设备(CPLD)等等。
本申请提供了一种电子设备,包括存储器和处理器;
其中,所述存储器用于存储计算机程序;
所述处理器用于执行所述计算机程序,具体用于实现本申请所提供的任意一种运价数据存储方法。
本申请再提供一种计算机存储介质,用于存储计算机程序,所述计算机程序被执行时,具体用于实现本申请任意一项所提供的运价数据存储方法。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在非暂态计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置从网络上被下载和安装,或者从存储装置被安装,或者从ROM被安装。在该计算机程序被处理装置执行时,执行本公开实施例的方法中限定的上述功能。
尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本主题,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。
虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本公开的范围的限制。在单独的实施例的上下文中描述的某些特征还可以组合地实现在单个实施例中。相反地,在单个实施例的上下文中描述的各种特征也可以单独地或以任何合适的子组合的方式实现在多个实施例中。
以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的公开范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述公开构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
Claims (10)
1.一种运价数据存储方法,其特征在于,包括:
读取运价数据文件,确定所述运价数据文件的数据源;
解析所述运价数据文件,得到所述数据文件中所包含的数据类型、每一所述数据类型包括的数据对象,以及所述数据对象中的运价数据;
按照所述数据源预先配置的MMap内存映射数据库的内存地址,以及每一数据类型预先配置的数据表和索引的内存地址,映射所述数据对象至对应的内存地址;
将所述数据对象和所述数据对象中的运价数据存储至对应的内存地址,并配置所述MMap内存映射数据库的数据版本。
2.根据权利要求1所述的方法,其特征在于,为所述数据源预先配置数据库的过程包括:
确定与民航客票相关的数据源;
为每一数据源建立一对应的MMap内存映射数据库,并为每一MMap内存映射数据库配置基础信息,所述基础信息包括数据库名、数据库的内存起始地址、数据库序号和数据库占用内存范围;
确定所述数据源中的数据类型和所述数据类型包括的数据对象;
为每一所述数据类型配置一数据表;
基于构建的所述数据表和查询需求,基于所述数据对象构建所述数据表的索引;
按照所述数据类型的预设存储顺序和所述数据类型对应的数据表所占用的内存大小,由所述数据库的内存起始地址开始配置各个所述数据类型对应的数据表和索引的内存起始地址;
其中,所述数据库的内存起始地址作为第一存储顺次的数据类型对应的数据表的内存起始地址,基于所述第一存储顺次的数据类型对应的数据表所占用的内存大小计算下一存储顺次的数据类型对应的数据表的内存起始地址,直至计算出最后一个数据类型对应的数据表的内存起始地址。
3.根据权利要求1所述的方法,其特征在于,所述解析所述运价数据文件,得到所述数据文件中所包含的数据类型、每一所述数据类型包括的数据对象,以及所述数据对象中的运价数据,包括:
逐行解析所述运价数据文件;
针对不存在变长片段的数据类型,确定所述数据类型包括的数据对象,以及所述数据对象下的运价数据;
针对存在变长片段的数据类型,将所述变长片段由所述数据类型中拆分出,得到一个新的数据类型,确定拆分后的数据类型和所述新的数据类型各自包括的数据对象,以及所述数据对象下的运价数据。
4.根据权利要求1所述的方法,其特征在于,所述按照所述数据源预先配置的MMap内存映射数据库的内存地址,以及每一数据类型预先配置的数据表和索引的内存地址,映射所述数据对象至对应的内存地址,包括:
基于所述数据源预先配置的MMap内存映射数据库的内存地址,定位映射起始内存地址和内存范围;
在所述起始内存地址和内存范围内,定位每一数据类型预先配置的数据表和索引的内存地址;
按照所述数据对象所属的数据类型的存储顺序,映射所述数据对象至对应的数据表的内存地址;
将由所述数据对象构件的索引,映射至定位的索引的内存地址。
5.根据权利要求1所述的方法,其特征在于,将所述数据对象和所述数据对象中的运价数据存储至对应的内存地址中,包括:
若为首次映射,将所述数据对象和所述数据对象中的运价数据依次存储至对应的内存地址中;
若非首次映射,根据所述数据对象所属的数据类型预先配置的数据更新类型,将所述数据对象和所述数据对象中的运价数据存储至对应的内存地址中;
其中,所述数据更新类型包括Replace更新类型、DeleteAddByID更新类型、Update更新类型和UpdateByDate更新类型中的一种;
相应的,所述配置所述MMap内存映射数据库的数据版本,包括:
若为首次映射,配置所述MMap内存映射数据库的数据版本为1;
若非首次映射,当所述MMap内存映射数据库中的数据表的数据结构发生变化,或者所述MMap内存映射数据库中新增或删除任意数据表时,将所述MMap内存映射数据库的当前数据版本递增1。
6.根据权利要求1至5中任一项所述的方法,其特征在于,还包括:
在所述MMap内存映射数据库中,根据不同的查询接口查询所述数据对象以及所述数据对象中的运价数据,所述查询接口至少包括:
基于完整数据表查询所有未软删除的数据对象指针;
基于完整数据表查询包含软删除在内的所有数据对象指针;
根据索引查询所有未软删除的数据对象指针;
根据索引查询包含软删除在内的所有数据对象指针。
7.根据权利要求1至5中任一项所述的方法,其特征在于,还包括:
每隔预设时间物理删除所述MMap内存映射数据库中执行软删除的数据对象和/或运价数据;或者,
在设定时间区间内物理删除所述MMap内存映射数据库中执行软删除的数据对象和/或运价数据。
8.一种运价数据存储装置,其特征在于,所述装置包括:
读取模块,用于读取运价数据文件;
元数据管理器,用于为不同数据源建立对应的MMap内存映射数据库,预先配置所述MMap数据库的内存地址、并在预先配置的所述数据库的内存范围内,为每一数据类型预先配置对应的数据表和索引的内存地址;以及为每一数据类型配置数据更新类型;配置所述MMap内存映射数据库的数据版本;
内存分配组件,用于确定所述运价数据文件的数据源,并根据所述元数据管理器为所述数据源预先配置的MMap内存映射数据库的内存地址,以及每一数据类型预先配置的数据表和索引的内存地址,映射所述数据对象至对应的内存地址;
数据操作组件,用于基于所述内存分配组件执行的映射操作确定的内存地址,将所述数据对象和所述数据对象中的运价数据存储至对应的内存地址;
数据存储器,用于承载所述MMap内存映射数据库。
9.一种电子设备,其特征在于,包括存储器和处理器;
其中,所述存储器用于存储计算机程序;
所述处理器用于执行所述计算机程序,具体用于实现如权利要求1至7任意一项所述的运价数据存储方法。
10.一种计算机存储介质,其特征在于,用于存储计算机程序,所述计算机程序被执行时,具体用于实现如权利要求1至7任意一项所述的运价数据存储方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211014897.4A CN115344603A (zh) | 2022-08-23 | 2022-08-23 | 运价数据存储方法、装置、电子设备和计算机存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211014897.4A CN115344603A (zh) | 2022-08-23 | 2022-08-23 | 运价数据存储方法、装置、电子设备和计算机存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115344603A true CN115344603A (zh) | 2022-11-15 |
Family
ID=83953138
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211014897.4A Pending CN115344603A (zh) | 2022-08-23 | 2022-08-23 | 运价数据存储方法、装置、电子设备和计算机存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115344603A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115827573A (zh) * | 2023-02-16 | 2023-03-21 | 麒麟软件有限公司 | 基于Linux的key-value形数据存储和使用方法 |
-
2022
- 2022-08-23 CN CN202211014897.4A patent/CN115344603A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115827573A (zh) * | 2023-02-16 | 2023-03-21 | 麒麟软件有限公司 | 基于Linux的key-value形数据存储和使用方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110799960B (zh) | 数据库租户迁移的系统和方法 | |
US9411840B2 (en) | Scalable data structures | |
US10180992B2 (en) | Atomic updating of graph database index structures | |
US8359316B2 (en) | Database table look-up | |
US8924373B2 (en) | Query plans with parameter markers in place of object identifiers | |
AU2017243870B2 (en) | "Methods and systems for database optimisation" | |
US20170255708A1 (en) | Index structures for graph databases | |
US10430415B2 (en) | Performing predicate-based data compression | |
CN103678556A (zh) | 列式数据库处理的方法和处理设备 | |
US10776345B2 (en) | Efficiently updating a secondary index associated with a log-structured merge-tree database | |
US11068536B2 (en) | Method and apparatus for managing a document index | |
US10445370B2 (en) | Compound indexes for graph databases | |
CN103186622A (zh) | 一种全文检索系统中索引信息的更新方法以及装置 | |
CN109815240A (zh) | 用于管理索引的方法、装置、设备和存储介质 | |
US9390111B2 (en) | Database insert with deferred materialization | |
CN115344603A (zh) | 运价数据存储方法、装置、电子设备和计算机存储介质 | |
US20180349443A1 (en) | Edge store compression in graph databases | |
US20180144060A1 (en) | Processing deleted edges in graph databases | |
CN116340290A (zh) | 数据迁移方法、装置、电子设备及存储介质 | |
CN111506628A (zh) | 数据处理方法及装置 | |
EP3436988B1 (en) | "methods and systems for database optimisation" | |
Ton That et al. | PLI^++: efficient clustering of cloud databases | |
CN110609926A (zh) | 数据标签存储管理方法及装置 | |
US20180285428A1 (en) | Reduced fixed length sort of variable length columns | |
US10860558B2 (en) | Techniques for managing index structures for database tables |
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 |