NoSQL方式数据存储的优化方法及系统的制作方法

文档序号:6526367阅读:152来源:国知局
NoSQL方式数据存储的优化方法及系统的制作方法
【专利摘要】本发明涉及数据库【技术领域】,公开了一种NoSQL方式数据存储的优化方法及系统,包括查询流程、老化流程和同步流程,其中,查询流程采用异步查询方式,将查询过程和返回结果的过程分离以提高查询效率;老化流程通过将长时间无人访问的数据节点进行回收,以有效利用内存;同步流程通过实时同步,在更新数据库时,进行本地缓存表的更新,以保证缓存中数据的有效性。
【专利说明】NoSQL方式数据存储的优化方法及系统
【技术领域】
[0001]本发明涉及一种数据存储的【技术领域】,特别是针对NoSQL方式数据存储的优化的【技术领域】。
【背景技术】
[0002]大型业务应用系统,一般都将系统相关的数据存储到数据库中,但数据库访问受到10、网络的因素,导致读写速度遇到瓶颈,使业务处理的速度变慢,直接影响到的业务的整个流程,特别是在快速流式数据处理过程中,该问题显得更加突出。
[0003]为了提高高速数据的查询速度,现有解决方案有:
[0004]1、使用更高性能的服务器,提高网络带宽吞吐量;
[0005]2、使用分布式数据库或NoSQL数据库;
[0006]3、提供内存缓存机制。
[0007]但是上述现有的解决方案存在以下缺陷:
[0008]采用更高性能的服务器和提供网络带宽量,需要很高的成本,而且仍然会受限于网络的问题,只是在一定程度上速度会有所提高,但还不能满足大批量流式处理的需求;
[0009]采用分布式数据库增加了同步的复杂度,而且并不能解决网络带宽的问题;采用NoSQL数据库能够在一定程度上解决大数据量且高并发的读写的需求,但该方案同样增加了同步的复杂度;
[0010]采用内存缓存机制可以有效的解决数据的传输问题,但是当数据量过大时,缓存量会受到限制,直接影响业务处理流程。
[0011]因此,如何提高大量高速数据的传输速度,同时又不受网络及存储量的限制是目前亟待解决的问题。

【发明内容】

[0012]有鉴于此,本发明提供一种NoSQL方式数据存储的优化方法及系统,以解决上述问题。
[0013]为达上述目的,本发明提供一种NoSQL方式数据存储的优化方法,该方法包括:查询流程、老化流程和同步流程;其中,
[0014]查询流程采用异步查询方式,将查询过程和返回结果的过程分离以提高查询效率;
[0015]老化流程通过将长时间无人访问的数据节点进行回收,以有效利用内存;
[0016]同步流程通过实时同步,在更新数据库时,进行本地缓存表的更新,以保证缓存中数据的有效性。
[0017]优选地,所述查询流程具体为:每次通过KEY值进行查询,首先通过KEY值在本地缓存表中进行查询,如果查询到结果,则更新本地缓存表中该KEY值的访问时间戳,然后直接返回结果;如果查询不到结果,则向远端NoSQL数据库发起查询请求,查询采用异步查询模式,即不等待查询结果,而直接返回,等数据库查到结果后,自动更新本地缓存表,等下次再查询此表项时,就能够正常查到。
[0018]优选地,所述老化流程具体为:通过一个守护线程循环遍历所有结点的上次访问时间,当时间超过所设置的老化时间长度后,将该结点删除。
[0019]优选地,所述同步流程具体为:本次对数据有写操作时,在写入本地缓存表的同时,写NoSQL数据库并发送同步内容到其它机器缓存表,来完成多机器缓存表与NoSQL数据库的数据同步。
[0020]此外,本发明还提供一种NoSQL方式数据存储的优化系统,该系统包括=NoSQL数据库,本地缓存表,远端缓存表,查询模块,老化模块,同步模块。其中本地缓存表与NoSQL数据库、远端缓存表、查询模块、老化模块以及同步模块均实现互连;其中,
[0021]查询模块采用异步查询方式,将查询过程和返回结果的过程分离以提高查询效率;
[0022]老化模块通过将长时间无人访问的数据节点进行回收,以有效利用内存;
[0023]同步模块通过实时同步,在更新数据库时,进行本地缓存表的更新,以保证缓存中数据的有效性。
[0024]优选地,所述查询模块每次通过KEY值进行查询,首先通过KEY值在本地缓存表中进行查询,如果查询到结果,则更新本地缓存表中该KEY值的访问时间戳,然后直接返回结果;如果查询不到结果,则向远端NoSQL数据库发起查询请求,查询采用异步查询模式,即不等待查询结果,而直接返回,等数据库查到结果后,自动更新本地缓存表,等下次再查询此表项时,就能够正常查到。
[0025]优选地,所述老化模块通过一个守护线程循环遍历所有结点的上次访问时间,当时间超过所设置的老化时间长度后,将该结点删除。
[0026]优选地,所述同步模块中,当本次对数据有写操作时,在写入本地缓存表的同时,写NoSQL数据库并发送同步内容到其它机器缓存表,来完成多机器缓存表与NoSQL数据库的数据同步。
[0027]通过采用本发明提供的方法和系统,使得数据访问效率提高,每秒可处理百万级的数据量,同时采用异步数据库操作模式,提高了系统的处理速度通过时间戳老化结点功能的本地缓存机制,对数据节点进行回收,使得在有限的内存情况下,得到很好的查询效果;通过提供同步机制,使得当有多台设备进行读写操作时,保证数据的一致性。同时,由于直接采用NoSQL数据库,为基本的查询效率也提供了保证。
【专利附图】

