买专利,只认龙图腾
首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

【发明授权】一种入库方法及装置、计算机可读存储介质_中兴通讯股份有限公司_201710681326.9 

申请/专利权人:中兴通讯股份有限公司

申请日:2017-08-10

公开(公告)日:2024-04-16

公开(公告)号:CN110019181B

主分类号:G06F16/22

分类号:G06F16/22

优先权:

专利状态码:有效-授权

法律状态:2024.04.16#授权;2020.06.02#实质审查的生效;2019.07.16#公开

摘要:一种入库方法、装置和计算机可读存储介质,该入库方法包括:获取待入库对象;当所述待入库对象对应的表未创建索引时,将所述待入库对象写入到数据库中与所述待入库对象对应的表中;扫描所述数据库中的表,当满足索引创建条件后,为所述表创建索引。本申请将入库和索引创建分离,提高了入库速度。

主权项:1.一种入库方法,其特征在于,包括:获取待入库对象;当所述待入库对象对应的表未创建索引时,将所述待入库对象写入到数据库中与所述待入库对象对应的表中;扫描所述数据库中的表,当满足索引创建条件后,为所述表创建索引;其中,所述方法还包括:将所述待入库对象写入到数据库中与所述待入库对象对应的表中时,如果入库失败或者超时,将所述待入库对象作为待补录对象进行保存;获取待补录对象,判断其对应的表是否已创建索引,如果已创建索引,则将所述待补录对象采取排重方式补录到其对应的表中;如果未创建索引,则在其对应的表创建索引后采取排重方式补录到其对应的表中。

