一种数据库表的管理方法及装置的制作方法

文档序号:6467670阅读:143来源:国知局
专利名称:一种数据库表的管理方法及装置的制作方法
技术领域
本发明涉及数据库技术领域,尤其涉及一种数据库表的管理方法及装置。
背景技术
对于记录数据非常多的数据库表,由于有查询需求,通常要根据此类数
据库表的某些字段创建分区,以提高查询效率。例如,在数据库表(id, account一no, account—log—id, transcode, operator, create—time )上才艮才居create—time 字段创建分区。由于业务的限制,该数据库表中account一log一id字段的数据必 须满足唯一性,因此,要在该数据库表上创建唯一索引。由于account—log—id 字段没有包含分区字段create—time,所以在该数据库表上创建的唯一索引为 全局的唯一索引。
但是,随着时间的推移,该数据库表记录的数据会越来越多,为了减轻 存储数据的压力,需要将一部分数据迁移到历史库中。同时,具有该数据库 表的系统通常要保证不间断运行,若进行在线数据迁移,该数据库表上全局 的唯一索引会失效。因此,若要将一部分数据迁移到历史库中,必须关闭系 统,手动对数据进行迁移。
为了解决使具有唯一性要求数据的数据库表进行在线数据迁移的问题, 现有解决方法为以上述数据库表为例,删除其全局的唯一索引,并在该数 据库表上创建一个普通索引,若该数据库表进行在线数据迁移,其上创建的 普通索引不会失效。此时,为了保证该数据库表中account—log—id字段的数据 的唯一性,在新的数据插入之前,需要在该数据库表中查看该新的数据是否 满足唯一性,即在数据库表中是否有与该新的数据重复的数据,如果有,则 拒绝将该新的数据插入数据库表中,否则,将该新的数据插入该数据库表中。
发明人在研究过程中,发现上述现有解决方案至少存在以下问题降低 了向数据库表插入数据的效率。因为每插入一条新的数据就需要将该新数据 与该数据库中已存的全部数据进行比对,如此加大了数据库的运作负担,同 时降低了数据库插入数据的效率。

发明内容
有鉴于此,本发明提供了一种数据库表的管理方法及装置,以提高向数 据库表插入数据的效率。
一种数据库表的管理方法,包括
基于第一数据库表建立第二数据库表,在所述第二数据库表的特定字段 上创建唯一索引或者主键,其中,所述第二数据库表中特定字段的数据是所 述第 一数据库表中要求满足唯一性的数据,所述唯一索引或者所述主键用于 保证要求满足唯一性的数据的唯一性;
通过所述唯一索引或者所述主键判断所述第二数据库表中是否有与向所 述第二数据库表中插入的新的数据重复的数据;
若有,则插入失败,流程结束,否则,将所述新的数据插入所述第二数 据库表后,继续将所述新的数据插入所述第一数据库表。
优选地,所述第二数据库表中字段列数不少于所述第 一数据库表要求保 证业务唯一性lt据的列数。
可选地,所述方法还包括
若所述第一数据库表有唯一索引,删除所述第一数据库表的唯一索引, 以使所述第 一数据库表进行在线数据迁移。
可选地,所述方法还包括
若所述第一数据库表有查询需求,在所述第一数据库表上创建普通索引。 可选地,所述方法还包括
若所述第二数据库表上特定字段的数据周期性发生重复,定期删除所述 第二数据库表上特定字段的数据。
一种数据库表的管理装置,所述装置包括
第一建立单元,用于基于第一数据库表建立第二数据库表,其中,所述 第二数据库表中特定字段的数据是所述第一数据库表中需要保证唯一性的数
据;
创建单元,用于在所述第一建立单元建立的所述第二数据库表上的特定 字段创建唯一索引或者主键,所述唯一索引或者所述主键用于保证要求满足
唯一性的数据的唯一性;
判断单元,用于通过所述创建单元创建的所述唯一索引或者所述主键, 判断所述第一建立单元建立的所述第二数据库表中是否有与向所述第二数据 库表中插入的新的数据重复的数据;
插入单元,用于当所述判断单元判断出没有重复的数据时,将所述新的 数据插入所述第二数据库表,然后,继续将所述新的数据插入所述第一数据 库表。
可选地,所述装置还包括
第一删除单元,用于若所述第一数据库表有唯一索引,删除所述第一数 据库表的唯一索引,以使所述第一数据库表进行在线数据迁移。
可选地,所述装置还包括
第二建立单元,用于若所述第一数据库表有查询需求,在所述第一数据 库表上建立普通索引。
可选地,所述装置还包括
第二删除单元,用于若所述第二数据库表上特定字^a的数据周期性发生
重复,定期删除所述第一建立单元建立的所述第二数据库表上特定字^:的数 据。
可以看出,当向第一数据库表中插入新的数据时,不再执行查询这一步 骤,而是直接将该新的数据插入第二数据库表,当判断出允许插入第二数据 库表时,再将该新的数据直接插入第一数据库表。由于在实际情况中,新的 数据与第一数据库表中的唯一性数据重复的几率4艮小,并且,第二数据库表 中的数据量与第一数据库表相比非常小,第二数据库表通过唯一索引或者主
4建进行判断时,不用消耗太多时间,因此,往往可以快速将该新的凄史据插入 第 一数据库表,大大提高了数据插入的效率。