【附图说明】
[0028]图1为本发明实施例的实现NoSQL方式数据存储的优化方法流程图;
[0029]图2为本发明实施例的实现NoSQL方式数据存储的优化系统结构图。
【具体实施方式】
[0030]采用NoSQL数据库可以有效的提高数据的查询速度,当查询需求超过万级以上时,NoSQL数据库是一个不错的选择,但是这样仍然不能满足更高数量级的查询需求,所以本发明通过加入本地缓存机制,每次查询后,将远端的查询结果缓存到本地内存中,这样每秒就可以处理上百万到上千万的数据流。
[0031]有些情况下我们并不需要同步知道查询结果,此时可以采用异步查询方式,即将查询过程和返回结果的过程分离,一些工作线程负责发送请求,另外一些工作线程负责接收结果,这样可以使主流程快速得到响应,提高工作效率。
[0032]在上述工作基础上,虽然提高了有效性,但牺牲了内存,一般内存最高只有几十G,如果缓存的结点过多,可能一定时间后,新的结点将无法进行缓存工作。因此,这里加入了老化机制,采用的是最远节点淘汰算法,将长时间无人访问的数据节点进行回收,这样可以在有限的内存情况下,得到很好的查询效果。
[0033]同时还应注意到,数据是在时时变化的,为了使缓存中的数据与数据库中的数据保持一致,我们进行实时同步,在更新数据库时,进行本地缓存表的更新,以保证缓存中数据的有效性。
[0034]参考图1,下面详细描述该方法的基本流程。
[0035]查询流程:每次通过KEY值进行查询,首先通过KEY值在本地表中进行查询,如果查询到结果,则更新本地表中该KEY值的访问时间戳,然后直接返回结果;如果查询不到结果,则向远端NoSQL数据库发起查询请求,查询采用异步查询模式,即不等待查询结果,而直接返回,等数据库查到结果后,自动更新本地表,等下次再查询此表项时,就能够正常查到。
[0036]老化流程:通过一个守护线程循环遍历所有结点的上次访问时间,当时间超过所设置的老化时间长度后,将该结点删除。
[0037]同步流程:本次对数据有写操作时,在写入本地的同时,同时写NoSQL数据库并发送同步内容到其它机器缓存表,来完成多机器缓存表与NoSQL数据库的数据同步。
[0038]参考图2,其中示出了本发明实施例的实现NoSQL方式数据存储的优化系统结构图,下面将详细描述。
[0039]系统包括NoSQL数据库,本地缓存表,远端缓存表,查询模块,老化模块,同步模块。其中本地缓存表与NoSQL数据库、远端缓存表、查询模块、老化模块以及同步模块均实现互连。下面详细描述查询模块、老化模块以及同步模块与缓存表以及数据库之间的交互过程。
[0040]查询模块每次通过KEY值进行查询,首先通过KEY值在本地表中进行查询,如果查询到结果,则更新本地表中该KEY值的访问时间戳,然后直接返回结果;如果查询不到结果,则向远端NoSQL数据库发起查询请求,查询采用异步查询模式,即不等待查询结果,而直接返回,等数据库查到结果后,自动更新本地表,等下次再查询此表项时,就能够正常查到。
[0041 ] 老化模块通过一个守护线程循环遍历所有结点的上次访问时间,当时间超过所设置的老化时间长度后,将该结点删除掉。
[0042]当本次对数据有写操作时,在写入本地的同时,通过同步模块同时写NoSQL数据库并发送同步内容到其它机器缓存表,来完成多机器缓存表与NoSQL数据库的数据同步。
[0043]下面详细阐述使用本发明的方法及系统实现HTTP日志与用户快速关联的过程。
[0044]在线网中,大多使用拨号上网,IP与用户帐户不能——对应,所以在对HTTP报文进行日志分析时,通过其中的报文中的用户IP来反查用户的唯一标识信息,而HTTP数量是每秒百万级的数量,一般数据库都无法满足需求,使用本发明的方法可以很好的解决这个问题。具体过程如下:
[0045]IP-用户标识过程:建立IP_>USER_INF0缓存表,通过HTTP报文第3层中的用户源IP,查询IP->USER_INF0缓存表,如果缓存表中有,直接返回用户信息;如果表中没有,则向远端TT数据库发起查询请求,并返回,不等待查询结果,当数据库查询结果返回后,将结果添加到本地的缓存表中,当下次再来此IP的HTTP报文时,查询本地表就能正常查询到用户账户信息。
[0046]因为现网用户是数以千万级的,如果每个用户都缓存到本地表中,将对内存造成很大浪费,因此,使用老化机制来删除一些节点,当发现一个用户长时间没有查询请求时,将对存储在本地缓存中的该用户结点进行删除。
[0047]每当用户的上线或下线报文到来时,更新本地表和NoSQL数据库的该用户信息,并同步到其它机器的本地表中,完成数据的一致性整合。
[0048]虽然本发明以最佳实施例的方式揭示如上,然而并非用其限定本发明,本领域技术人员在不脱离本发明的精神和范围内,可做任意的更改和变动。本发明的保护范围仅由所附权利要求书限定的范围为准。
【权利要求】
1.一种NoSQL方式数据存储的优化方法,其特征在于,该方法包括:查询流程、老化流程和同步流程;其中, 查询流程采用异步查询方式,将查询过程和返回结果的过程分离以提高查询效率; 老化流程通过将长时间无人访问的数据节点进行回收,以有效利用内存; 同步流程通过实时同步,在更新数据库时,进行本地缓存表的更新,以保证缓存中数据的有效性。
2.如权利要求1所述的方法,其特征在于: 所述查询流程具体为:每次通过KEY值进行查询,首先通过KEY值在本地缓存表中进行查询,如果查询到结果,则更新本地缓存表中该KEY值的访问时间戳,然后直接返回结果;如果查询不到结果,则向远端NoSQL数据库发起查询请求,查询采用异步查询模式,即不等待查询结果,而直接返回,等数据库查到结果后,自动更新本地缓存表,等下次再查询此表项时,就能够正常查到。
3.如权利要求1或2所述的方法,其特征在于: 所述老化流程具体为:通过一个守护线程循环遍历所有结点的上次访问时间,当时间超过所设置的老化时间长度后,将该结点删除。
4.如权利要求1或2所述的方法,其特征在于: 所述同步流程具体为:本次对数据有写操作时,在写入本地缓存表的同时,写NoSQL数据库并发送同步内容到其它机器缓存表,来完成多机器缓存表与NoSQL数据库的数据同止/J/ O
5.一种NoSQL方式数据存储的优化系统,其特征在于,该系统包括=NoSQL数据库,本地缓存表,远端缓存表,查询模块,老化模块,同步模块。其中本地缓存表与NoSQL数据库、远端缓存表、查询模块、老化模块以及同步模块均实现互连;其中, 查询模块采用异步查询方式,将查询过程和返回结果的过程分离以提高查询效率; 老化模块通过将长时间无人访问的数据节点进行回收,以有效利用内存; 同步模块通过实时同步,在更新数据库时,进行本地缓存表的更新,以保证缓存中数据的有效性。
6.如权利要求5所述的系统,其特征在于: 所述查询模块每次通过KEY值进行查询,首先通过KEY值在本地缓存表中进行查询,如果查询到结果,则更新本地缓存表中该KEY值的访问时间戳,然后直接返回结果;如果查询不到结果,则向远端NoSQL数据库发起查询请求,查询采用异步查询模式,即不等待查询结果,而直接返回,等数据库查到结果后,自动更新本地缓存表,等下次再查询此表项时,就能够正常查到。
7.如权利要求5或6所述的系统,其特征在于: 所述老化模块通过一个守护线程循环遍历所有结点的上次访问时间,当时间超过所设置的老化时间长度后,将该结点删除。
8.如权利要求5或6所述的系统,其特征在于: 所述同步模块中,当本次对数据有写操作时,在写入本地缓存表的同时,写NoSQL数据库并发送同步内容到其它机器缓存表,来完成多机器缓存表与NoSQL数据库的数据同步。
【文档编号】G06F17/30GK103761255SQ201310741340
【公开日】2014年4月30日 申请日期:2013年12月27日 优先权日:2013年12月27日
【发明者】崔晶晶, 林佳婕, 刘立娜, 张帅 申请人:北京集奥聚合网络技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1