全文数据:一种入库方法及装置、计算机可读存储介质技术领域本发明涉及通信技术,尤指一种入库方法及装置、计算机可读存储介质。背景技术随着各种新业务的发展,用户量的增长,业务话单量也呈现飞速增长的趋势,在话单量较大的业务系统中,按天话单达到千万级、亿级的规模成为通常的现象。运营商对话单的入库性能、入库可靠性、查询性能要求越来越高。oracle数据库是一种可用性强,可扩展性强,数据安全性强、稳定型强的关系数据库管理系统,广泛地使用于各个业务系统中。在话务量巨大的业务系统中,普通的批量insert入库方法已经不能满足需求,不少业务系统采用了oracle的oci接口中的batchinsert方法来提高入库性能,但该方法在批量入库的过程中会重建索引,导致数据量越大入库时间越长,入库速度越来越慢,如果在重建索引的过程中发生异常如平台重启、数据库瞬时故障等表中索引还会失效,由于二次补录话单依赖于索引,索引失效会导致二次补录时执行时间超长导致程序异常的问题。发明内容本发明至少一实施例提供了一种入库方法和装置、计算机可读存储介质,提高入库速度。为了达到本发明目的,本发明至少一实施例提供了一种入库方法,包括:获取待入库对象;当所述待入库对象对应的表未创建索引时,将所述待入库对象写入到数据库中与所述待入库对象对应的表中;扫描所述数据库中的表,当满足索引创建条件后,为所述表创建索引。在一可选实施例中,所述获取待入库对象包括:获取未进行入库操作的对象,进行排序,将其中产生时间最久的一批对象作为所述待入库对象。在一可选实施例中,所述扫描所述数据库中的表包括:所述数据库中的表之间存在顺序关系,扫描已入库数据中,产生时间最短的对象对应的表之前的一个或多个表。在一可选实施例中,所述当满足索引创建条件后,为所述表创建索引包括:所述数据库中的表之间存在顺序关系,对任一未创建索引的表,如果该表在第一时间阈值内没有新的入库数据且该表之后的第一个表中有第二时间阈值之后的入库数据,为所述表创建索引。在一可选实施例中,所述方法还包括:当所述待入库对象对应的表已创建索引时,删除所述待入库对象对应的表的索引后,将所述待入库对象写入到其对应的表中。在一可选实施例中,所述方法还包括:将所述待入库对象写入到数据库中与所述待入库对象对应的表中时,如果入库失败或者超时,将所述待入库对象作为待补录对象进行保存;获取待补录对象,判断其对应的表是否已创建索引,如果已创建索引,则将所述待补录对象采取排重方式补录到其对应的表中;如果未创建索引,则在其对应的表创建索引后采取排重方式补录到其对应的表中。本发明一实施例提供一种入库装置,包括:获取模块、批量入库模块和索引扫描模块,其中:所述获取模块设置为,获取待入库对象;所述批量入库模块设置为,与所述索引扫描模块交互,判断所述待入库对象对应的表是否已创建索引,如果没有,将所述待入库对象写入到数据库中与所述待入库对象对应的表中;所述索引扫描模块设置为,扫描所述数据库中的表,当满足索引创建条件后,为所述表创建索引。在一可选实施例中,所述获取模块包括:获取单元和排序单元,其中:所述获取单元设置为,获取未进行入库操作的对象;所述排序单元设置为,将所述未进行入库操作的对象进行排序,将其中产生时间最久的一批对象作为所述待入库对象。在一可选实施例中,所述索引扫描模块扫描所述数据库中的表包括:所述数据库中的表之间存在顺序关系,扫描已入库数据中,产生时间最短的对象对应的表之前的一个或多个表。在一可选实施例中,所述当满足索引创建条件后,为所述表创建索引包括:所述数据库中的表之间存在顺序关系,对任一未创建索引的表,如果该表在第一时间阈值内没有新的入库数据且该表之后的第一个表中有第二时间阈值之后的入库数据,为所述表创建索引。在一可选实施例中,所述批量入库模块还设置为,当所述待入库对象对应的表已创建索引时,通知所述索引扫描模块删除所述待入库对象对应的表的索引,并在所述索引扫描模块删除所述待入库对象对应的表的索引后,将所述待入库对象写入到其对应的表中。在一可选实施例中,所述入库装置还包括二次补录模块,其中:所述批量入库模块还设置为,将所述待入库对象写入到数据库中与所述待入库对象对应的表中时,如果入库失败或者超时,将所述待入库对象作为待补录对象进行保存;所述二次补录模块设置为,获取待补录对象,判断其对应的表是否已创建索引,如果已创建索引,则将所述待补录对象采取排重方式补录到其对应的表中;如果未创建索引,则在其对应的表创建索引后采取排重方式补录到其对应的表中。本发明一实施例提供一种入库装置,包括存储器和处理器,所述存储器存储有程序,所述程序在被所述处理器读取执行时,执行以下操作:获取待入库对象;当所述待入库对象对应的表未创建索引时,将所述待入库对象写入到数据库中与所述待入库对象对应的表中;扫描所述数据库中的表,当满足索引创建条件后,为所述表创建索引。在一可选实施例中,所述获取待入库对象包括:获取未进行入库操作的对象,进行排序,将其中产生时间最久的一批对象作为所述待入库对象。在一可选实施例中,所述扫描所述数据库中的表包括:所述数据库中的表之间存在顺序关系,扫描已入库数据中,产生时间最短的对象对应的表之前的一个或多个表。在一可选实施例中,所述当满足索引创建条件后,为所述表创建索引包括:所述数据库中的表之间存在顺序关系,对任一未创建索引的表,如果该表在第一时间阈值内没有新的入库数据且该表之后的第一个表中有第二时间阈值之后的入库数据,为所述表创建索引。在一可选实施例中,所述程序在被所述处理器读取执行时,还执行以下操作:当所述待入库对象对应的表已创建索引时,删除所述待入库对象对应的表的索引后,将所述待入库对象写入到其对应的表中。在一可选实施例中,所述程序在被所述处理器读取执行时,还执行以下操作:将所述待入库对象写入到数据库中与所述待入库对象对应的表中时,如果入库失败或者超时,将所述待入库对象作为待补录对象进行保存;获取待补录对象,判断其对应的表是否已创建索引,如果已创建索引,则将所述待补录对象采取排重方式补录到其对应的表中;如果未创建索引,则在其对应的表创建索引后采取排重方式补录到其对应的表中。本发明一实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现以下步骤:获取待入库对象;当所述待入库对象对应的表未创建索引时,将所述待入库对象写入到数据库中与所述待入库对象对应的表中;扫描所述数据库中的表,当满足索引创建条件后,为所述表创建索引。与现有技术相比,本申请中,将批量入库与索引创建进行分离,在确保入库精确性的基础上,提高了入库速度。本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。附图说明附图用来提供对本发明技术方案的进一步理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本发明的技术方案,并不构成对本发明技术方案的限制。图1是本发明一实施例提供的入库方法流程图;图2是本发明一实施例提供的入库装置示意图;图3是本发明一实施例提供的话单排序流程图;图4是本发明一实施例提供的批量入库流程图;图5是本发明一实施例提供的索引扫描流程图;图6是本发明一实施例提供的二次补录流程图;图7是本发明一实施例提供的索引信息更新与维护流程图;图8是本发明一实施例提供的索引检测和维护时序图。具体实施方式为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。如果在入库时不建索引,就可以解决批量入库慢的问题。另外,在批量入库后建索引,就可以解决二次补录时精确性问题。如图1所示,本发明一实施例提供一种入库方法,包括:步骤101,获取待入库对象;步骤102,当所述待入库对象对应的表未创建索引时,将所述待入库对象写入到数据库中与所述待入库对象对应的表中;步骤103,扫描所述数据库中的表,当满足索引创建条件后,为所述表创建索引。其中,对象可以是各种需要写入数据库的信息。本实施例中,以话单作为需要入库的对象。但本申请不限于此。每个需要入库的对象与存在于数据库中的一个表对应,该对象写入数据库中与其对应的表,称为入库。在一可选实施例中,所述获取待入库对象包括:获取未进行入库操作的对象,进行排序,将其中产生时间最久的一批对象作为所述待入库对象。以话单为例,根据话单产生的时间依次入库,产生时间早的先入库,产生时间晚的后入库。当然,本申请不限于此,可以根据需要按其他顺序入库。在一可选实施例中,所述扫描所述数据库中的表包括:所述数据库中的表之间存在顺序关系,扫描已入库数据中,产生时间最短的对象对应的表之前的一个或多个表。以话单为例,当天的话单对应的表不进行扫描,扫描当天之前的若干天的话单。当然,也可以采取其他方式,比如,扫描所有已有入库数据但未建立索引的表,等等。在一可选实施例中,所述当满足索引创建条件后,为所述表创建索引包括:所述数据库中的表之间存在顺序关系,对任一未创建索引的表,如果该表在第一时间阈值内没有新的入库数据且该表之后的第一个表中有第二时间阈值之后的入库数据,为所述表创建索引。需要说明的是,上述索引创建条件仅为示例,可以根据需要设置为其他条件。在一可选实施例中,所述方法还包括:当所述待入库对象对应的表已创建索引时,删除所述待入库对象对应的表的索引后,将所述待入库对象写入到其对应的表中。在一可选实施例中,所述方法还包括:将所述待入库对象写入到数据库中与所述待入库对象对应的表中时,如果入库失败或者超时,将所述待入库对象作为待补录对象进行保存;获取待补录对象,判断其对应的表是否已创建索引,如果已创建索引,则将所述待补录对象采取排重方式补录到其对应的表中,如果未创建索引,则在其对应的表创建索引后采取排重方式补录到其对应的表中。如图2所述,本发明一实施例提供的入库系统包括业务处理机10、话单服务器20和数据库30。业务处理机10与话单服务器20之间可通过ftp协议交互,话单服务器20与数据库30可通过oracle的oci接口交互。需要说明的是,业务处理机10、话单服务器20、数据库30也可通过其他协议交互,本申请对此不作限定。话单服务器20包括一入库装置,该入库装置包括获取模块21、批量入库模块22和索引扫描模块23,其中:所述获取模块21设置为,获取待入库对象;所述批量入库模块22设置为,与所述索引扫描模块23交互,判断所述待入库对象对应的表是否已创建索引,如果没有,将所述待入库对象写入到数据库中与所述待入库对象对应的表中;还用于为入库对象分配入库序列号;所述索引扫描模块23设置为,扫描所述数据库中的表,当满足索引创建条件后,为所述表创建索引。在一可选实施例中,所述获取模块21包括:获取单元2101和排序单元2102,其中:所述获取单元设置为,获取未进行入库操作的对象;所述排序单元设置为,将所述未进行入库操作的对象进行排序,将其中产生时间最久的一批对象作为所述待入库对象。在一可选实施例中,所述批量入库模块22还设置为,当所述待入库对象对应的表已创建索引时,通知所述索引扫描模块删除所述待入库对象对应的表的索引,并在所述索引扫描模块删除所述待入库对象对应的表的索引后,将所述待入库对象写入到其对应的表中。在一可选实施例中,还包括二次补录模块,其中:所述批量入库模块22还设置为,将所述待入库对象写入到数据库中与所述待入库对象对应的表中时,如果入库失败或者超时,将所述待入库对象作为待补录对象进行保存;所述二次补录模块24设置为,获取待补录对象,判断其对应的表是否已创建索引,如果已创建索引,则将所述待补录对象采取排重方式补录到其对应的表中;如果未创建索引,则在其对应的表创建索引后采取排重方式补录到其对应的表中。在一可选实施例中,所述索引扫描模块23扫描所述数据库中的表包括:所述数据库中的表之间存在顺序关系,扫描已入库数据中,产生时间最短的对象对应的表之前的一个或多个表。在一可选实施例中,所述索引扫描模块23当满足索引创建条件后,为所述表创建索引包括:所述数据库中的表之间存在顺序关系,对任一未创建索引的表,如果该表在第一时间阈值内没有新的入库数据且该表之后的第一个表中有第二时间阈值之后的入库数据,为所述表创建索引。以对象是话单为例,业务处理机10处理业务系统消息,产生话单。话单服务器20中的获取单元2101通过ftp获取话单到指定目录,排序单元2102在该目录选取时间最久的一批话单放到待入库目录下。批量入库模块22通过与索引扫描模块的交互,检测到对应表索引不存在,进行话单入库,为每一条入库记录产生唯一的入库序列号,并保存最大入库序列号到文件。如果在入库过程中有错误产生,则将当前入库的一批记录连同入库序列号保存到二次补录目录。二次补录模块24扫描补录目录下的话单,并通过与索引扫描模块的交互确定该话单对应的表是否已建立索引。如若索引未建立,则将该话单移动到补录备用目录,若已建立,则根据入库序列号排重入库。排重入库时由批量入库模块22分配入库序列号,在处理补录话单时向批量入库模块申请序列号组,以确保最终序列号的递增和申请的效率。在当前目录中的话单全部处理完毕时进行目录切换,以便二次补录模块补录话单。索引扫描模块23定时扫描前N天的表,如果当前表一定阈值时间以内没有新的入库数据且后一天表中有一定阈值时间以后的数据,则认为前一天表的批量入库已结束,如果该表未创建索引,则为该表创建索引,并标志为创建中状态,待索引创建成功后,标志为已创建状态。在scp集群时在有因scp宕机产生的话单延迟时,批量入库模块22从索引扫描模块23获取待入库话单对应的表的索引信息,如果未建索引,则入库,如果已建索引,则停止入库,通知二次补录模块24要删除索引的表名,在收到通知响应后定时获取该表索引状态。二次补录模块24在收到批量入库模块22发送的删除索引的消息时,将当前话单入库完毕,并将表索引状态设置为重新要获取,然后停止入库,通知索引扫描模块23删除索引,在收到通知响应后继续处理。索引扫描模块23在收到二次补录模块24的删除索引消息后,删除对应的表的索引,将该表置为索引正删除状态,回复响应,并定时查看该表的索引情况,待该表的索引删除后,置该表的状态为索引已删除。本申请中,批量入库与二次补录完全分离,采用不同的线程来完成,补录的过程不影响批量入库。延迟建索引,提高了批量入库时速度。对话单入库排序,某个表批量入库结束后即可建索引用于后续的补录和查询。将为每个话单产生的唯一入库序列号在一批话单批量入库后保存当前最大入库序列号到文件,未成功的话单连同入库序列号保存用于二次排重补录,确保入库的可靠性。二次补录目录时根据当前话单行数向批量入库模块申请入库序列号组,确保入库序列号一直递增和申请的效率。未建立索引的话单移动到二次补录备目录,待二次补录主目录下的话单全部处理完毕后,二次补录主目录和二次补录备目录进行切换,确保补录目录的持续处理。在有因某个scp故障产生的话单延迟时,通过索引的检测、删除和重建实现积压话单的自动入库。下面通过一具体实施例进一步说明本申请。图3为本申请一实施例提供的话单排序实现方法流程图;如图3所示,包括:步骤301,扫描ftp目标目录下的话单,根据话单名中的时间对话单进行排序;通常话单名中包含话单产生的时间信息,因此,可以直接根据话单名对话单进行排序;步骤302,一轮扫描结束后,选取产生时间最久的M个话单;即选取最早产生的M个话单;如果剩余话单数不足M个,则直接选取剩余话单即可。步骤303,扫描待入库目录,检查待入库目录下的话单数;步骤304,判断待入库目录下的话单数是否小于N个,如果是,执行步骤305;否则,执行步骤303;步骤305,将该M个话单移动到所述待入库目录,转步骤301。其中,N大于等于1,M大于等于1。本实施例中,按照时间顺序分批次对话单进行入库。但本申请不限于此,也可以按其他顺序进行话单入库。图4为本申请一实施例提供的批量入库流程图,如图4所示,包括:步骤401,扫描待入库目录,在待入库目录中取一个话单;步骤402,批量入库模块与索引扫描模块交互,获取该话单对应的表是否已建立索引,并保存该表名与是否建索引的对应关系,如未建索引,转步骤403,如已建索引,转步骤408;步骤403,读取当前话单中的K行,为每一行分配一个入库序列号;一个话单中通常包括多行,可以对该话单分多次进行入库。其中,K大于等于1。步骤404,进行逻辑处理,将当前话单的该K行进行入库即写入对应的表中,判断入库是否成功,如果不成功,转步骤405;如果成功,转406;步骤405,将当前的K行连同该K行的入库序列号保存到二次补录主目录;步骤406,保存最大的入库序列号到文件,转步骤407;步骤407,判断该话单是否处理完毕,如果没有,转步骤403,否则,转步骤401;步骤408,暂停入库,通知二次补录模块,等待二次补录模块的响应,接收到二次补录模块的响应后,查询该表的状态,在该表的索引被删除后,转步骤403。本实施例中,实现了批量入库,根据对应的表是否已建索引进行入库。其中,如果未建索引可以进行入库,否则,需要等待索引被删除后再进行入库。图5为本发明一实施例提供的索引扫描实现流程图。如图5,包括:步骤501,定时扫描第前L天的表;初始时,L=L0,L0大于等于1;以话单为例,通过每天的话单对应一个表,昨天的话单对应的表称为第前1天的表,前天的话单对应的表称为第前2天的表,再往前推一天的表称为第前3天的表,依次类推;步骤502,如果该表索引已建立,转步骤507;如果该表索引未建立,则转步骤503;步骤503,判断该表是否第一时间阈值内没有新的入库数据,如果是,转步骤504;否则,转步骤507;步骤504,扫描第前L-1天的表;步骤505,判断第前L-1天表中是否已经入库了第二时间阈值之后的数据,如果是,则认为第前L天的表批量入库已完成,转步骤506,否则,转步骤507;步骤506,对第前L天的表建索引,标志该表状态为索引创建中,待该表对应的索引建立后,标志该表状态为索引已建立;步骤507,判断L是否大于1,如果是,转步骤508,否则,转步骤509,扫描结束,等待下一个扫描周期;步骤508,将L减1,转步骤501;步骤509,扫描结束,等待下一个扫描周期。本实施例中提供了一种索引创建方式。需要说明的是,上述创建方式仅为示例,实际可以根据需要采取其他方式。比如,直接为当天的表之前的表创建索引,等等。图6为本发明一实施例提供的二次补录实现流程图,如图6所示,包括:步骤601,扫描二次补录主目录;步骤602,判断该目录下是否存在话单,如果是,转步骤603,否则,转步骤604;步骤603,从所述二次补录主目录中取一个话单,根据话单名查询对应的表是否建索引,并保存该表名与是否建索引的对应关系,若未建索引,转步骤605,否则,转步骤606;步骤604,二次补录主目录和二次补录备目录切换,切换后转步骤601;此处切换是指将二次补录备目录作为二次补录主目录,二次补录主目录作为二次补录备目录;步骤605、移动该话单到二次补录备目录,转步骤601;步骤606,根据当前话单行数向批量入库线程申请入库序列号组;步骤607,判断是否成功获取到入库序列号组,如果是,转步骤608,否则,转步骤606;步骤608,采用排重的方法对该话单进行二次补录,并将新的入库序列号入库;步骤609,判断当前话单是否处理完毕,如果处理完毕,转步骤601,否则,转步骤608。上述实施例为补录的一种实现方式,需要说明的是,也可采取其他方式进行补录,比如,不建立二次补录主目录和二次补录备目录,只建立一个二次补录目录,在补录之前,判断对应的表未创建索引时,为未创建索引的表创建索引,然后再进行补录。图7为本发明一实施例提供的索引信息更新与维护流程图,本实施例中,为了提高查找表是否已创建索引的速度,将表与是否创建索引的信息保存在内存中。本实施例中,在内存中存储T条信息,每条信息包括一个表名与该表的相关信息,比如,该表是否已建立索引,该表的处理时间即最后一次对该表进行处理的时间、该表的索引获取时间,如图7所示,包括:步骤701,在内存中查找表名;为提高效率,内存中只保存T条表名与表的相关信息;其中,T大于等于1。步骤702,判断表名是否存在,若已存在,转步骤703,否则,转步骤704;步骤703,查看表名对应的获取时间是否超时,若已超时,则转步骤704,否则,转步骤709;步骤704,与索引扫描模块交互获取索引信息;步骤705,判断是否成功获取索引信息,如果是,转步骤706,若获取失败或超时,转步骤704;步骤706、检查内存中是否有空间存储新信息,若还有空间,转步骤707;否则,转步骤708;步骤707,将是否建索引、索引获取时间、处理时间存入,结束;步骤708,在现有的T个信息中选取处理时间最久的一个,使用新查找到的表名及表的相关信息替换,结束;步骤709,直接在内存中获取索引信息,更新表的处理时间,结束。当然,上述信息也可以不存储在内存中,也可以存储在其他位置,比如存储在一个文件中等等。需要说明的是,上述话单排序、批量入库、索引扫描、二次补录、索引信息更新和维护均可以并行执行,比如,分别使用独立线程实现。本发明一实施例提供一种入库批量入库对应表已建索引,异常处理实现。scp集群时,某个scp异常积压话单的自动入库,scp恢复时ftp功能同时自动恢复,下载话单到话单服务器,话单服务器的排序模块根据话单名取产生时间最久的话单一般地,这些话单对应的表已建索引,后续处理如下:步骤801,批量入库模块与索引扫描模块交互,发现话单对应的表已建立索引;步骤802,批量入库模块停止入库,发送索引删除通知给二次补录模块,携带将要删除索引的表名;步骤803,二次补录模块收到索引删除通知后,如果有正在补录的话单,补录完当前话单后停止入库,将对应表索引状态设置为超时重新要获取;步骤804,二次补录模块发送索引删除通知给索引扫描模块,携带将要删除索引的表的表名;步骤805,索引扫描模块收到索引删除通知后,删除该表索引,设置该表状态为正删除状态;步骤806,索引扫描模块回复索引删除响应给二次补录模块;步骤807,二次补录模块收到索引删除响应后,继续处理补录;步骤808,二次补录模块返回索引删除响应给批量入库模块;步骤809,批量入库模块收到索引删除响应后,定时获取该表的索引状态,并在该表的索引删除后,进行批量入库;步骤810,索引扫描模块定时查看该表的索引情况,待该表的索引删除后,置该表索引为已删除状态。需要说明的是,上述实现仅为示例,也可以批量入库模块直接和索引扫描模块交互,通知索引扫描模块进行索引删除,通知二次补录模块暂停补录,二次补录模块在收到索引扫描模块的索引删除响应后,继续处理补录,批量入库模块收到索引扫描模块的索引删除响应后,定时获取该表的索引状态,并在该表的索引删除后,进行批量入库。在本申请中,业务处理机可以由业务处理机集群代替,此时如果业务处理机集群中的某个业务处理机由于故障宕机了一段时间,在恢复时话单服务器能够通过索引的检测、删除和重建实现积压话单的自动入库。本申请通过按序入库,保存入库序列号到文件,延迟建索引的方法实现批量入库;通过等待建索引,目录切换实现持续补录;通过入库序列号的排重实现系统异常时的可靠入库;通过索引的检测、删除和重建实现某个scp异常时积压话单的自动入库。采用本申请所述方法和装置,与现有技术相比,解决了oracle批量入库建立索引后越来越慢,索引失效后无法可靠入库的问题,达到了提升性能和入库准确性的效果,可用于非实时业务系统中,实现话单的隔天查询。本申请也可用于实现sybasesqlserver多索引时入库性能提升,当索引较多时,可使用本文中方法延迟建索引提升入库性能。本发明一实施例提供一种入库装置,包括存储器和处理器,所述存储器存储有程序,所述程序在被所述处理器读取执行时,实现上述任一实施例所述的入库方法。比如,所述程序在被所述处理器读取执行时,执行以下操作:获取待入库对象;当所述待入库对象对应的表未创建索引时,将所述待入库对象写入到数据库中与所述待入库对象对应的表中;扫描所述数据库中的表,当满足索引创建条件后,为所述表创建索引。本发明一实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现上述任一实施例所述的入库方法。比如,所述一个或者多个程序可被一个或者多个处理器执行,以实现如下操作:获取待入库对象;当所述待入库对象对应的表未创建索引时,将所述待入库对象写入到数据库中与所述待入库对象对应的表中;扫描所述数据库中的表,当满足索引创建条件后,为所述表创建索引。所述计算机可读存储介质包括:U盘、只读存储器ROM,Read-OnlyMemory、随机存取存储器RAM,RandomAccessMemory、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。需要说明的是,本申请中以话单入库为例进行说明,但本申请不限于此,如果有其他类型的数据需要入库,也可以应用本申请。虽然本发明所揭露的实施方式如上,但所述的内容仅为便于理解本发明而采用的实施方式,并非用以限定本发明。任何本发明所属领域内的技术人员,在不脱离本发明所揭露的精神和范围的前提下,可以在实施的形式及细节上进行任何的修改与变化,但本发明的专利保护范围,仍须以所附的权利要求书所界定的范围为准。

