一种基于SQLite数据库的垂直拆分方法技术

技术编号:18398917 阅读:22 留言:0更新日期:2018-07-08 19:32
本发明专利技术涉及计算机领域,特别涉及一种基于SQLite数据库的垂直拆分方法,该方法通过简单的判断将数据库垂直拆分,且拆分后能够很好的实现对历史信息的查看,拆分后的数据库对用户操作透明,即用户感觉不到数据库的改变,能够很好的提高系统的稳定性。

【技术实现步骤摘要】
一种基于SQLite数据库的垂直拆分方法
本专利技术涉及计算机领域,特别涉及一种基于SQLite数据库的垂直拆分方法。
技术介绍
在IT服务中,数据库是一项关键的组件。其维护着整个服务所需的关键数据。然而,数据库如MySQL、PostgreSQL、Oracle通常作为系统的一项进程来提供服务。对于小型的应用来说,可能并不需要大型关系数据库的丰富的功能,仅需要以能够提供关系数据的增删改查操作即可,这样SQLite文件数据库可以很好的满足要求。然而,随着数据量的增加,如日志信息,由于SQLite锁机制及性能的限制,很难满足这种大数据表的查询要求。同时查询改表过程中,将会影响到库中其他表的操作。因而不得不将这种大表水平拆分到新的SQlite库中,令其单独存在。但这样并不能解决查询大表产生的性能问题。例如存在现有技术一的技术方案,数据库只保存一定时间内的数据,久远的数据将被滚动清除,该技术方案的缺点是删除过期的数据,使得历史数据不可见,这对一些关键的应用来说不可行。例如存在现有技术二的技术方案,设置历史表,定期将活跃表中的数据转存如历史表,同时清除活跃表内已转存的数据;该技术方案的缺点是将活跃表中的数据转存至历史表,这样活跃表可以保持较高的性能,但查询信息时,由于历史表数据不断累积,查询问题依然存在。例如存在现有技术三的技术方案,利用后台进程将数据库备份,同时删除已备份数据;该技术方案的缺点虽然数据库得到了备份,但备份后的数据对IT服务不可见,或者需要增加额外的功能才能访问到。并且这种方式部署较复杂。例如存在现有技术四的技术方案,采用高级数据库方案如Oracle,Mysql集群,或者采用Hadoop大数据等解决方案;该技术方案的缺点是只为完成一小部分功能而动用大的组件,结构上显得不协调,且加大系统部署的环境要求。不适合小型应用的要求。基于此,本文提出一种SQLite数据库的垂直拆分方法,能够实现将大表拆分成可满足性能要求的小表,同时拆分后的数据库能够很好的实现查询过程的连贯性,即数据库的拆分对用户透明。
技术实现思路
本专利技术是通过如下技术方案实现的,一种基于SQLite数据库的垂直拆分方法,包括如下步骤:第一步,生成系统模板数据库,其中只包含表结构,无数据;第二步,拆分数据库并将用户欲添加的数据存入拆分的数据库中或者将用户欲添加的数据添加进当前活跃库。优选的,所述第二步具体包括以下步骤:S1,开始;S2,插入操作;S3,判断库大小/表行数是否达到出阈值,若是,执行步骤S4,若否,执行步骤S11;步骤S4,断开与当前库的链接;步骤S5,将活跃库以原始名+日期时间格式重命名;步骤S6,将新库名及当前时间及最后一行ID信息插入到数据库拆分信息表中;步骤S7,判断插入是否成功,若成功,则执行步骤S8,若不成功,则执行步骤S12;步骤S8,拷贝模板数据库,并将其重命名为活跃库;步骤S9,与当前活跃库重新建立链接;步骤S10,获取原活跃库主键信息,设置新库的主键起始信息;步骤S11,执行插入操作;步骤S12,将库文件名还原为重命名前状态,执行步骤S11。本专利技术还提供一种操作数据库的方法,其中该数据库根据所述的基于SQLite数据库的垂直拆分方法所形成,具体的,当用户查询、修改或删除操作时,首先判断用户查询的数据是否在当前活跃数据库中,若是,则返回当前活跃数据库中的数据;若查询跨数据库,则先将获取当前数据库数据,而后查询数据库拆分记录表,寻找所要切换到的数据源,断开与当前库的链接,切换数据源,创建新的链接,获取新数据源中的数据并返回。优选的,查询、修改或删除操作数据源与添加操作的数据源相互独立,即查询、修改或删除操作数据源发生切换时,并不影响数据的添加操作。本专利技术相对于现有技术的有益效果是,本专利技术通过简单的判断将数据库垂直拆分,且拆分后能够很好的实现对历史信息的查看,拆分后的数据库对用户操作透明,即用户感觉不到数据库的改变。拆分后能够很好的提高系统的稳定性。附图说明图1本专利技术一实施例提供的数据库拆分流程图图2本专利技术一实施例提供的数据库拆分后查询操作流程图图3本专利技术一实施例提供的数据库拆分后的修改/删除操作流程图具体实施方式下面结合附图对本专利技术的较佳实施例进行详细阐述。以下实施例仅用于更加清楚地说明本专利技术的技术方案,而不能以此来限制本专利技术的保护范围。本专利技术实施例所提供的是一种基于小型IT服务的数据库垂直拆分方法,属于IT服务内部的部署与配置,实施过程中需要结合服务代码的具体实现形式。部署或配置方式如下:1.设置待拆分数据库的数据表行数或数据库大小阈值;2.生成待拆分数据库的模板数据库,并将其放置在指定位置;3.创建数据库拆分记录表,记录数据库拆分后的数据库名、数据拆分详细时间信息及数据表最后一行数据的主键如ID信息;4.为数据库的查询操作和增删改操作配置相互独立的数据源,在发生跨数据库查询时,切换查询操作数据源。本专利技术一实施例提供了一种SQlite库的动态垂直拆分方法,具体包括了以下内容:1.生成系统模板数据库,其中只包含表结构,无数据。用于数据库拆分时生成新库;2.数据写入操作时,检查当前活跃库已存入行数或数据库文件总大小,若行数或大小达到阈值要求,将此活跃数据库以日期格式重命名,并将命名后的数据库名写入数据库拆分记录表中。然后拷贝模板数据库并重命名为原活跃数据库库名;若行数或大小未达到阈值要求,继续在当前活跃库中插入数据。具体的,如图1所示,SQlite库的动态垂直拆分方法包括如下步骤:S1,开始;S2,插入操作;S3,判断库大小/表行数是否达到出阈值,若是,执行步骤S4,若否,执行步骤S11;步骤S4,断开与当前库的链接;步骤S5,将活跃库以原始名+日期时间格式重命名;步骤S6,将新库名及当前时间及最后一行ID信息插入到数据库拆分信息表中;步骤S7,判断插入是否成功,若成功,则执行步骤S8,若不成功,则执行步骤S12;步骤S8,拷贝模板数据库,并将其重命名为活跃库;步骤S9,与当前活跃库重新建立链接;步骤S10,获取原活跃库主键信息,设置新库的主键起始信息;步骤S11,执行插入操作;步骤S12,将库文件名还原为重命名前状态,执行步骤S11。图2所示为数据库拆分后查询操作流程图,图3所示为数据库拆分后的修改/删除操作流程图,如图2-3所示,当用户查询、修改或删除操作时,首先判断用户查询的数据是否在当前活跃数据库中,若是,则返回当前活跃数据库中的数据。若查询跨数据库,则先将获取当前数据库数据,而后查询数据库拆分记录表,寻找所要切换到的数据源,断开与当前库的链接,切换数据源,创建新的链接,获取新数据源中的数据并返回。且本专利技术实施例中,查询、修改或删除操作数据源与添加操作的数据源相互独立,即查询、修改或删除操作数据源发生切换时,并不影响数据的添加操作。由此可见,本专利技术实施例提出的SQlite库的动态垂直拆分机制,减小大表扫描带来的延时等待,以提高用户的体验度。同时当用户跨数据库查询时,能够很好的实现数据库的动态切换。用户也感受不到后台发生了跨数据库查询。术语“计算机系统”包括根据上述实施方式实现系统或执行方法的硬件、软件和数据存储装置。例如,计算机系统可包括中央处理单元(CPU)、输入装置、输出装置和数据存储。优选地,计本文档来自技高网
...

