一种数据存储方法、系统及查询方法与流程

文档序号:13220996阅读:145来源:国知局
技术领域本发明涉及网络通信领域,特别涉及一种数据存储方法、系统及查询方法。

背景技术:
随着运营商各类业务发展以及互联网渠道和业务的拓展,运营商的CRM(CustomerRelationshipManagement,客户关系管理)系统正在由面向数以千计的操作员的系统转变化为面向数以千万计的最终用户的系统。这对CRM系统提出了越来越高的体验和性能的要求,尤其承载核心用户资料数据的CRM营业系统,压力越来越大,传统的性能优化方法,如主机扩容、数据库扩容等,跟不上业务需求压力增长速度,且扩容成本很高,投资巨大。现有技术面临如下问题:数据复制采用异步复制技术,且读写分离,而电信行业的CRM系统的很多业务要求数据的强一致性,在业务高峰时,如果数据复制不及时,就容易出现数据不一致的问题,造成大量投诉现象。这样只能分流一些单纯的统计或查询业务到读库,尽管也有一些效果,但是不彻底,核心库的压力仍然很大。同时,如果数据复制采用同步复制技术,则由于一个业务需要两个数据库同时处理成功才能提交,造成业务效率降低。

技术实现要素:
本发明实施例提供一种数据存储系统、方法及查询方法,用以解决现有技术中数据库查询量大且数据一致性要求高的问题。本发明实施例一提供数据存储系统,包括主物理数据库、第一内存数据库、从物理数据库、第二内存数据库;所述第一内存数据库、所述从物理数据库和所述第二内存数据库仅用于查询;所述主物理数据库用于存储第一类数据、第二类数据和第三类数据;所述从物理数据库用于异步复制所述主物理数据库存储的数据;所述第一内存数据库用于通过所述主物理数据库来存储所述主物理数据库中的第一类数据;所述第二内存数据库通过所述从物理数据库来存储所述主物理数据库中的第二类数据;其中,对所述第一类数据读写的一致性要求高于对所述第二类数据读写的一致性要求,对所述第二类数据的访问并发量高于对所述第三类数据的访问并发量。较佳的,所述第一内存数据库用于同步写入所述主物理数据库写入的第一类数据;所述第二内存数据库用于异步写入所述从物理数据库写入的第二类数据。较佳的,所述第一内存数据库为多个,包括主第一内存数据库和从第一内存数据库,所述主第一内存数据库用于同步写入所述主物理数据库写入的第一类数据,与写入的第一类数据相关的从第一内存数据库用于同步写入。较佳的,所述第二内存数据库为多个,与写入的第二类数据相关的第二内存数据库用于异步写入。本发明实施例二提供的数据存储方法,应用于上述实施例一提供的数据存储系统,包括:接收数据写入请求;将所述数据写入主物理数据库,并触发从物理数据库异步写入;若所述数据属于第一类数据,则将所述数据同步写入第一内存数据库;若所述数据属于第二类数据,则将所述数据通过所述从物理数据库异步写入第二内存数据库。较佳的,若所述数据属于第一类数据,则将所述数据同步写入第一内存数据库,还包括:将所述数据同步写入主第一内存数据库;与所述数据相关的从第一内存数据库通过所述主第一内存数据库进行数据写入。较佳的,若所述数据属于第二类数据,则将所述数据通过所述从物理数据库异步写入第二内存数据库,还包括:所述第二内存数据库为多个,与所述数据相关的第二内存数据库通过所述从物理数据库进行数据写入。较佳的,若与所述数据相关的从第一内存数据库或与所述数据相关的第二内存数据写入失败,则将其标记为不可用状态。本发明实施例三提供的数据查询方法,应用上述实施例一提供的数据存储系统,包括:接收数据查询请求;根据所述数据查询请求,判断查询数据的类型;若所述数据为第一类数据,则查询第一内存数据库;若所述数据为第二类数据,则查询第二内存数据库;若所述数据为第三类数据,则查询从物理数据库。较佳的,若所述第一内存数据库中没有所述数据,则查询主物理数据库;将查询到的所述数据写入所述第一内存数据库;若所述第一内存数据库包括主第一内存数据库和从第一内存数据库,则将查询到的所述数据写入所述主第一内存数据库,并触发相应的从第一内存数据库写入所述数据。上述实施例一至实施例三提供的数据存储系统、方法及查询方法,包括主物理数据库、第一内存数据库、从物理数据库、第二内存数据库;所述第一内存数据库、所述从物理数据库和所述第二内存数据库仅用于查询;所述主物理数据库用于存储第一类数据、第二类数据和第三类数据;所述从物理数据库用于异步复制所述主物理数据库存储的数据;所述第一内存数据库用于通过所述主物理数据库来存储所述主物理数据库中的第一类数据;所述第二内存数据库通过所述从物理数据库来存储所述主物理数据库中的第二类数据;其中,对所述第一类数据读写的一致性要求高于对所述第二类数据读写的一致性要求,对所述第二类数据的访问并发量高于对所述第三类数据的访问并发量,通过对主物理数据库中存储的数据按照一致性要求、并发量的要求进行分类,并将一致性要求高的数据存储于第一内存数据库中,将并发量高的数据存储于第二内存数据库,将并发量不高但一次访问量大的数据通过从物理数据库来存储;按照查询数据的属性从相应的存储空间读取从而能够保证高访问量且满足数据一致性的要求。附图说明为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1为本发明实施例一提供的数据存储系统的结构示意图;图2为本发明实施例二提供的数据存储方法流程图;图3为本发明实施例三提供的数据查询方法的流程图。具体实施方式为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。实施例一图1,为本发明实施例一提供的数据存储系统的结构示意图。如图1所示,该数据存储系统可包括:主物理数据库11、第一内存数据库12、从物理数据库13、第二内存数据库14。第一内存数据库12、从物理数据库13和第二内存数据库14仅用于查询。其中,主物理数据库11用于存储第一类数据、第二类数据和第三类数据。从物理数据库13用于异步复制主物理数据库11存储的数据。第一内存数据库12用于通过主物理数据库11来存储主物理数据库11中的第一类数据;第二内存数据库14通过从物理数据库13来存储主物理数据库11中的第二类数据;其中,对第一类数据读写的一致性要求高于对第二类数据读写的一致性要求,对第二类数据的访问并发量高于对第三类数据的访问并发量。第一类数据可以为强一致性的数据,如运营商CRM(CustomerRelationshipManagement,客户关系管理)系统中涉及到业务办理中的缴费、产品变更、用户资料变更等数据为强一致性的数据;第二类数据可为弱一致性的数据,第三类数据可为最弱一致性的数据。为了保障第一内存数据库中的第一类数据的实时性,第一内存数据库12用于同步写入主物理数据库11写入的第一类数据。而第二内存数据库14用于异步写入从物理数据库13写入的第二类数据。为了分担第一内存数据库12的存储压力,第一内存数据库12可以为多个,即可包括主第一内存数据和至少一个从第一内存数据库。其中,所述主第一内存数据库用于同步写入主物理数据库11写入的第一类数据,在所述主第一内存数据库用于同步写入主物理数据库11写入的第一类数据之后,触发所述从第一内存数据库通过所述主第一内存数据库同步写入主物理数据库11写入的第一类数据,由于从第一内存数据库通过主内从第一数据库写入物理数据库11写入的第一类数据,均是内存中的数据进行同步操作,因此在分担第一内存数据库压力的同时,还能保障数据的实时性。为了分担第二内存数据库14的存储压力第二内存数据库14可以为多个。其中,多个第二内存数据库可以通过从物理数据库13异步写入主物理数据库11写入的第二类数据,因此,多个第二内存数据库在分担第二内存数据库14的存储压力的同时,还可保障对第二数据实时的读取。第二内存数据库14通过从物理数据库13异步写入主物理数据库11写入的第二类数据,可以采用类似互联网企业数据同步方式,也可以采用基于数据库日志抽取变更的方式,将主物理数据库中变更或者新写入的内容,异步更新到第二内存数据库。其中,第二类数据可以为普通业务查询、以及所有的静态数据查询、统计、提取等涉及到的数据。另外,第二内存数据库通过从物理数据库异步写入主物理数据库写入的第二类数据,还降低了主物理数据库的压力。上述从物理数据库13异步复制主物理数据库11存储的数据,包括但不限于以下几种方式:方式一:采用触发器。首先,将主物理数据库的变更采用触发器触发到临时表中,然后从临时表异步更新到从物理数据库中。方式二:从主物理数据库的日志中提取更新以及新写入的内容,然后将所提取的日志复制到从物理数据库。需要注意的是,该方式是基于对主物理数据库中的单个表进行复制。方式三:采用oracle数据库的activedataguard技术,该方式是基于数据库日志实现数据库的全量复制。可以看出,方式二和方式三均是通过数据库日志复制的方式,但是方式二是基于主物理数据库中的一个一个表的自动复制,在多个表关联性很强的情况下,表的复制顺序就很重要,容易出现数据不一致,而且维护配置很复杂。而方式三是由oracle数据库自动提供数据一致性的技术,而且基于全库的自动复制,易于维护。在实际应用中,可以根据不同的需求,自行选择异步复制的方式,例如,当主物理数据库中更新或新写入的内容较少时,可以采用上述方式一或者方式二将主物理数据库中的内容异步复制到从物理数据库中;当主助理数据库中更新或新写入的内容较多时,可以采用上述方式三将主物理数据库中的内容异步复制到从物理数据库中。由于一般电信行业CRM系统的数据库中的表非常多,表与表之间的连接关系和数据模型复杂,难以做到全量表的复制,仅能支持部分关键表,而在实现多表关联的场景下,难以支持,需要做大量的程序改造实现单表访问,因此采用oracle数据库的activedataguard技术,可实现复杂统计查询的场景使用,如报表类查询,包括营业收入日报,商品销售日报,营业收入报表查询,计件核酬查询,业务稽核类业务如KPI指标以及业务监控数据提取、经营分析系统数据提取等。为了不影响数据的实时性,在数据写入阶段,可关闭从物理数据库13的只读访问限制。上述实施例一提供的数据存储系统,包括主物理数据库、第一内存数据库、从物理数据库、第二内存数据库;所述第一内存数据库、所述从物理数据库和所述第二内存数据库仅用于查询;所述主物理数据库用于存储第一类数据、第二类数据和第三类数据;所述从物理数据库用于异步复制所述主物理数据库存储的数据;所述第一内存数据库用于通过所述主物理数据库来存储所述主物理数据库中的第一类数据;所述第二内存数据库通过所述从物理数据库来存储所述主物理数据库中的第二类数据;其中,对所述第一类数据读写的一致性要求高于对所述第二类数据读写的一致性要求,对所述第二类数据的访问并发量高于对所述第三类数据的访问并发量,通过对主物理数据库中存储的数据按照一致性要求、并发量的要求进行分类,并将一致性要求高的数据存储于第一内存数据库中,将并发量高的数据存储于第二内存数据库,将并发量不高但一次访问量大的数据通过从物理数据库来存储;按照查询数据的属性从相应的存储空间读取从而能够保证高访问量且满足数据一致性的要求。实施例二基于相同的技术构思,本发明实施例二还提供一种数据存储方法,该方法可应用于上述实施例一提供的数据存储系统。图2,为本发明实施例二提供的数据存储方法流程图。如图所示,该数据存储方法可包括:S201、接收数据写入请求。S202、将接收的数据写入主物理数据库,并触发从物理数据库异步写入。S203、判断接收的数据是否属于第一类数据。若接收的数据属于第一类数据,则转至步骤S204;否则,转至步骤S205。S204、将接收的数据同步写入第一内存数据库。S205、判断接收的数据是否属于第二类数据。若接收的数据属于第二类数据,则转至步骤S206,否则结束。S206、将接收的数据通过从物理数据库异步写入第二内存数据库。为了分担第一内存数据库的存储压力,第一内存数据库可以为多个,若第一内存数据库为多个,即包括主第一内存数据库和至少一个从第一内存数据库时,在步骤S204中将接收的数据同步写入第一内存数据库即主第一内存数据库之后,还可将接收的数据通过主第一内存数据库同步写入至少一个从第一内存数据库。在所述主第一内存数据库同步写入主物理数据库写入的第一类数据之后,触发所述从第一内存数据库通过所述主第一内存数据库同步写入主物理数据库写入的第一类数据,由于从第一内存数据库通过主内从第一数据库写入物理数据库写入的第一类数据,均是内存中的数据进行同步操作,因此在分担第一内存数据库压力的同时,还能保障数据的实时性。为了保证数据写入的效率,若在将接收的数据通过主第一内存数据库同步写入至少一个从第一内存数据库时发生写入失败的情况,则可将相应的写入失败的从第一内存数据库的状态标记为不可用状态。具体的,若第二内存数据库为多个,在步骤S206中,将接收的数据通过从物理数据库异步写入多个第二内存数据库。为了保障数据写入的效率,若在将接收的数据通过从物理数据库异步写入多个第二内存数据库时发生写入失败的情况,则可将相应的写入失败的第二内存数据库的状态标记为不可用状态。上述实施例二提供的数据存储方法,应用于上述实施例一提供的所述的数据存储系统,包括:接收数据写入请求;将所述数据写入主物理数据库,并触发从物理数据库异步写入;若所述数据属于第一类数据,则将所述数据同步写入第一内存数据库;若所述数据属于第二类数据,则将所述数据通过所述从物理数据库异步写入第二内存数据库,通过对主物理数据库中存储的数据按照一致性要求、并发量的要求进行分类,并将一致性要求高的数据存储于第一内存数据库中,将并发量高的数据存储于第二内存数据库,将并发量不高但一次访问量大的数据通过从物理数据库来存储;按照查询数据的属性从相应的存储空间读取从而能够保证高访问量且满足数据一致性的要求。实施例三基于上述实施例一提供的数据存储系统的基础上,本发明实施例三还提供一种数据查询方法。图3,为本发明实施例三提供的数据查询方法的流程图。如图3所示,该方法可包括:S301、接收数据查询请求。S302、根据所述数据查询请求,判断查询数据的类型。若所述查询数据为第一类数据,则转至步骤S303;若所述查询数据为第二类数据,则转至步骤S304;若所述查询数据为第三类数据,则转至步骤S305。S303、查询第一内存数据库。S304、查询第二内存数据库。S305、查询从物理数据库。在接收到数据查询请求以后,可通过代理层对接收到的数据查询请求中的表名和数据类型进行业务封装。其中数据类型可为第一类数据、第二类数据、第三类数据。若接收到数据查询请求以后,通过封装的表名,确定所查询的数据类型为第一类数据,则可直接从第一内存数据库中读取数据;若接收到数据查询请求以后,通过封装的表名,确定所查询的数据类型为第二类数据,则可直接从第二内存数据库中读取数据,若接收到数据查询请求以后,通过封装的表名,确定所查询的数据类型为第三类数据,则可直接查询从物理数据库。为了提高数据读取的速度,代理层在对查询请求中的表名、数据类型进行业务封装时,还可将查询条件也进行业务封装。具体的,在上述步骤S303中查询第一内存数据库时,若从所查询的第一内存数据库没有查询到所述数据,则继续查询主物理数据库,并可将主物理数据库中查询到的数据同步写入所述第一内存数据库。若第一内存数据库包括主第一内存数据库和至少一个从第一内存数据库时,则可将主物理数据库中查询到的数据同步写入所述第一主内存数据库,并触发相应的从第一内存数据库写入所述从主物理数据库中查询到的数据。为了分担第一内存数据库的存储压力,第一内存数据库可以为多个,即包括主第一内存数据库和至少一个从第一内存数据库。若第一内存数据库为多个,可通过在主第一内存数据库和从第一内存数据库前设置分发器,通过分发器将接收的查询数据按照一定的规则分发到不同的内存数据库进行处理。需要注意的是,上述实施例一至实施例三提供的数据存储系统、方法及查询方法的应用不仅可应用于电信行业场景,还可应用于其它行业,如互联网、企业、银行等。上述实施例一至实施例三提供的数据存储系统、方法及查询方法,包括主物理数据库、第一内存数据库、从物理数据库、第二内存数据库;所述第一内存数据库、所述从物理数据库和所述第二内存数据库仅用于查询;所述主物理数据库用于存储第一类数据、第二类数据和第三类数据;所述从物理数据库用于异步复制所述主物理数据库存储的数据;所述第一内存数据库用于通过所述主物理数据库来存储所述主物理数据库中的第一类数据;所述第二内存数据库通过所述从物理数据库来存储所述主物理数据库中的第二类数据;其中,对所述第一类数据读写的一致性要求高于对所述第二类数据读写的一致性要求,对所述第二类数据的访问并发量高于对所述第三类数据的访问并发量,通过对主物理数据库中存储的数据按照一致性要求、并发量的要求进行分类,并将一致性要求高的数据存储于第一内存数据库中,将并发量高的数据存储于第二内存数据库,将并发量不高但一次访问量大的数据通过从物理数据库来存储;按照查询数据的属性从相应的存储空间读取从而能够保证高访问量且满足数据一致性的要求。本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1