关系型数据库的数据存储方法和存储系统的制作方法

文档序号:6441039阅读:260来源:国知局
专利名称:关系型数据库的数据存储方法和存储系统的制作方法
技术领域
本发明涉及数据存储技术领域,特别涉及一种关系型数据库的数据存储方法和存储系统。
背景技术
关系型数据库是建立在关系模型基础上的数据库,是目前最常用的数据库类型之一,广泛应用在各种软件系统和互联网项目中。在传统软件系统或互联网项目的构建中,在很多时候会遇到如下场景:网络中存在一个存储有海量数据的子系统B,能够提供网络运行所需的各种数据,然而由于网络布局或者数据读取速度的考虑,通常不采用直接与子系统B进行数据交互的方法,而是设置一个规模较小的子系统A,子系统A依赖于子系统B中的数据,通过对子系统A中数据的读写,实现与子系统B中数据的交互。针对如何实现上述场景中的子系统A,现有方案中还没有提出较明确的解决方案,若在每次访问子系统A时,子系统A都需要从子系统B中同步获取数据,则数据读取性能会非常低下;若采用将从子系统B中得到的数据都存储在子系统A中,由于子系统A的存储容量限制,在实际操作中的可行性非常小。

发明内容
本发明提供的一种关系型数据库的数据存储方法和存储系统,以解决现有技术中每次访问时都需要同步获取数据造成数据读取性能低下或是无法满足系统存储容量限制的问题。为达到上述目的,本发明实施例采用了如下技术方案:本发明实施例提供了一种关系型数据库的数据存储方法,该方法包括:包括两个结构相同的索引分区表,其中一个为新生代状态,另一个为旧生代状态且已存储数据表的主键,所述方法包括:将数据表的主键存入新生代状态的索引分区表中;当新生代状态的索引分区表的存储率达到填充因子时,删除原旧生代状态的索引分区表中存储的主键以及该主键对应的索引数据项,并创建新的索引分区表,设为旧生代状态,所述新的索引分区表与新生代状态的索引分区表结构相同;当新生代状态的索引分区表存储满时,将该索引分区表设置为旧生代状态,将所述新创建的索引分区表设置为新生代状态。本发明实施例还提供了一种存储系统,所述系统包括设置有存储控制装置的关系型数据库,所述关系型数据库中包括两个结构相同的索引分区表,其中一个为新生代状态,另一个为旧生代状态且已存储数据表的主键,所述存储控制装置包括设置单元、存储单元和更新剔除单元,所述存储单元,用于将数据表的主键存入新生代状态的索引分区表中;
所述更新剔除单元,用于当新生代状态的索引分区表的存储率达到填充因子时,删除原旧生代状态的索引分区表中存储的主键以及该主键对应的索引数据项,并创建新的索引分区表,设为旧生代状态,所述新的索引分区表与新生代状态的索引分区表结构相同;以及,当新生代状态的索引分区表存储满时,将该索引分区表设置为旧生代状态,将所述新创建的索引分区表设置为新生代状态。本发明实施例的有益效果是:本发明实施例采用两个结构相同的索引分区表交替进行数据存储,并将最新的数据存储在处于新生代状态的索引分区表中,实现了一种基于LRU机制的关系型数据库存储方案。利用本发明实施例的存储方案,能够较好地对网络中存储有海量数据的子系统中的数据进行筛选,仅存储该子系统中的部分数据,既满足了存储容量限制的要求,又保证了数据读取性能。


