CN105589881B - 一种数据处理方法和装置 - Google Patents
一种数据处理方法和装置 Download PDFInfo
- Publication number
- CN105589881B CN105589881B CN201410573710.3A CN201410573710A CN105589881B CN 105589881 B CN105589881 B CN 105589881B CN 201410573710 A CN201410573710 A CN 201410573710A CN 105589881 B CN105589881 B CN 105589881B
- Authority
- CN
- China
- Prior art keywords
- office data
- shared memory
- static
- data
- static office
- 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
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种数据处理方法和装置,其中,数据处理方法包括:从物理数据库中获取业务需要的静态局数据加载至共享内存中,再将加载至共享内存中的静态局数据导出至临时文件,通过临时文件将静态局数据导入文件数据库中进行第一备份;当确定物理数据库中的业务需要的静态局数据发生更新时,将共享内存中的静态局数据复制入文件数据库中进行第二备份,并获取更新后的静态局数据将其加载至共享内存中;将加载至共享内存中更新后的静态局数据导出至临时文件,通过临时文件将更新后的静态局数据导入文件数据库中更新第一备份所备份的静态局数据。通过本发明,不仅能够降低物理库的负担,还能够缩短业务进程的响应处理时间。
Description
技术领域
本发明涉及通信技术领域,特别是涉及一种数据处理方法和装置。
背景技术
电信业务***中存有大量的静态局数据,如地市信息、用户手机号码归属地信息,这些静态局数据为电信业务***的计费业务提供数据支持。
目前,静态局数据均存储在物理库例如Oracle数据库中。而在计费业务中同一时间可能会有大量需要查询此类静态局数据信息的业务进程,每响应一次业务进程就需要对数据库进行访问,显然响应这些业务进程需要频繁的访问数据库。
可见,现有的这种将静态局数据存储在物理库中,通过查询物理库获取业务请求所需的数据的方案,对物理库会造成大量的I/O操作,物理库的操作负担重,且业务进程的响应处理耗时长。
发明内容
本发明提供了一种数据处理方法和装置,以解决现有的数据处理的方案中存在的物理库的负担重,且业务进程的响应处理耗时长的问题。
为了解决上述问题,本发明公开了一种数据处理方法,包括:从关系型数据库和/或文件数据库中获取业务需要的静态局数据;将获取的所述静态局数据加载至共享内存中,再将加载至所述共享内存中的所述静态局数据导出至临时文件,通过所述临时文件将所述静态局数据导入文件数据库中进行第一备份;当确定关系型数据库和/或文件数据库中的所述业务需要的静态局数据发生更新时,将所述共享内存中的所述静态局数据复制入文件数据库中进行第二备份,并获取更新后的静态局数据,将更新后的所述静态局数据加载至所述共享内存中,以在所述共享内存中同时保存更新前的所述静态局数据和更新后的所述静态局数据;将加载至所述共享内存中所述更新后的静态局数据导出至所述临时文件,通过所述临时文件将所述更新后的静态局数据导入所述文件数据库中更新所述第一备份所备份的静态局数据。
优选地,所述获取更新后的静态局数据步骤,包括:当从所述关系型数据库中获取更新后的静态局数据时,通过用于读取所述关系型数据库数据的头文件查找所述关系型数据库中更新后的静态局数据,将查找到的更新后的静态局数据导入所述临时文件;当从所述文件数据库中获取更新后的静态局数据时,通过所述文件数据库内置数据库工具对更新后的静态局数据进行查找,获取更新后的静态局数据。
优选地,所述通过用于读取所述关系型数据库数据的头文件查找所述关系型数据库中更新后的静态局数据步骤,包括:通过所述头文件中的OTL方法定位需要查找的关系型数据库,以从所述关系型数据库中查找更新后的静态局数据。
优选地,所述将获取的所述静态局数据加载至共享内存中步骤,包括:判断是否存在已创建的共享内存;若存在,则直接挂接所述已创建的共享内存,按照设定规则加载所述静态局数据;若不存在,则通过Shmaget函数创建共享内存,调用入口函数创建所述新建的共享内存中所有的静态类对象,将所述静态局数据加载至创建的静态类对象中。
优选地,按照设定规则加载所述静态局数据步骤,包括:判断已挂接的所述共享内存中的剩余内存空间是否足够加载所述静态局数据;若否,则向操作***申请新的共享内存空间,调用入口函数创建所述新的共享内存空间的所有静态类对象,在所述共享内存中、从已加载的数据的末尾地址后的地址开始加载所述静态局数据,使用所述共享内存的原共享内存空间中的空闲的静态类对象、和新创建的静态类对象,加载所述静态局数据;若是,则直接挂接所述共享内存,在所述共享内存中、从已加载的数据的末尾地址后的地址开始加载所述静态局数据,以将所述静态局数据加载至所述共享内存中的空闲静态类对象中。
优选地,在所述将更新后的所述静态局数据加载至所述共享内存中步骤之后,还包括:判断是否存在业务进程连接;若存在,则在设定时间后,强制将所述业务进程的数据版本ID转换成新的数据版本ID,以通过所述更新后的静态局数据所在的共享内存区为所述业务进程连接提供数据,其中,所述数据版本ID与共享内存区存在对应关系。
为了解决上述问题,本发明还公开了一种数据处理装置,包括:第一获取模块,用于从关系型数据库和/或文件数据库中获取业务需要的静态局数据;第一加载模块,用于将获取的所述静态局数据加载至共享内存中,再将加载至所述共享内存中的所述静态局数据导出至临时文件,通过所述临时文件将所述静态局数据导入文件数据库中进行第一备份;更新模块,用于当确定关系型数据库和/或文件数据库中的所述业务需要的静态局数据发生更新时,将所述共享内存中的所述静态局数据复制入文件数据库中进行第二备份,并获取更新后的静态局数据,将更新后的所述静态局数据加载至所述共享内存中,以在所述共享内存中同时保存更新前的所述静态局数据和更新后的所述静态局数据;备份模块,用于将加载至所述共享内存中所述更新后的静态局数据导出至所述临时文件,通过所述临时文件将所述更新后的静态局数据导入所述文件数据库中更新所述第一备份所备份的静态局数据。
优选地,当所述更新模块从所述关系型数据库中获取更新后的静态局数据时,通过用于读取所述关系型数据库数据的头文件查找所述关系型数据库中更新后的静态局数据,将查找到的更新后的静态局数据导入所述临时文件;当所述更新模块从所述文件数据库中获取更新后的静态局数据时,通过所述文件数据库内置数据库工具对更新后的静态局数据进行查找,获取更新后的静态局数据。
优选地,所述更新模块在通过用于读取所述关系型数据库数据的头文件查找所述关系型数据库中更新后的静态局数据时,通过所述头文件中的OTL方法定位需要查找的关系型数据库,以从所述关系型数据库中查找更新后的静态局数据。
优选地,所述第一加载模块包括:判断模块,用于判断是否存在已创建的共享内存;第一执行模块,用于在所述判断模块的判断结果为存在时,直接挂接所述已创建的共享内存,按照设定规则加载所述静态局数据;第二执行模块,用于在所述判断模块的判断结果为不存在时,通过Shmaget函数创建共享内存,调用入口函数创建所述新建的共享内存中所有的静态类对象,将所述静态局数据加载至创建的静态类对象中;数据导出模块,用于将加载至所述共享内存中的所述静态局数据导出至临时文件,通过所述临时文件将所述静态局数据导入文件数据库中进行第一备份。
与现有技术相比,本发明具有以下优点:
本发明提供的数据处理方案,将业务需要的静态局数据从关系型数据库和/或文件数据库中加载至共享内存,并在文件数据库中备份业务需要的静态局数据。当业务需要的静态局数据发生更新时,将更新后的静态局数据加载至共享内存后,将更新后的静态局数据在文件数据库中进行备份。可见,通过本发明提供的数据处理方案,一方面,将关系型数据库和/或文件数据库即物理库中的业务需要的静态局数据加载至共享内存中,业务进程可以从共享内存中获取所需要的静态局数据,无需访问物理库,只有更新共享内存中的静态局数据时才需要访问物理库,因此,能够减少对物理库的输入输出即I/O操作次数,降低物理库的负担。另一方面,通过本发明提供的数据处理方案,由于业务进程直接从共享内存中获取数据,而访问共享内存相比访问物理库所需要的时间要短,因此,能够缩短业务进程的响应处理时间。又一方面,通过本发明提供的数据处理方案,在文件数据库中对加载至共享内存中的静态局数据以及更新后的静态局数据进行备份,以备当共享内存出现问题时,提供共享内存所需要的数据。
附图说明
图1是根据本发明实施例一的一种数据处理方法的步骤流程图;
图2是根据本发明实施例二的一种数据处理方法的步骤流程图;
图3是根据本发明实施例三的一种数据处理装置的结构框图;
图4是根据本发明实施例四的一种数据处理***的架构图;
图5是采用图4所述的数据处理***进行静态局数据更新的步骤流程图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
实施例一
参照图1,示出了根据本发明实施例一的一种数据处理方法的步骤流程图。
本实施例的数据处理方法的步骤包括:
步骤S102:从关系型数据库和/或文件数据库中获取业务需要的静态局数据。
本实施例中的数据处理方法可适用于多种业务***,例如:电信业务***,而静态局数据是提供业务支持的数据。以电信业务为例,静态局数据则是满足电信业务的数据,例如:固定网络国内长途及本地电话业务所需的数据、移动网络电话和数据业务所需的数据以及卫星通信及卫星移动通信业务所需的数据等等。
在获取静态局数据时,需要根据业务需求进行提取,例如:业务***仅提供固定网络国内长途及本地电话业务,那么在获取业务需要的静态局数据时,仅需提取固定网络国内长途及本地电话业务所需的静态局数据即可。
需要说明的是,在实际实现时,可以仅从关系型数据库获取业务需要的静态局数据,也可以仅从文件数据库获取业务需要的静态局数据,还可以从关系型数据库获取部分静态局数据,从文件数据库获取业务需要的、未从关系型数据库中提取的静态局数据。具体的提取方案可根据所需要的静态局数据的存储位置进行设定。本实施例中的关系型数据库与文件数据库均为物理库。
步骤S104:将获取的静态局数据加载至共享内存中。
步骤S106:将加载至共享内存中的静态局数据导出至临时文件,通过临时文件将静态局数据导入文件数据库中进行第一备份。
步骤S108:当确定关系型数据库和/或文件数据库中的业务需要的静态局数据发生更新时,将共享内存中的静态局数据复制入文件数据库中进行第二备份。
业务需要的静态局数据的第一备份与第二备份可以在同一个文件数据库的不同文件夹下,可以分别存储在两个文件数据库中。例如:第一备份存储在第一文件数据库中,第二备份存储在第二文件数据库中,第一文件数据库和第二文件数据库是不同的数据库。
其中,静态局数据的第一备份当共享内存出现问题时,可以为共享内存提供静态局数据,而当更新后的静态局数据加载至共享内存中后,更新后的静态局数据则会将第一备份覆盖,此时当共享内存出现问题时,则为共享内存提供更新后的静态局数据。而更新前的静态局数据则由加载更新后的局数据前备份的静态局数据的第二备份提供,可见,第一备份是为共享内存提供更新后的静态局数据,第二备份则是为共享内存提供更新前的静态局数据。
步骤S110:获取更新后的静态局数据,将更新后的静态局数据加载至共享内存中,以在共享内存中同时保存更新前的静态局数据和更新后的静态局数据。
更新后的静态局数据可以仅从关系型数据库中获取也可以仅从文件数据库中获取,还可以从两个数据库中分别获取一部分构成更新后的静态局数据。共享内存中同时保存更新前的静态局数据和更新后的静态局数据,其中,更新前的静态局数据为静态局数据更新期间访问的业务进程提供数据支持,而更新后的静态局数据为静态局数据更新完成后访问的业务进行提供数据支持,保证了同一进程访问数据的一致性。
步骤S112:将加载至共享内存中更新后的静态局数据导出至临时文件,通过临时文件将更新后的静态局数据导入文件数据库中更新第一备份所备份的静态局数据。
通过本实施例提供的数据处理方法,将业务需要的静态局数据从物理库中加载至共享内存,并在文件数据库中备份业务需要的静态局数据。当业务需要的静态局数据发生更新时,将更新后的静态局数据加载至共享内存后,将更新后的静态局数据在文件数据库中进行备份。可见,通过本发明提供的数据处理方法,一方面,将物理库中的业务需要的静态局数据加载至共享内存中,业务进程可以从共享内存中获取所需要的静态局数据,无需访问物理库,只有更新共享内存中的静态局数据时才需要访问物理库,因此,能够减少对物理库的I/O次数从而降低物理库的负担。另一方面,通过本发明提供的数据处理方法,由于业务进程直接从共享内存中获取数据,而访问共享内存相比访问物理库所需要的时间要短,因此,能够缩短业务进程的响应处理时间。又一方面,通过本发明提供的数据处理方法,在文件数据库中对加载至共享内存中的静态局数据以及更新后的静态局数据进行备份,以备当共享内存出现问题时,提供共享内存所需要的数据。
实施例二
参照图2,示出了本发明实施例二的一种数据处理方法的步骤流程图。
本实施例的数据处理方法的具体步骤包括:
步骤S202:局数据管理器从关系型数据库和/或文件数据库中获取业务需要的静态局数据。
局数据管理器根据业务所需要的静态局数据的存储位置来选择从哪个数据库中获取静态局数据。
当局数据管理器从关系型数据库中获取局数据时,可以直接从关系型数据库中获取业务需要的静态局数据,还可以通过用于读取关系型数据库数据的头文件查找关系型数据中存储的业务需要的静态局数据,将查找到的静态局数据导入临时文件,再从临时文件中获取业务需要的静态局数据。例如:局数据管理器可以采用Otlv4.h头文件,使用OTL方式读取关系型数据库中的数据。当然,局数据管理器还可以通过其他的头文件来读取关系型数据库中的数据,本领域技术人员可以根据实际需求设置头文件,本申请对此不作具体限制。
当局数据管理器从文件数据库中获取业务需要的静态局数据时,通过文件数据库内置数据库工具对业务需要的静态局数据进行查找,以获取业务需要的静态局数据。
步骤S204:局数据管理器判断是否存在已创建的共享内存;若存在,则执行步骤S206;若不存在,则直接执行步骤S208。
局数据管理器在获取到业务需要的静态局数据后,将获取到静态局数据加载至共享内存中,在加载之前需要判断是否存在已创建的共享内存。
步骤S206:当局数据管理器判断存在已创建的共享内存时,则直接挂接已创建的共享内存,按照设定规则加载静态局数据,然后执行步骤S210。
本步骤中,如果局数据管理器不是首次向共享内存中加载静态局数据,就说明存在已经创建的共享内存,此时,可以通过Shmat方法挂接已经创建的共享内存。当然,还可以通过其他方法挂接已经创建的共享内存,本申请对此不作具体限制。
在实际实现时,一种优选的按照设定规则加载静态局数据的方法如下:
局数据管理器判断已挂接的共享内存中的剩余内存空间是否足够加载静态局数据。
当判断出剩余内存空间不足以加载静态局数据时,则向操作***申请新的共享内存空间,调用入口函数创建新的共享内存空间的所有静态类对象(入口函数可以由***中的动态库提供,如,基于体系结构的软件设计方法的动态库即ABSD动态库提供的入口函数),在共享内存中、从已加载的数据的末尾地址后的地址开始加载静态局数据,使用共享内存的原共享内存空间中的空闲静态类对象、和新创建的静态类对象,加载静态局数据。。例如:在存储静态局数据前,共享内存空间中存在5个静态类对象,而空闲的静态类对象仅有两个,然而这两个空闲的静态类对象无法加载全部的静态局数据。此时,需要向操作***申请新的共享内存空间,假设为新的共享内存空间同样创建了5个静态类对象,那么,在加载静态局数据时,则向共享内存空间中原有的两个静态类对象中以及新创建的静态类对象中加载静态数据。
当判断出剩余内存空间足够加载静态局数据时,则直接挂接共享内存,在共享内存中、从已加载的数据的末尾地址后的地址开始加载静态局数据,以将静态局数据加载至共享内存中的空闲静态类对象中。
需要说明的是,局数据管理器在向共享内存中加载静态局数据时,并不局限于在已加载的数据的末尾地址后的地址开始加载静态局数据,本领域技术人员可以根据实际需求选择开始加载的地址,例如:可以选择从一个新建的静态类对象开始加载静态局数据,本申请对此不作具体限制。
步骤S208:当局数据管理器判断不存在已创建的共享内存时,则通过Shmaget函数创建共享内存,调用入口函数创建新建的共享内存中所有的静态类对象,将静态局数据加载至创建的静态类对象中,然后执行步骤S210。
其中,入口函数可以是ABSD动态库提供的入口函数。
步骤S210:局数据管理器将加载至共享内存中的静态局数据导出至临时文件,通过临时文件将静态局数据导入文件数据库中进行第一备份。
步骤S212:当确定关系型数据库和/或文件数据库中的业务需要的静态局数据发生更新时,将共享内存中的静态局数据复制入文件数据库中进行第二备份。
本步骤中,在向共享内存中加载更新的静态局数据之前,要将共享内存中的静态局数据进行备份。当共享内存出现问题时,可以直接从备份文件中获取静态局数据。
步骤S214:局数据管理器从关系型数据库和/或文件数据库中获取更新后的静态局数据。
在实际上实现时,优选地,局数据管理器当从关系型数据库中获取更新后的静态局数据时,通过用于读取关系型数据库数据的头文件查找关系型数据库中更新后的静态局数据,将查找到的更新后的静态局数据导入临时文件。局数据管理器可以通过Otlv4.h头文件,使用OTL方法定位需要查找的关系型数据库,以从关系型数据库中查找更新后的静态局数据。当然,还可以通过其他的头文件来定位需要查找的关系型数据库,从关系型数据库中查找更新后的静态局数据。
需要说明的是,对于OTL方法本领域技术人员具有实现该方法的能力,因此在此不再赘述具体的实现方法。
在实际上实现时,优选地,局数据管理器当从文件数据库中获取更新后的静态局数据时,通过文件数据库内置数据库工具对更新后的静态局数据进行查找,获取更新后的静态局数据。
需要说明的是,局数据管理器还可以不通过临时文件,直接从关系型数据库中获取更新后的静态局数据。
步骤S216:局数据管理器判断共享内存中的剩余内存空间是否足够加载更新后的静态局数据;若是,则执行步骤S218;若否,则执行步骤S220。
步骤S218:当局数据管理器共享内存中的剩余内存空间不足以加载更新后的静态局数据时,向操作***申请新的共享内存空间,来加载更新后的静态局数据,执行步骤S222。
具体的,局数据管理器共向操作***申请新的共享内存空间后,调用入口函数创建新的共享内存空间的所有静态类对象,其中,入口函数可以由***中的动态库提供,在共享内存中、从已加载的静态局数据的末尾地址后的地址开始加载更新后的静态局数据,使用共享内存的原共享内存空间中的空闲的静态类对象、和新创建的静态类对象加载更新后的静态局数据。
需要说明的是,局数据管理器还可以直接将更新后的静态局数据加载至新创建的静态类对象中,而不加载至共享内存的原有的静态类对象中。
步骤S220:当局数据管理器共享内存中的剩余内存空间足够加载更新后的静态局数据时,则直接挂接共享内存,以加载更新后的静态局数据,执行步骤S222。
具体的,在共享内存中加载更新后的静态局数据时,在共享内存中、从已加载的静态局数据的末尾地址后的地址开始加载更新后的静态局数据,以将更新后的静态局数据加载共享内存中的空闲静态类对象中。
需要说明的是,局数据管理器在向共享内存中加载更新后的静态局数据时,并不局限于在已加载的静态局数据的末尾地址后的地址开始加载更新后的静态局数据,本领域技术人员可以根据实际需求选择开始加载的地址,例如:可以选择从一个新建的静态类对象加载更新后的静态局数据,本申请对此不作具体限制。
步骤S222:局数据管理器将加载至共享内存中更新后的静态局数据导出至临时文件,通过临时文件将更新后的静态局数据导入文件数据库中更新第一备份所备份的静态局数据。
需要说明的是,本实施例中将更新后的静态局数据导入文件数据库中更新第一备份所备份的静态局数据,而在实际实现时,还可以将新后的静态局数据导入另一个文件数据库中,而不对第一备份所备份的静态局数据进行更新。异或者是,即使将更新后的静态局数据导入同一文件数据库中,但是并不更新第一备份所备份的静态局数据。
步骤S224:局数据管理器判断是否存在业务进程连接;若存在,则执行步骤S226;若不存在,则执行设定程序。
其中,业务进程连接为用户访问业务***时,业务***为用户的访问建立的进程连接。其中,业务进程连接包含:数据版本ID。共享内存中存储静态局数据的内存区也有版本之分,数据版本ID与共享内存区存在对应关系,存储更新前的静态局数据的共享内存区对应旧版本数据ID,存储更新后的静态局数据的共享内存区对应新版本数据ID。
其中,设定程序为等待业务进程连接,当有业务进程连接时,直接采用更新后的静态局数据的共享内存区为业务进程连接提供数据支持。
步骤S226:当局数据管理器判断存在业务进程连接时,在设定时间后,强制将业务进程数据版本ID转换成新的数据版本ID,以通过更新后的静态局数据所在的共享内存区为业务进程连接提供数据。在实际实现中,设定的时间可以由本领域技术人员根据实际需求进行设定,例如:可以设定成更新后的静态局数据更新至共享内存中10秒后强制进行切换,还可以设定成15秒、20秒等等,本申请对此不作具体限制。
在共享内存中,存储有更新前以及更新后的静态局数据的共享内存区对应不同的数据版本,同样的业务进程也有数据版本ID,那么也就是说,业务进程所获取的数据需要根据数据版本ID去对应的共享内存区中获取,以保证同一业务进程请求获取的数据版本的一致性。
而在强制切换为业务进程提供数据的共享内存区时,将业务进程数据版本ID转换成新的数据版本ID,这样程序就可以将通过新的数据版本ID对应新的静态局数据对应的共享内存区,以通过更新后的静态局数据所在的共享内存区为业务进程连接提供数据,完成业务进程的强制切换。
在业务进程切换至更新后的静态局数据所在的共享内存区之后,共享内存中静态局数据所在的共享内存区被释放,以供下一次静态局数据更新使用。
通过本实施例提供的数据处理方法,一方面,将物理库中的业务需要的静态局数据加载至共享内存中,业务进程可以从共享内存中获取所需要的静态局数据,无需访问物理库,只有更新共享内存中的静态局数据时才需要访问物理库,因此,能够减少对物理库的I/O次数从而降低物理库的负担。另一方面,通过本发明提供的数据处理方法,由于业务进程直接从共享内存中获取数据,而访问共享内存相比访问物理库所需要的时间要短,因此,能够缩短业务进程的响应处理时间。又一方面,通过本发明提供的数据处理方法,在文件数据库中对加载至共享内存中的静态局数据以及更新后的静态局数据进行备份,以备当共享内存出现问题时,提供共享内存所需要的数据。再一方面,通过本实施例提供的数据处理方法,在进行共享内存区切换时,当存在业务进程时则等待一段时间后待业务进程无数据请求后再进行切换,保证了同一进程访问数据的一致性,实现了在不影响实时业务处理的同时支持业务需要的静态据数据的动态更新。
实施例三
参照图3,示出了本发明实施例三的一种数据处理装置的结构框图。
本实施例的数据处理装置包括:第一获取模块302,用于从关系型数据库和/或文件数据库中获取业务需要的静态局数据;第一加载模块304,用于将获取的静态局数据加载至共享内存中,再将加载至共享内存中的静态局数据导出至临时文件,通过临时文件将静态局数据导入文件数据库中进行第一备份;更新模块306,用于当确定关系型数据库和/或文件数据库中的业务需要的静态局数据发生更新时,将共享内存中的静态局数据复制入文件数据库中进行第二备份,并获取更新后的静态局数据,将更新后的静态局数据加载至共享内存中,以在共享内存中同时保存更新前的静态局数据和更新后的静态局数据;备份模块308,用于将加载至共享内存中更新后的静态局数据导出至临时文件,通过临时文件将更新后的静态局数据导入文件数据库中更新第一备份所备份的静态局数据。
优选地,当更新模块306从关系型数据库中获取更新后的静态局数据时,通过用于读取关系型数据库数据的头文件查找关系型数据库中更新后的静态局数据,将查找到的更新后的静态局数据导入临时文件;当更新模块306从文件数据库中获取更新后的静态局数据时,通过文件数据库内置数据库工具对更新后的静态局数据进行查找,获取更新后的静态局数据。
优选地,更新模块306在通过用于读取关系型数据库数据的头文件查找关系型数据库中更新后的静态局数据时,通过头文件中的OTL方法定位需要查找的关系型数据库,以从关系型数据库中查找更新后的静态局数据。
在本实施例提供的数据处理装置的基础上,还可以对该装置进行进一步的优化,得到更为优选的数据处理装置,具体优化方式如下:
优选地,第一加载模块304包括:判断模块3042,用于判断是否存在已创建的共享内存;第一执行模块3044,用于在判断模块的判断结果为存在时,直接挂接已创建的共享内存,按照设定规则加载静态局数据;第二执行模块3046,用于在判断模块的判断结果为不存在时,通过Shmaget函数创建共享内存,调用入口函数创建新建的共享内存中所有的静态类对象,将静态局数据加载至创建的静态类对象中;数据导出模块3048,用于将加载至共享内存中的静态局数据导出至临时文件,通过临时文件将静态局数据导入文件数据库中进行第一备份。
优选地,第一执行模块3044包括:内存空间判断模块30442,用于判断已挂接的共享内存中的剩余内存空间是否足够加载所述静态局数据;新建模块30444,用于在内存空间判断模块30442的判断结果为否时,向操作***申请新的共享内存空间,调用入口函数创建新的共享内存空间的所有静态类对象,在共享内存中、从已加载的数据的末尾地址后的地址开始加载静态局数据,使用共享内存的原共享内存空间中的空闲的静态类对象、和新创建的静态类对象,加载静态局数据;内存直接挂接模块30446,用于在内存空间判断模块30442的判断结果为是时,直接挂接共享内存,在共享内存中、从已加载的数据的末尾地址后的地址开始加载静态局数据,以将静态局数据加载至共享内存中的空闲静态类对象中。
优选地,本实施例中的数据处理装置还包括:进程连接判断模块310,用于在更新模块将更新后的静态局数据加载至共享内存中后,判断是否存在业务进程连接;第一进程切换模块312,用于在进程连接判断模块310的判断结果为存在时,在设定时间后,强制将业务进程的数据版本ID转换成新的数据版本ID,以通过更新后的静态局数据所在的共享内存区为业务进程连接提供数据;其中,数据版本ID与共享内存区存在对应关系。
本实施例的数据处理装置用于实现前述多个方法实施例中相应的设备跨版本升级方法,并且具有相应的方法实施的有益效果,在此不再赘述。
实施例四
在本实施例中介绍了一种包含实施例三中所述的数据处理装置的数据处理***,以及该数据处理***进行数据处理的具体流程。
如图4所示,本实施例中的数据处理***包括:Database数据库402即关系型数据库用于存储静态局数据、Sqlite磁盘文件404即文件数据库用于存储静态局数据、局数据管理器406即数据处理装置、共享内存408用于加载静态局数据、Sqlite备份磁盘文件410以及业务进程412。
图4中的数据处理***有两大基本功能:将业务需要的静态局数据加载至共享内存的功能以及对静态局数据进行动态更新的功能。
本实施例中,数据处理***将业务需要的静态局数据加载至共享内存中时,局数据管理器从Database简称DB数据库以及Sqlite磁盘文件中提取业务需要的静态局数据,将提取的静态局数据加载至共享内存中。同时,还将获取的静态局数据存储至Sqlite磁盘文件进行备份,即完成将业务需要的静态局数据加载至共享内存。当有业务进程需要获取数据时,直接从共享内存中获取数据即可。
上述内容描述的仅是将业务需要的静态局数据加载至共享内存的过程,而由于业务需要的静态局数据会发生更新,因此还需要对共享内存中的静态局数据进行更新。如图4所示,在进行数据更新时,局数据管理器需要从共享内存中提取已加载的静态局数据,然后将静态局数据备份至Sqlite备份磁盘文件,而具体的静态局数据的加载、以及动态更新流程参照图5进行描述。
在具体实现时,静态局数据的加载以及动态更新都是通过程序执行的,但是,无论是静态局数据的加载还是静态局数据的更新,都需要从DB数据库和Sqlite磁盘文件中获取静态局数据,当从Sqlite磁盘文件中导入静态局数据时,需要使用Sqlite内置数据库工具,具体查询方法如下:
CBSSqliteStmt stmtSelect;
if(stmtSelect.open(this->m_strSelectSqlite.c_str(),connSqlite)!=SQLITE_OK),其中,m_strSelectSqlite是标准SQL查询语句。
当从DB数据库中导入局数据时,需要引用Otlv4.h头文件,使用OTL的方式读取数据,具体方法如下:
otl_stream
otlSelect(OTL_READ_BUFFER_SIZE,m_strSelectSqlDB.c_str(),con)。
当通过上述方法获取到需要加载至共享内存中的业务需要的静态局数据时,则需将获取到的静态局数据加载至共享内存。而如果程序是首次运行,也就是说并不存在已创建好的共享内存,那么此时,需要使用Shmget方法做共享内存的创建,具体方法为:shmid=shmget(this->base_shm_key,rounded_bytes+shm_table_offset,this->file_perms|IPC_CREAT|IPC_EXCL)。
如果程序不是首次运行,也即共享内存已经存在,程序只需挂接之前局数据内存管理创建的共享内存,也即配置文件中配置的共享内存keyid,需要使用Shmat方法做共享内存的挂接,具体方法为:this->base_addr=shmat(shmid,reinterpret_cast<char*>(this->base_addr),0)。
程序在创建或挂接上共享内存后,在共享内存中加载的静态局数据的地址后添加获取的静态局数据,如果共享内存空间不够,程序会向操作***申请新的共享内存空间。局数据内存管理会调用ABSD动态库提供的入口函数reg_data_fun来创建共享内存中所有的静态类对象,以加载获取的静态局数据。其中,程序调用ABSD动态库提供入口函数的方法如下:
pStaticDataFunc=(STATIC_DATA_FUNC)dlsym(libinfo.lib_handle,
itr->second.lib_enterfunc.c_str());
其中,pStaticDataFunc是函数指针,该方法中通过使用Dlsym方法来定位到动态库的入口函数,其中,Dlsym方法为根据动态链接库操作句柄与符号返回符号对应的地址的方法。
需要说明的是,目前共享内存块数统一为最多30块,每块大小为32M,在实际实现时,申请共享内存空间实际是申请共享内存块。数据较少时以会实际需要的块数来申请,不会浪费***的共享内存。还需注意的是,程序申请的第一块共享内存块是控制块,不计入限定的30块共享内存块内。
在将静态局数据加载至共享内存中后,当静态局数据发生更新时,程序会依次调用以下方法:
CEventProc:load_Data2Shm(CMD_REQUEST_DATA&cmd_data)
即步骤S502:Dump备份原有共享内存中的静态局数据。
本步骤中,当有静态局数据要求加载至共享内存中时,则先做当前共享内存中的静态局数据备份以得到当前所有静态局数据在共享内存中的静态类。其中,Dump备份为在特定时刻,将整个储存装置或储存装置之某部分的内容记录在另一储存装置中,也就是说,在本步骤中备份共享内存中存储有静态局数据的所有静态类,以备份共享内存中所存储的静态局数据。
本实施例中,共享内存中所存储的局数据为旧静态局数据A与旧静态局数据B。那么,相应的在备份时则旧静态局数据A+B备份至磁盘文件,备份的磁盘文件可以为Sqlite备份磁盘文件,当然,在备份时还可以将旧静态局数据A+B备份至Sqlite磁盘文件,本申请中选择将旧静态局数据A+B备份至另一个专用于备份旧局数据的Sqlite磁盘文件中,即Sqlite备份磁盘文件。
需要说明的是,本实施例中由于是需要从DB数据库以及Sqlite磁盘文件中获取更新后的静态局数据,因此需要从DB数据库中读取的更新后的静态数据A,从Sqlite磁盘文件中读取更新后的静态数据B。
ret=down_shm_to_file(cont_addr_map,tmp_load_bak_pathfile)
即步骤S504:加载从DB数据库中读取的更新后的静态局数据A,先加载到临时磁盘文件即Temp磁盘文件中。
Aret=load_db_to_file(cmd_db2mem,tmp_work_pathfile)
即步骤S506:把临时文件读取的更新后的静态局数据A加载到共享内存。
ret=load_file_to_shm(cmd_file2mem,0,from_file_cont_addr_map)
即步骤S508:将源于Sqlite磁盘文件的更新后的静态局数据B加载至共享内存。
需要说明的是,步骤S506与步骤S508可以同时执行,还可以先执行完步骤S508之后再执行步骤S506。
ret=load_file_to_shm(cmd_file2mem,0,from_file_cont_addr_map)
即步骤S510:将共享内存的最新版的静态局数据即更新后的静态局数据A+B保存至临时磁盘文件。
ret=down_shm_to_file(from_file_cont_addr_map,tmp_work_pathfile)
至此,完成了静态局数据的更新操作。
步骤S512:将临时磁盘文件中的更新后的局数据A+B在Sqlite磁盘文件中进行备份。
ret=update_shm_stc_version()
rename_file(tmp_load_bak_pathfile,load_bak_pathfile)
最终,将备份的磁盘文件、磁盘Temp文件以及Sqlite磁盘文件转成正式文件。当共享内存出问题时,可以提供共享内存旧静态局数据A+B,以及更新后的静态局数据A+B,而不影响业务进程获取局数据。
本实施例中,程序在载入更新后的静态局数据A+B后,如果有业务进程连接,则在加载成功10秒后强制切换,然后释放旧静态局数据A+B所占用的共享内存空间,提供下次数据更新使用,但释放后的共享内存空间并不会交还给操作***。至此,更新后的静态局数据已经从DB数据库和Sqlite磁盘文件中加载至了共享内存,同时所有更新后的静态局数据保存至了Sqlite磁盘文件中。
采用本实施例设计的利用共享内存存储电信业务静态局数据的方法,极大的提升了业务处当更新数据时,会从当前共享内存的空闲处开始重新从关系型数据库管理***即RDBMS载入静态局数据,如果已申请的内存块不够用,会从操作***再申请新的共享内存块,但可申请的共享内存最多的块数有限制,如果达到了最大限制或者说操作***已经没有空闲内存可供申请,则会产生CORE。
通过本实施例提供的利用共享内存存储电信业务所需的静态局数据的方法,将业务需要的静态局数据加载至共享内存中,实现静态局数据的集中存放,为业务进程例如:业务分析、批价等进程提供静态局数据。业务进程可以直接从共享内存中获取数据,极大的提升了业务处理的速度的同时,减少了对物理数据库的I/O开销。同时,本实施例提供的数据处理***,支持自动定时加载更新局数据,在更新局数据时,将物理数据库中的静态局数据导入到Sqlite磁盘文件,整个过程为原子事务,同时还会对数据进行版本控制,对进程进行注册管理,保证同一进程访问数据的一致性。可见本实施例提供的数据处理***在不影响实时业务处理的同时支持静态局数据的动态更新。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上对本发明所提供的数据处理方法和装置进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (10)
1.一种数据处理方法,其特征在于,包括:
从关系型数据库和/或文件数据库中获取业务需要的静态局数据;
将获取的所述静态局数据加载至共享内存中,再将加载至所述共享内存中的所述静态局数据导出至临时文件,通过所述临时文件将所述静态局数据导入文件数据库中进行第一备份;
当确定关系型数据库和/或文件数据库中的所述业务需要的静态局数据发生更新时,将所述共享内存中的所述静态局数据复制入文件数据库中进行第二备份,并获取更新后的静态局数据,将更新后的所述静态局数据加载至所述共享内存中,以在所述共享内存中同时保存更新前的所述静态局数据和更新后的所述静态局数据;
将加载至所述共享内存中所述更新后的静态局数据导出至所述临时文件,通过所述临时文件将所述更新后的静态局数据导入所述文件数据库中更新所述第一备份所备份的静态局数据。
2.根据权利要求1所述的方法,其特征在于,所述获取更新后的静态局数据步骤,包括:
当从所述关系型数据库中获取更新后的静态局数据时,通过用于读取所述关系型数据库数据的头文件查找所述关系型数据库中更新后的静态局数据,将查找到的更新后的静态局数据导入所述临时文件;
当从所述文件数据库中获取更新后的静态局数据时,通过所述文件数据库内置数据库工具对更新后的静态局数据进行查找,获取更新后的静态局数据。
3.根据权利要求2所述的方法,其特征在于,所述通过用于读取所述关系型数据库数据的头文件查找所述关系型数据库中更新后的静态局数据步骤,包括:
通过所述头文件中的OTL方法定位需要查找的关系型数据库,以从所述关系型数据库中查找更新后的静态局数据。
4.根据权利要求1所述的方法,其特征在于,所述将获取的所述静态局数据加载至共享内存中步骤,包括:
判断是否存在已创建的共享内存;
若存在,则直接挂接所述已创建的共享内存,按照设定规则加载所述静态局数据;
若不存在,则通过Shmaget函数创建共享内存,调用入口函数创建所述新建的共享内存中所有的静态类对象,将所述静态局数据加载至创建的静态类对象中;其中,通过Shmaget函数创建共享内存包括:使用Shmget方法做共享内存的创建。
5.根据权利要求4所述的方法,其特征在于,按照设定规则加载所述静态局数据步骤,包括:
判断已挂接的所述共享内存中的剩余内存空间是否足够加载所述静态局数据;
若否,则向操作***申请新的共享内存空间,调用入口函数创建所述新的共享内存空间的所有静态类对象,在所述共享内存中、从已加载的数据的末尾地址后的地址开始加载所述静态局数据,使用所述共享内存的原共享内存空间中的空闲的静态类对象、和新创建的静态类对象,加载所述静态局数据;
若是,则直接挂接所述共享内存,在所述共享内存中、从已加载的数据的末尾地址后的地址开始加载所述静态局数据,以将所述静态局数据加载至所述共享内存中的空闲静态类对象中。
6.根据权利要求1所述的方法,其特征在于,在所述将更新后的所述静态局数据加载至所述共享内存中步骤之后,还包括:
判断是否存在业务进程连接;
若存在,则在设定时间后,强制将所述业务进程的数据版本ID转换成新的数据版本ID,以通过所述更新后的静态局数据所在的共享内存区为所述业务进程连接提供数据,其中,所述数据版本ID与共享内存区存在对应关系。
7.一种数据处理装置,其特征在于,包括:
第一获取模块,用于从关系型数据库和/或文件数据库中获取业务需要的静态局数据;
第一加载模块,用于将获取的所述静态局数据加载至共享内存中,再将加载至所述共享内存中的所述静态局数据导出至临时文件,通过所述临时文件将所述静态局数据导入文件数据库中进行第一备份;
更新模块,用于当确定关系型数据库和/或文件数据库中的所述业务需要的静态局数据发生更新时,将所述共享内存中的所述静态局数据复制入文件数据库中进行第二备份,并获取更新后的静态局数据,将更新后的所述静态局数据加载至所述共享内存中,以在所述共享内存中同时保存更新前的所述静态局数据和更新后的所述静态局数据;
备份模块,用于将加载至所述共享内存中所述更新后的静态局数据导出至所述临时文件,通过所述临时文件将所述更新后的静态局数据导入所述文件数据库中更新所述第一备份所备份的静态局数据。
8.根据权利要求7所述的装置,其特征在于:
当所述更新模块从所述关系型数据库中获取更新后的静态局数据时,通过用于读取所述关系型数据库数据的头文件查找所述关系型数据库中更新后的静态局数据,将查找到的更新后的静态局数据导入所述临时文件;
当所述更新模块从所述文件数据库中获取更新后的静态局数据时,通过所述文件数据库内置数据库工具对更新后的静态局数据进行查找,获取更新后的静态局数据。
9.根据权利要求8所述的装置,其特征在于,所述更新模块在通过用于读取所述关系型数据库数据的头文件查找所述关系型数据库中更新后的静态局数据时,通过所述头文件中的OTL方法定位需要查找的关系型数据库,以从所述关系型数据库中查找更新后的静态局数据。
10.根据权利要求7所述的装置,其特征在于,所述第一加载模块包括:
判断模块,用于判断是否存在已创建的共享内存;
第一执行模块,用于在所述判断模块的判断结果为存在时,直接挂接所述已创建的共享内存,按照设定规则加载所述静态局数据;
第二执行模块,用于在所述判断模块的判断结果为不存在时,通过Shmaget函数创建共享内存,调用入口函数创建所述新建的共享内存中所有的静态类对象,将所述静态局数据加载至创建的静态类对象中;其中,通过Shmaget函数创建共享内存包括:使用Shmget方法做共享内存的创建;
数据导出模块,用于将加载至所述共享内存中的所述静态局数据导出至临时文件,通过所述临时文件将所述静态局数据导入文件数据库中进行第一备份。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410573710.3A CN105589881B (zh) | 2014-10-23 | 2014-10-23 | 一种数据处理方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410573710.3A CN105589881B (zh) | 2014-10-23 | 2014-10-23 | 一种数据处理方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105589881A CN105589881A (zh) | 2016-05-18 |
CN105589881B true CN105589881B (zh) | 2020-01-24 |
Family
ID=55929467
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410573710.3A Active CN105589881B (zh) | 2014-10-23 | 2014-10-23 | 一种数据处理方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105589881B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107465944A (zh) * | 2017-08-31 | 2017-12-12 | 江苏省公用信息有限公司 | 一种iptv内容管理的灰度发布***及方法 |
CN108038171B (zh) * | 2017-12-07 | 2020-07-03 | 杭州电魂网络科技股份有限公司 | 数据写入方法、装置及数据服务器 |
CN108304461A (zh) * | 2017-12-26 | 2018-07-20 | 山东浪潮通软信息科技有限公司 | 一种数据共享的方法及装置 |
CN108958732A (zh) * | 2018-06-28 | 2018-12-07 | 上海恺英网络科技有限公司 | 一种基于php的数据加载方法及设备 |
CN109756704A (zh) * | 2018-11-30 | 2019-05-14 | 安徽清新互联信息科技有限公司 | 一种嵌入式音视频监控***的进程间通信方法及*** |
CN110795508B (zh) * | 2019-11-04 | 2023-04-07 | 中国建设银行股份有限公司 | 数据的复制方法、装置、设备和存储介质 |
CN111200692B (zh) * | 2019-12-24 | 2021-10-26 | 广州市高科通信技术股份有限公司 | 一种网络电话语音设备、处理方法、装置及存储介质 |
CN112256457A (zh) * | 2020-11-06 | 2021-01-22 | 开普云信息科技股份有限公司 | 一种基于共享内存的数据载入加速方法、装置、电子设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6941295B2 (en) * | 1999-08-12 | 2005-09-06 | International Business Machines Corporation | Data access system |
CN101126920A (zh) * | 2007-09-30 | 2008-02-20 | 浙江中控技术有限公司 | 实现固化程序在线升级的方法和装置 |
CN101754156A (zh) * | 2008-12-05 | 2010-06-23 | ***通信集团辽宁有限公司 | 局数据管理方法、装置及计费*** |
CN101853288A (zh) * | 2010-05-19 | 2010-10-06 | 马晓普 | 基于文档实时监控可配置的全文检索服务*** |
-
2014
- 2014-10-23 CN CN201410573710.3A patent/CN105589881B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6941295B2 (en) * | 1999-08-12 | 2005-09-06 | International Business Machines Corporation | Data access system |
CN101126920A (zh) * | 2007-09-30 | 2008-02-20 | 浙江中控技术有限公司 | 实现固化程序在线升级的方法和装置 |
CN101754156A (zh) * | 2008-12-05 | 2010-06-23 | ***通信集团辽宁有限公司 | 局数据管理方法、装置及计费*** |
CN101853288A (zh) * | 2010-05-19 | 2010-10-06 | 马晓普 | 基于文档实时监控可配置的全文检索服务*** |
Also Published As
Publication number | Publication date |
---|---|
CN105589881A (zh) | 2016-05-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105589881B (zh) | 一种数据处理方法和装置 | |
CN113297320B (zh) | 分布式数据库***及数据处理方法 | |
CN109492053B (zh) | 用于访问数据的方法和装置 | |
US20120158795A1 (en) | Entity triggers for materialized view maintenance | |
CN111367925A (zh) | 数据动态实时更新方法、装置及存储介质 | |
CN108205560B (zh) | 一种数据同步方法以及装置 | |
CN106325870B (zh) | 一种动态表单api接口的实现方法及装置 | |
CN101727475B (zh) | 一种获取数据库访问过程的方法、装置及*** | |
CN109857723B (zh) | 基于可扩容数据库集群的动态数据迁移方法及相关设备 | |
CN108667866A (zh) | 一种基于api智能适配的请求处理方法及装置 | |
CN114925084A (zh) | 分布式事务处理方法、***、设备及可读存储介质 | |
CN111046106A (zh) | 缓存数据同步方法、装置、设备及介质 | |
CN116501700B (zh) | 一种app格式化文件离线存储方法、装置、设备及存储介质 | |
CN113660359A (zh) | 域名解析记录的管理方法及装置、存储介质及电子设备 | |
CN105094787B (zh) | 企业互联网应用的处理方法及装置 | |
US7778660B2 (en) | Mobile communications terminal, information transmitting system and information receiving method | |
CN116628027A (zh) | 跨数据库查询方法、装置、设备、介质和计算机程序产品 | |
CN109325057B (zh) | 中间件管理方法、装置、计算机设备以及存储介质 | |
CN109408547B (zh) | 一种sam注册表的读取方法、读取***及相关装置 | |
CN112632266B (zh) | 数据写入方法、装置、计算机设备及可读存储介质 | |
WO2019153547A1 (zh) | 数据库操作方法、装置、设备及计算机可读存储介质 | |
CN117093597B (zh) | 数据处理方法及装置 | |
KR101573663B1 (ko) | 데이터 통합 방법 및 시스템 | |
CN107612961B (zh) | 一种***软件下载/升级的方法、服务器及终端 | |
CN114996285A (zh) | 一种记录数据变更的方法及装置、存储介质及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | 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 |