一种提高海量数据操作效率的方法及装置的制作方法

文档序号:6583721阅读:195来源:国知局
专利名称:一种提高海量数据操作效率的方法及装置的制作方法
技术领域
本发明涉及数据处理技术,尤其涉及一种提高海量数据操作效率的方法及装置。
背景技术
随着计算机信息化的越来越普及,很多领域的软件系统后台往往会维持一个庞大 的数据库,数据库表中的记录通常也会达到数百万条甚至更多。软件系统在对这些海量数 据库表进行操作时,将不可避免地消耗更多的操作时间,该操作时间也会反映在前台的操 作界面延迟上,这会给用户带来非常糟糕的用户体验。例如,电信行业的用户通常以亿为单 位,因此电信行业的账单数据非常庞大,当用户通过账单系统查询某段时间内的消费情况 时,如果查询操作时间耗时超过10秒或者更多,则用户肯定非常恼火。 为了解决上述问题,提高海量数据的查询效率,通常会对需要频繁查询的海量数 据库表建立索引,查询语句再基于该索引进行查询优化。这种方法的确能大大提高查询效 率,但是也带来了副作用在向这类建立索引后的海量数据库表中插入数据时,需要同时修 改索引,而修改索引给插入操作带来的额外负荷也是不可低估的,因此插入速度会比较慢。 这种方法在优化查询操作的同时却忽略了界面中的插入操作,因而这种优化并不完美;并 且,如果软件系统中插入操作的频率不比查询操作低的话,这种不足就更显而易见了 。

发明内容
有鉴于此,本发明的主要目的在于提供一种提高海量数据操作效率的方法及装 置,能够提高海量数据的插入效率。 为达到上述目的,本发明的技术方案是这样实现的
—种提高海量数据操作效率的方法,包括 创建查询数据库表、控制数据库表、以及与所述查询数据库表结构一致的插入数 据库表; 向所述插入数据库表中插入数据,插入完成后,在所述控制数据库表中记录所述 插入数据库表的状态为同步就绪; 同步进程检查所述控制数据库表中的记录,当发现存在同步就绪的插入数据库表 的记录时,将同步就绪的所述插入数据库表中的所有数据同步更新到所述查询数据库表 中。 其中,所述方法进一步包括 同步更新完成后,在所述控制数据库表中将所述插入数据库表的状态更改为同步 完成; 清理进程检查所述控制数据库表中的记录,当发现存在同步完成的插入数据库表 的记录时,删除同步完成的所述插入数据库表中的所有数据,并将所述控制数据库表中该 条记录重新初始化,标记为状态可用。 其中,创建所述查询数据库表时还建立所述查询数据库表的索引,并且,所述方法
4进一步包括 同步更新完成后,重建所述查询数据库表的索引。 其中,所述插入数据采用定时插入方式。 其中,所述同步进程定时检查所述控制数据库表中的记录。 其中,所述清理进程定时检查所述控制数据库表中的记录。 其中,所述清理进程的定时启动时间比同步进程的定时启动时间长。 —种提高海量数据操作效率的装置,包括创建模块、插入模块、状态标记模块及
同步模块;其中, 创建模块,用于创建查询数据库表、控制数据库表、以及与所述查询数据库表结构 一致的插入数据库表; 插入模块,用于向所述插入数据库表中插入数据; 状态标记模块,用于插入模块完成插入后,在所述控制数据库表中记录所述插入 数据库表的状态为同步就绪; 同步模块,用于检查所述控制数据库表中的记录,当发现存在同步就绪的插入数 据库表的记录时,将同步就绪的所述插入数据库表中的所有数据同步更新到所述查询数据 库表中。 其中,所述状态标记模块,进一步用于在同步模块完成同步更新后,在所述控制数 据库表中将所述插入数据库表的状态更改为同步完成; 所述装置进一步包括清理模块,用于检查所述控制数据库表中的记录,当发现存 在同步完成的插入数据库表的记录时,删除同步完成的所述插入数据库表中的所有数据, 并将所述控制数据库表中该条记录重新初始化,标记为状态可用。 其中,所述创建模块,进一步用于在创建所述查询数据库表时还建立所述查询数 据库表的索引,并且,所述装置进一步包括索引重建模块,用于在同步模块完成同步更新 后,重建所述查询数据库表的索引。 由以上技术方案可以看出,本发明根据存取分离技术,创建两套数据库表, 一套用 于插入数据,称为插入数据库表;另一套用于查询数据,称为查询数据库表。其中,对插入数 据库表不建立索引,因此在插入数据时无需同时修改索引,从而提高插入效率。