权利要求:1.一种入库方法,其特征在于,包括:获取待入库对象;当所述待入库对象对应的表未创建索引时,将所述待入库对象写入到数据库中与所述待入库对象对应的表中;扫描所述数据库中的表,当满足索引创建条件后,为所述表创建索引。2.如权利要求1所述的入库方法,其特征在于,所述获取待入库对象包括:获取未进行入库操作的对象,进行排序,将其中产生时间最久的一批对象作为所述待入库对象。3.如权利要求1所述的入库方法,其特征在于,所述扫描所述数据库中的表包括:所述数据库中的表之间存在顺序关系,扫描已入库数据中,产生时间最短的对象对应的表之前的一个或多个表。4.如权利要求3所述的入库方法,其特征在于,所述当满足索引创建条件后,为所述表创建索引包括:所述数据库中的表之间存在顺序关系,对任一未创建索引的表,如果该表在第一时间阈值内没有新的入库数据且该表之后的第一个表中有第二时间阈值之后的入库数据,为所述表创建索引。5.如权利要求1所述的入库方法,其特征在于,所述方法还包括:当所述待入库对象对应的表已创建索引时,删除所述待入库对象对应的表的索引后,将所述待入库对象写入到其对应的表中。6.如权利要求1至5任一所述的入库方法,其特征在于,所述方法还包括:将所述待入库对象写入到数据库中与所述待入库对象对应的表中时,如果入库失败或者超时,将所述待入库对象作为待补录对象进行保存;获取待补录对象,判断其对应的表是否已创建索引,如果已创建索引,则将所述待补录对象采取排重方式补录到其对应的表中;如果未创建索引,则在其对应的表创建索引后采取排重方式补录到其对应的表中。7.一种入库装置,其特征在于,包括:获取模块、批量入库模块和索引扫描模块,其中:所述获取模块设置为,获取待入库对象;所述批量入库模块设置为,与所述索引扫描模块交互,判断所述待入库对象对应的表是否已创建索引,如果没有,将所述待入库对象写入到数据库中与所述待入库对象对应的表中;所述索引扫描模块设置为,扫描所述数据库中的表,当满足索引创建条件后,为所述表创建索引。8.如权利要求7所述的入库装置,其特征在于,所述获取模块包括:获取单元和排序单元,其中:所述获取单元设置为,获取未进行入库操作的对象;所述排序单元设置为,将所述未进行入库操作的对象进行排序,将其中产生时间最久的一批对象作为所述待入库对象。9.如权利要求7所述的入库装置,其特征在于,所述索引扫描模块扫描所述数据库中的表包括:所述数据库中的表之间存在顺序关系,扫描已入库数据中,产生时间最短的对象对应的表之前的一个或多个表。10.如权利要求9所述的入库装置,其特征在于,所述当满足索引创建条件后,为所述表创建索引包括:所述数据库中的表之间存在顺序关系,对任一未创建索引的表,如果该表在第一时间阈值内没有新的入库数据且该表之后的第一个表中有第二时间阈值之后的入库数据,为所述表创建索引。11.如权利要求7所述的入库装置,其特征在于,所述批量入库模块还设置为,当所述待入库对象对应的表已创建索引时,通知所述索引扫描模块删除所述待入库对象对应的表的索引,并在所述索引扫描模块删除所述待入库对象对应的表的索引后,将所述待入库对象写入到其对应的表中。12.如权利要求7至11任一所述的入库装置,其特征在于,所述入库装置还包括二次补录模块,其中:所述批量入库模块还设置为,将所述待入库对象写入到数据库中与所述待入库对象对应的表中时,如果入库失败或者超时,将所述待入库对象作为待补录对象进行保存;所述二次补录模块设置为,获取待补录对象,判断其对应的表是否已创建索引,如果已创建索引,则将所述待补录对象采取排重方式补录到其对应的表中;如果未创建索引,则在其对应的表创建索引后采取排重方式补录到其对应的表中。13.一种入库装置,其特征在于,包括存储器和处理器,所述存储器存储有程序,所述程序在被所述处理器读取执行时,执行以下操作:获取待入库对象;当所述待入库对象对应的表未创建索引时,将所述待入库对象写入到数据库中与所述待入库对象对应的表中;扫描所述数据库中的表,当满足索引创建条件后,为所述表创建索引。14.如权利要求13所述的入库装置,其特征在于,所述获取待入库对象包括:获取未进行入库操作的对象,进行排序,将其中产生时间最久的一批对象作为所述待入库对象。15.如权利要求13所述的入库装置,其特征在于,所述扫描所述数据库中的表包括:所述数据库中的表之间存在顺序关系,扫描已入库数据中,产生时间最短的对象对应的表之前的一个或多个表。16.如权利要求15所述的入库装置,其特征在于,所述当满足索引创建条件后,为所述表创建索引包括:所述数据库中的表之间存在顺序关系,对任一未创建索引的表,如果该表在第一时间阈值内没有新的入库数据且该表之后的第一个表中有第二时间阈值之后的入库数据,为所述表创建索引。17.如权利要求13所述的入库装置,其特征在于,所述程序在被所述处理器读取执行时,还执行以下操作:当所述待入库对象对应的表已创建索引时,删除所述待入库对象对应的表的索引后,将所述待入库对象写入到其对应的表中。18.如权利要求13至17任一所述的入库装置,其特征在于,所述程序在被所述处理器读取执行时,还执行以下操作:将所述待入库对象写入到数据库中与所述待入库对象对应的表中时,如果入库失败或者超时,将所述待入库对象作为待补录对象进行保存;获取待补录对象,判断其对应的表是否已创建索引,如果已创建索引,则将所述待补录对象采取排重方式补录到其对应的表中;如果未创建索引,则在其对应的表创建索引后采取排重方式补录到其对应的表中。19.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现以下步骤:获取待入库对象;当所述待入库对象对应的表未创建索引时,将所述待入库对象写入到数据库中与所述待入库对象对应的表中;扫描所述数据库中的表,当满足索引创建条件后,为所述表创建索引。

百度查询: 中兴通讯股份有限公司 一种入库方法及装置、计算机可读存储介质

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。