图1为本发明方法流程图2为本发明具体实施例中创建唯一索引或者主键流程图; 图3为本发明具体实施例中将新的数据插入第一数据库表流程图; 图4为本发明装置结构图。
具体实施例方式
为了使本发明的上述特征、优点更加明显易懂,下面结合具体实施方式
对本发明进行详细说明。
请参考图1,为本发明方法流程图,可以包括以下步骤
步骤101:基于第一数据库表建立第二数据库表,在所述第二数据库表的 特定字段上创建唯一索引或者主键,其中,所述第二数据库表中特定字段的 数据是所述第 一数据库表中要求满足唯一性的数据,所述唯一索引或者所述 主键用于保证要求满足唯一性的数据的唯一性;
步骤102:通过所述唯一索引或者所述主键判断所述第二数据库表中是否 有与向所述第二数据库表中插入的新的数据重复的数据;
步骤103:若有,则插入失败,流程结束,否则,将所述新的数据插入所 述第二数据库表后,继续将所述新的数据插入所述第 一数据库表。
下面结合一个具体实施例对图1所示各步骤进行详细说明。
々!i殳第一凄1才居库表有以下字4殳(id, account—no, account—log—id, transcode, operator, create—time ),要求满足唯一性的凝:据所在的字段为account—log—id 字段,并且该第一数据库表上创建有唯一索引。目前,该第一数据库表无法 进行在线数据迁移,为了高效进行在线数据迁移,并且使account—log_id字段 上的数据仍能满足唯一性要求,请参考图2,为本发明方法具体实施例中创建 唯一索引或者主^^建流程图,可以包括以下步骤
步骤201:若第一数据库表有唯一索引,删除第一数据库表的唯一索引;
如果第 一数据库表有查询需求,可以在第 一数据库表上创建一个普通索 引。如果第一数据库表没有查询需求,则可以不再创建普通索引,以便节省 普通索引所占的存储空间。普通索引为分区索引,只在第一数据库表的分区 创建即可,因此,步骤201保证了第一数据库表中的数据可以进行在线数据 迁移。
步骤202:基于第一数据库表建立第二数据库表;
第二数据库表仅有一列或者几列,用于存放第一数据库表中的要求满足 唯一性的数据。
在本具体实施例中,创建的第二数据库表有以下字段(account—logjd), 或者,创建的第二数据库表还可以为(account—log—id, create—time )。
步骤203:在第二数据库表上创建唯一索引或者主键。
在第二数据库表上创建的唯一索引的列与第 一数据库表原有的唯一索引 相同,即相当于在第二数据库表应该包含第 一数据库表有唯一性要求的列, 并且需要在第二数据库表中的这些列上创建唯一索引。
本具体实施例中,在第二数据库表的account—log—id字段上创建唯一索引 或者主键。
步骤201至步骤203,既保证了第一数据库表可以进行在线数据迁移,又 保证了第一数据库表中要求满足唯一性的数据的唯一性。在这种情况下,若 要将新的数据插入第一数据库表,需要执行如下步骤,请参考图3所示
步骤301:向第二数据库表中插入新的数据;
步骤302:通过第二数据库表的唯一索引或者主键判断此次插入是否异 常,若插入异常,转入步骤303,否则,转入步骤304;
插入新的数据时,若判断出插入异常,该新的数据无法插入第二数据库 表,说明第二数据库表中的已有数据与新的数据不满足唯一性约束,因此, 若将该新的数据插入第二数据库表,将不能保证要求满足唯一性的数据的唯 一性。若判断出插入正常,该新的数据可以插入第二数据库表,说明第二数
据库表中没有与该新的数据重复的数据,因此,可以将该新的数据插入第二 数据库表。
步骤303:执行唯一性约束异常处理,流程结束;
步骤304:将该新的数据插入第二数据库表中后,继续将该新的数据插入 第一数据库表,流程结束。
若第二数据库表中account一logjd字段上的数据有一定规律,例如在一个 月之内可能会有重复数据, 一个月之后,就不会再出现重复数据,这种情况 下,可以一个月将第二数据库表中account—log—id字段上的数据进行删除,以 保证第二数据库表中的数据量尽可能小,以进一步提高插入新的数据的效率, 减少存储空间。
可以看出,本发明提供的方法中,当向第一数据库表中插入新的数据时, 不再执行查询这一步骤,而是直接将该新的数据插入第二数据库表,当判断 出允许插入第二数据库表时,再将该新的数据直接插入第一数据库表。由于 在实际情况中,新的数据与第一数据库表中的唯一性数据重复的几率很小, 并且,第二数据库表中的数据量与第一数据库表相比非常小,第二数据库表 通过唯一索引或者主键进行判断时,不用消耗太多时间,因此,往往可以快 速将该新的数据插入第一数据库表,大大提高了数据插入的效率。
请参考图4,为本发明提供的装置结构图,可以包括
第一建立单元401,用于基于第一数据库表建立第二数据库表,其中,所 述第二数据库表中特定字段的数据是所述第 一数据库表中需要保证唯一性的 数据;
创建单元402,用于在所述第一建立单元401建立的所述第二数据库表上 创建唯一索引或者主键,所述唯一索引或者所述主键用于保证要求满足唯一 性的数据的唯一性;
判断单元403,用于通过所述创建单元402创建的所述唯一索引或者所述 主键,判断所述第一建立单元401建立的所述第二数据库表中是否有与向所 述第二数据库表中插入的新的数据重复的数据;
插入单元404,用于当所述判断单元403判断出没有重复的凄t据时,将所 述新的数据插入所述第二数据库表,然后,继续将所述新的数据插入所述第 一数据库表。
结合方法具体实施例,本发明提供的装置还可以包括
第一删除单元,用于若所述第一数据库表有唯一索引,删除所述第一数 据库表的唯一索引,以使所述第一数据库表进行在线数据迁移。
第二建立单元,用于若所述第一数据库表有查询需求,在所述第一数据 库表上建立普通索引。
第二删除单元,用于若所述第二数据库表上特定字段的数据周期性发生 重复,定期删除所述第一建立单元401建立的所述第二数据库表上特定字段 的数据。
下面结合方法具体实施例,对上述各单元执行的操作进行详细说明。
若第一数据库表有唯一索引,第一删除单元删除所述第一数据库表的唯 一索引。第一建立单元401基于第一数据库表(id, account—no, account—log—id, transcode, operator, create—time )建立第二数据库表(account—log—id ), 或 者,(account—log—id, create—time )。创建单元402在第二数据库表上创建唯 一索引,或者,将account—log—id字段作为主键。
在进行数据插入时,判断单元403通过第二数据库表上的唯一索引或者主 键判断插入此次新的数据是否成功,即第二数据库表上account—logjd字段的 数据是否有与此次插入新的数据重复的数据,若有,则判断单元403判断出插 入失败,若没有,则判断单元判断出插入成功,插入单元404将新的数据插入 第二数据库表后,继续将该的数据插入第一数据库表。
若第一数据库表有查询需求,第二建立单元可以在第一数据库表上建立 普通索引。
为了进一步提高插入新的数据的效率,减少存储空间,第二删除单元可 以定期对第二数据库表中account—log一id字段上的数据进行清理。可以看出,第一建立单元401建立的第二数据库表中的数据相对第一数据
库表较少,插入的新的数据与要求满足唯一性的数据重复的几率非常小,当
判断单元403判断没有重复数据时,插入单元404可以将新的数据插入第二数 据库表后,继续将该新的数据插入第一数据库表,从而提高了数据插入的效 率。
最后,还需要说明的是,还需要说明的是,在本文中,诸如第一和第 二等之类的关系术语仅仅用来将一个实体或者操作与另 一个实体或操作区 分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的 关系或者顺序。而且,术语"包括"、"包含"或者其任何其他变体意在涵 盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设 备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包 括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情 况下,由语句"包括一个......,,限定的要素,并不排除在包括所述要素的
过程、方法、物品或者设备中还存在另外的相同要素。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本 发明可借助软件加必需的硬件平台的方式来实现,当然也可以全部通过硬 件来实施,但很多情况下前者是更佳的实施方式。基于这样的理解,本发 明的技术方案对背景技术做出贡献的全部或者部分可以以软件产品的形式 体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁 碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机, 服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分 所述的方法。
以上对本发明所提供的一种数据库表的管理方法及装置进行了详细介
实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于 本领域的一般技术人员,依据本发明的思想,在具体实施方式
及应用范围 上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
权利要求
1、一种数据库表的管理方法,其特征在于,包括:基于第一数据库表建立第二数据库表,在所述第二数据库表的特定字段上创建唯一索引或者主键,其中,所述第二数据库表中特定字段的数据是所述第一数据库表中要求满足唯一性的数据,所述唯一索引或者所述主键用于保证要求满足唯一性的数据的唯一性;通过所述唯一索引或者所述主键判断所述第二数据库表中是否有与向所述第二数据库表中插入的新的数据重复的数据;若有,则插入失败,流程结束,否则,将所述新的数据插入所述第二数据库表后,继续将所述新的数据插入所述第一数据库表。
2、 根据权利要求1所述的方法,其特征在于,所述第二ii:据库表中字段 列数不少于所述第 一数据库表要求保证业务唯一性数据的列数。
3、 根据权利要求1所述的方法,其特征在于,所述方法还包括若所述第一数据库表有唯一索引,删除所述第一数据库表的唯一索引, 以使所述第 一数据库表进行在线数据迁移。
4、 根据权利要求1所述的方法,其特征在于,所述方法还包括 若所述第 一数据库表有查询需求,在所述第 一数据库表上创建普通索引。
5、 根据权利要求1所述的方法,其特征在于,所述方法还包括若所述第二数据库表上特定字段的数据周期性发生重复,定期删除所述 第二数据库表上特定字段的数据。
6、 一种数据库表的管理装置,其特征在于,所述装置包括 第一建立单元,用于基于第一数据库表建立第二数据库表,其中,所述第二数据库表中特定字段的数据是所述第 一数据库表中需要保证唯一性的数 据;创建单元,用于在所述第 一建立单元建立的所述第二数据库表上的特定 字段创建唯一索引或者主键,所述唯一索引或者所述主键用于保证要求满足 唯一性的数据的唯一性;判断单元,用于通过所述创建单元创建的所述唯一索引或者所述主^:,判断所述第一建立单元建立的所述第二数据库表中是否有与向所述第二数据库表中插入的新的数据重复的数据;插入单元,用于当所述判断单元判断出没有重复的数据时,将所述新的 数据插入所述第二数据库表,然后,继续将所述新的数据插入所述第一数据 库表。
7、 根据权利要求6所述的装置,其特征在于,所述装置还包括第一删除单元,用于若所述第一数据库表有唯一索引,删除所述第一数 据库表的唯一索引,以使所述第一数据库表进行在线数据迁移。
8、 根据权利要求6所述的装置,其特征在于,所述装置还包括第二建立单元,用于若所述第一数据库表有查询需求,在所述第一数据 库表上建立普通索引。
9、 根据权利要求6所述的装置,其特征在于,所述装置还包括 第二删除单元,用于若所述第二数据库表上特定字段的数据周期性发生重复,定期删除所述第一建立单元建立的所述第二数据库表上特定字段的数 据。
全文摘要
本发明公开了一种数据库表的管理方法及装置。本发明公开的方法包括基于第一数据库表建立第二数据库表,在所述第二数据库表的特定字段上创建唯一索引或者主键,其中,所述第二数据库表中特定字段的数据是所述第一数据库表中要求满足唯一性的数据,所述唯一索引或者所述主键用于保证要求满足唯一性的数据的唯一性;通过所述唯一索引或者所述主键判断所述第二数据库表中是否有与向所述第二数据库表中插入的新的数据重复的数据;若有,则插入失败,流程结束,否则,将所述新的数据插入所述第二数据库表后,继续将所述新的数据插入所述第一数据库表。通过本发明,大大提高了数据插入数据库表的效率。
文档编号G06F17/30GK101382949SQ200810172558
公开日2009年3月11日 申请日期2008年10月28日 优先权日2008年10月28日
发明者于新林 申请人:阿里巴巴集团控股有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1