图1为本发明对数据表进行操作的交互图; 图2为本发明数据库应用软件系统向数据库中插入数据和查询数据的示意图;
图3为本发明应用实例的示意图; 图4为本发明数据库中插入查询操作以及同步进程交互的时序图;
图5为本发明提高海量数据操作效率的装置的结构示意图。
具体实施例方式
本发明的基本思想是在现有为海量数据库表建立索引提高查询效率的基础上, 引入存取分离的新技术,进一步对插入操作进行优化。存取分离是指存放数据即插入数据 和读取数据即查询数据分别放在不同的数据库表中;这里,将存储插入数据的数据库表称为插入数据库表,也可称为存放数据库表;将存储查询数据的数据库表称为查询数据库表, 也可以称为读取数据库表;对查询数据库表建立索引,进行查询优化,而对插入数据库表不 建立索引,不影响插入数据库的插入操作;并且,再启动一个后台同步进程,定时将插入数 据库中新录入的数据同步更新到查询数据库表中。 为了描述简洁,下文将插入数据库表标识为表S,查询数据库表标识为表R,另外, 将下文涉及到的控制数据库表标识为表C。 如图1所示,本发明提高海量数据操作效率的方法包括以下步骤
步骤101,创建表R、表C、以及与表R结构一致的表S。 其中,因为表R是用于查询的,所以在创建表R时,还包括为表R建立索引,以优化 查询操作。此为现有技术,在此不再赘述。 创建表S是为了将需要插入到表R的数据先存储在表S中,而不直接存储到表R 中;另外,表S是根据表R的结构创建的,以使表S的结构与表R的结构保持一致,从而使表 S中的数据能更新到表R中。 这里,表S仅用于插入数据,并且为了提高数据的插入效率,对表S不建立索引。另 外,还可以定时向表S中插入数据,并控制表S中的数据总量,这样也可以提高数据的插入 效率。 步骤102,向表S中插入数据。 步骤103,插入完成后,在表C中记录表S的状态为同步就绪。 步骤104,检查表C中的记录,当发现存在同步就绪的表S的记录时,将表S中的所 有数据同步更新到表R中。 该步骤104是由后台运行的同步进程执行的,并且根据实际情况,同步进程可以 定时检查表C中的记录。 另外,在将表S中的所有数据同步更新到表R的同时,数据库自动更新表R的索 引。 数据同步更新到表R后,由于已经存在表R的索引,所以用户在查询表R时,查询 效率会比较快。 由于数据的同步更新操作会使建立的索引效率下降,因此,为了最大限度地提高 索引效率,同步更新完成后,可以定时在用户使用少的时间点,对已不再插入数据的表R重 建索引。重建索引后,可以提高后续查询操作的效率。其中,该重建索引的操作可以是由同 步进程执行的。 步骤105,同步更新完成后,在表C中将表S的状态更改为同步完成。 步骤106,检查表C中的记录,当发现存在同步完成的表S的记录时,删除表S中的
所有数据,并将表C中该条记录重新初始化,标记为状态可用,从而为下一次插入数据做准备。 该步骤106是由后台运行的清理进程执行的,并且根据实际情况,清理进程可以 定时检查表C中的记录。 通常,清理进程的定时启动时间需要比同步进程的定时启动时间长,例如,如果同 步进程的定时启动时间为10分钟,则清理进程的定时启动时间可以为24小时。 另外。清理进程可以集成在同步进程中,即由同步进程来完成同步和清理操作。
由以上流程可以发现,在对海量数据库表进行操作时,上述方法可以同时提高查 询效率和插入效率。当然,该方法也存在些许不足,插入的数据需要间隔一段时间才能被查 询到,该间隔时间即是同步进程的定时启动时间。因此,实际应用此方案时,可以根据需求, 权衡利弊,调整同步进程的定时启动时间,以使系统状态最优化。例如,用户通过电信行业 的账单系统查询账单时,该账单通常都是历史账单,用户对当日或当时产生的实时账单并
不感兴趣,因此,可以将同步进程的定时启动时间设置为io分钟或者更长一些,这样即提 高了查询效率和插入效率,也不会对系统使用产生不良影响。 如图2所示,数据库应用软件系统在操作数据库时,插入操作在表S中进行,查询 操作在表R中进行;其中,表R建立有索引,用以优化查询操作。 图3示出了本发明的一个应用实例,其中,生产库相当于表S,查询库相当于表R。
入库接口机向生产库中插入数据,即话单入库;同步进程定时把生产库的实际数据同步更
新到查询库中;话单查询系统对已建立索引的查询库进行查询操作,即话单查询,并将查询
结果展现给用户。另外,在实际应用中,查询库还执行统计等操作。 如图4所示,本发明数据库中插入查询操作以及同步进程交互的时序为 步骤401,数据库应用软件系统创建表R、表C,并根据表的R结构创建S。其中,表
R建立有索引。 步骤402,向表S中插入数据。 步骤403,插入完成后,在表C中记录表S的状态为同步就绪。
步骤404,同步进程定时启动,启动后检查表C中是否存在同步就绪的表S的记录。
步骤405,当存在同步就绪的表S的记录时,表C向同步进程返回同步就绪的表S 的表名;否则,结束当前处理流程。 步骤406,同步进程根据获得的表S的表名,在数据库中查找到表S,并将表S中的
所有数据同步更新到表R中。在进行同步更新时,数据库自动更新表R的索引。 步骤407,同步更新完成后,在表C中将表S的状态更改为同步完成。 步骤408,数据库应用软件系统需要查询表R中的数据时,根据表R当前的索引进
行查询。 上文已提到,在创建表R时已对其建立了索引,在数据同步更新到查询数据库表 后,由于已经存在查询数据库表的索引,所以用户在查询查询数据库表时,查询效率会比较 快。 为实现上述方法,本发明相应提供一种提高海量数据操作效率的装置,如图5所 示,该装置包括创建模块10、插入模块20、状态标记模块30及同步模块40 ;其中,
创建模块10,用于创建查询数据库表、控制数据库表、以及与所述查询数据库表结 构一致的插入数据库表; 插入模块20,用于向所述插入数据库表中插入数据; 状态标记模块30,用于插入模块20完成插入后,在所述控制数据库表中记录所述 插入数据库表的状态为同步就绪; 同步模块40,用于检查所述控制数据库表中的记录,当发现存在同步就绪的插入 数据库表的记录时,将同步就绪的所述插入数据库表中的所有数据同步更新到所述查询数 据库表中。
其中,所述状态标记模块30,进一步用于在同步模块40完成同步更新后,在所述 控制数据库表中将所述插入数据库表的状态更改为同步完成; 所述装置进一步包括清理模块,用于检查所述控制数据库表中的记录,当发现存 在同步完成的插入数据库表的记录时,删除同步完成的所述插入数据库表中的所有数据, 并将控制数据库表中该条记录重新初始化,标记为状态可用。 其中,所述创建模块IO,进一步用于在创建所述查询数据库表时还建立所述查询 数据库表的索引,并且,所述装置进一步包括索引重建模块,用于在同步模块40完成同步 更新后,重建所述查询数据库表的索引。
另外,清理模块可以集成在同步模块40中。 以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
8
权利要求
一种提高海量数据操作效率的方法,其特征在于,包括创建查询数据库表、控制数据库表、以及与所述查询数据库表结构一致的插入数据库表;向所述插入数据库表中插入数据,插入完成后,在所述控制数据库表中记录所述插入数据库表的状态为同步就绪;同步进程检查所述控制数据库表中的记录,当发现存在同步就绪的插入数据库表的记录时,将同步就绪的所述插入数据库表中的所有数据同步更新到所述查询数据库表中。
2. 根据权利要求1所述的提高海量数据操作效率的方法,其特征在于,所述方法进一步包括同步更新完成后,在所述控制数据库表中将所述插入数据库表的状态更改为同步完成;清理进程检查所述控制数据库表中的记录,当发现存在同步完成的插入数据库表的记录时,删除同步完成的所述插入数据库表中的所有数据,并将所述控制数据库表中该条记录重新初始化,标记为状态可用。
3. 根据权利要求1或2所述的提高海量数据操作效率的方法,其特征在于,创建所述查询数据库表时还建立所述查询数据库表的索引,并且,所述方法进一步包括同步更新完成后,重建所述查询数据库表的索引。
4. 根据权利要求1或2所述的提高海量数据操作效率的方法,其特征在于,所述插入数据采用定时插入方式。
5. 根据权利要求2所述的提高海量数据操作效率的方法,其特征在于,所述同步进程定时检查所述控制数据库表中的记录。
6. 根据权利要求5所述的提高海量数据操作效率的方法,其特征在于,所述清理进程定时检查所述控制数据库表中的记录。
7. 根据权利要求6所述的提高海量数据操作效率的方法,其特征在于,所述清理进程的定时启动时间比同步进程的定时启动时间长。
8. —种提高海量数据操作效率的装置,其特征在于,所述装置包括创建模块、插入模块、状态标记模块及同步模块;其中,创建模块,用于创建查询数据库表、控制数据库表、以及与所述查询数据库表结构一致的插入数据库表;插入模块,用于向所述插入数据库表中插入数据;状态标记模块,用于插入模块完成插入后,在所述控制数据库表中记录所述插入数据库表的状态为同步就绪;同步模块,用于检查所述控制数据库表中的记录,当发现存在同步就绪的插入数据库表的记录时,将同步就绪的所述插入数据库表中的所有数据同步更新到所述查询数据库表中。
9. 根据权利要求8所述的提高海量数据操作效率的装置,其特征在于,所述状态标记模块,进一步用于在同步模块完成同步更新后,在所述控制数据库表中将所述插入数据库表的状态更改为同步完成;所述装置进一步包括清理模块,用于检查所述控制数据库表中的记录,当发现存在同步完成的插入数据库表的记录时,删除同步完成的所述插入数据库表中的所有数据,并将 所述控制数据库表中该条记录重新初始化,标记为状态可用。
10.根据权利要求8或9所述的提高海量数据操作效率的装置,其特征在于,所述创建 模块,进一步用于在创建所述查询数据库表时还建立所述查询数据库表的索引,并且,所述 装置进一步包括索引重建模块,用于在同步模块完成同步更新后,重建所述查询数据库表 的索引。
全文摘要
本发明公开了一种提高海量数据操作效率的方法,包括创建查询数据库表、控制数据库表、以及与所述查询数据库表结构一致的插入数据库表;向所述插入数据库表中插入数据,插入完成后,在所述控制数据库表中记录所述插入数据库表的状态为同步就绪;同步进程检查所述控制数据库表中的记录,当发现存在同步就绪的插入数据库表的记录时,将同步就绪的所述插入数据库表中的所有数据同步更新到所述查询数据库表中。本发明另公开了一种提高海量数据操作效率的装置。采用本发明能够提高海量数据的插入效率。
文档编号G06F17/30GK101702174SQ200910222550
公开日2010年5月5日 申请日期2009年11月13日 优先权日2009年11月13日
发明者张良发, 李林松 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1