图1为本发明实施例一提供的一种关系型数据库的数据存储方法流程示意图;图2为本发明实施例二提供的一个具体应用场景的示意图;图3为本发明实施例二提供的一种存储系统的结构不意图;图4为本发明实施例三提供的一种存储控制装置结构示意图。
具体实施例方式为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。本方案的主要技术构思在于,通过对数据表的主键(Primary Key, PK)建立两个结构一致的索引分区表作为基本的数据结构,当前正执行主键存储的一个的索引分区表为处于新生代状态的索引分区表(或称之为新生代分区表),另一个索引分区表为处于旧生代状态的索引分区表(或称之为旧生代分区表)。在运行过程中,通过两个索引分区表所存储的数据的新旧角色的替换来达到数据筛选,剔除旧数据并回收相应的存储空间。参见图1,为本发明实施例一提供的一种关系型数据库的数据存储方法,该方法包括:11:设置两个结构相同的索引分区表存储数据表的主键,所述索引分区表包括第一索引分区表(如表示为LlIndex)和第二索引分区表(如表示为L2Index),在初始时,将第一索引分区表设置为新生代状态,将第二索引分区表设置为旧生代状态,下文中将处于新生代状态的索引分区表称之为新生代索引分区表,将处于旧生代状态的索引分区表称之为旧生代索引分区表。本方案并不对具体的名称进行限定,上述的“新生代”和“旧生代”指示了索引分区表中存储数据的新旧状态,新生代状态下的索引分区表存储了当前时间段内最新增加的数据以及活跃度较高的数据,而旧生代状态下的索引分区表中的数据存储了当前时间段之前的数据。为了便于清楚描述本发明实施例的技术方案,在发明的实施例中,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分,本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定。本发明实施例中仍以存储海量数据的子系统B和规模较小且依赖于子系统B的子系统A的场景进行说明,其中,子系统A上具有关系型数据库(如Mysql),关系型数据库中的数据以行和列的形式存储,一组行和列构成一个数据表,由一个或多个数据表构成关系型数据库。在该关系型数据库中使用了本方案的数据存储方法。当存储的数据为涉及用户资料的数据时,数据表中存储用户资料(UserInf0),数据表的主键为用户标识(Userid)。这时,所设置的索引分区表中存储Userid,索引分区表自身的索引分区表主键表示为Id。参见表I,数据表中存储的UserInfo可以包括姓名(Name)、性别(Gender)、生日(Birthday)、移动电话(Mobile)、公司(Company)、血型(Blood)、主页(Homepage)、电子邮件(Email)、其他信息(OtherInfo)等内容。表I
权利要求
1.一种关系型数据库的数据存储方法,其特征在于,包括两个结构相同的索引分区表,其中一个为新生代状态,另一个为旧生代状态且已存储数据表的主键,所述方法包括: 将数据表的主键存入新生代状态的索引分区表中; 当新生代状态的索引分区表的存储率达到填充因子时,删除原旧生代状态的索引分区表中存储的主键以及该主键对应的索引数据项,并创建新的索引分区表,设为旧生代状态,所述新的索引分区表与新生代状态的索引分区表结构相同; 当新生代状态的索引分区表存储满时,将该索引分区表设置为旧生代状态,将所述新创建的索引分区表设置为新生代状态。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:在初始时,创建两个结构相同的空的索引分区表,设置其中一个为新生代状态,另一个为旧生代状态; 将数据表主键先存入新生代状态的索引分区表中; 当新生代状态的索引分区表存储满时,将该索引分区表设置为旧生代状态,原旧生代状态的索引分区表设置为新生代状态。
3.根据权利要求1或2所述的方法,其特征在于,为索引分区表设置极限因子,通过如下方式获知新生代状态的索引分区表存储满: 当新生代状态的索引分区表的存储率达到极限因子时,获知新生代状态的索引分区表已存储满。
4.根据权利要求3 所述的方法,其特征在于,所述方法还包括: 每隔预定时间检测新生代状态的索引分区表的存储率; 判断所述新生代状态的索引分区表的存储率达到填充因子包括: 根据检测结果判断该索引分区表的存储率是否达到填充因子;以及, 判断所述新生代状态的索引分区表存储满包括: 根据检测结果判断该索引分区表的存储率是否达到极限因子。
5.根据权利要求4所述的方法,其特征在于,所述索引分区表自身的索引分区表主键由依次递增的数值构成,所述每隔预定时间检测新生代状态的索引分区表的存储率包括 每隔预定时间检测新生代状态的索引分区表中最后一个索引分区表主键的数值,根据该索引分区表主键的数值获知该索引分区表的存储率。
6.根据权利要求4所述的方法,其特征在于,所述方法还包括: 根据接收到的调整指示,调整填充因子、极限因子、和/或所述预定时间的数值。
7.根据权利要求3所述的方法,其特征在于,所述方法还包括: 当删除所述主键对应的索引数据项时,若该索引数据项中包括正在被使用的第一索引数据项,则保留该第一索引数据项,并将第一索引数据项对应的主键从旧生代状态的索引分区表中写入新生代状态的分区表中;以及, 当旧生代状态的索引分区表中的数据被访问时,将被访问的数据转移至新生代状态的索引分区表中。
8.根据权利要求3所述的方法,其特征在于,所述索引分区表中为数据表的每一主键设置有时间戳信息,所述方法还包括: 当数据表的主键所对应的索引数据项发生变化时,索引分区表中更新该数据表主键所对应的时间戳信息。
9.一种存储系统,其特征在于,所述系统包括设置有存储控制装置的关系型数据库,所述关系型数据库中包括两个结构相同的索引分区表,其中一个为新生代状态,另一个为旧生代状态且已存储数据表的主键,所述存储控制装置包括存储单元和更新剔除单元, 所述存储单元,用于将数据表的主键存入新生代状态的索引分区表中; 所述更新剔除单元,用于当新生代状态的索引分区表的存储率达到填充因子时,删除原旧生代状态的索引分区表中存储的主键以及该主键对应的索引数据项,并创建新的索引分区表,设为旧生代状态,所述新的索引分区表与新生代状态的索引分区表结构相同;以及,当新生代状态的索引分区表存储满时,将该索引分区表设置为旧生代状态,将所述新创建的索引分区表设置为新生代状态。
10.根据权利要求9所述的系统,其特征在于,所述系统还包括定时服务器, 所述定时服务器,用于每隔预定时间检测新生代分区表的存储率是否达到的填充因子,并将检测结果通知所述更新剔除单元;以及, 所述定时服务器,还用于每隔预定时间检测新生代状态的索引分区表的存储率,判断该索引分区表的存储率是否达到极限因子,并将检测结果通知更新剔除单元;所述更新剔除单元,用于当新生代状态的索引分区表的存储率达到极限因子时,确认新生代状态的索引分区表存储 满。
全文摘要
本发明公开一种关系型数据库的数据存储方法和存储系统,既能满足存储容量限制的要求,又保证了数据读取性能。本发明实施例提供的数据存储方法包括两个结构相同的索引分区表,其中一个为新生代状态,另一个为旧生代状态且已存储数据表的主键,所述方法包括将数据表的主键存入新生代状态的索引分区表中;当新生代状态的索引分区表的存储率达到填充因子时,删除原旧生代状态的索引分区表中存储的主键以及该主键对应的索引数据项,并创建新的索引分区表,设为旧生代状态,所述新的索引分区表与新生代状态的索引分区表结构相同;当新生代状态的索引分区表存储满时,将该索引分区表设置为旧生代状态,将所述新创建的索引分区表设置为新生代状态。
文档编号G06F17/30GK103164431SQ20111041513
公开日2013年6月19日 申请日期2011年12月13日 优先权日2011年12月13日
发明者国兴旺 申请人:北京神州泰岳软件股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1