【技术保护点】
1.一种基于SQLite数据库的垂直拆分方法,包括如下步骤:第一步,生成系统模板数据库,其中只包含表结构,无数据;第二步,拆分数据库并将用户欲添加的数据存入拆分的数据库中或者将用户欲添加的数据添加进当前活跃库。

【技术特征摘要】
1.一种基于SQLite数据库的垂直拆分方法,包括如下步骤:第一步,生成系统模板数据库,其中只包含表结构,无数据;第二步,拆分数据库并将用户欲添加的数据存入拆分的数据库中或者将用户欲添加的数据添加进当前活跃库。2.根据权利要求1所述的垂直拆分方法,其特征在于:所述第二步具体包括以下步骤:S1,开始;S2,插入操作;S3,判断库大小/表行数是否达到出阈值,若是,执行步骤S4,若否,执行步骤S11;步骤S4,断开与当前库的链接;步骤S5,将活跃库以原始名+日期时间格式重命名;步骤S6,将新库名及当前时间及最后一行ID信息插入到数据库拆分信息表中;步骤S7,判断插入是否成功,若成功,则执行步骤S8,若不成功,则执行步骤S12;步骤S8,拷贝模板数据库,并将其重命名为活跃库;步骤S9,与当前活跃库重新建立链接;...

【专利技术属性】
技术研发人员:杨振庚
申请(专利权)人:郑州云海信息技术有限公司
类型:发明
国别省市:河南,41

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1