一种关系型数据库自动划分方法的设计

时间:2022-10-13 01:45:47

一种关系型数据库自动划分方法的设计

摘 要:随着互联网、物联网的发展,软件系统收集和产生了海量的数据,单个数据库由于各种限制已经无法满足海量数据存储和访问的要求,必须将数据分散在多个数据库中,以达到存储海量数据、平衡负载、提高系统可用性的目的。如何将单个数据库中的数据划分到不同的数据库中成为数据库管理员面临的首要问题。本文提出一种综合考虑SQL语句、SQL语句执行频率,服务器性能,数据量等多因素的数据库划分方法,满足数据存储和访问要求,从而为数据库设计人员划分数据库提供帮助。

关键字:海量数据;关系数据库;划分

中图分类号:TP311.138

随着互联网、物联网的发展,产生了越来越多的TB级别的数据。虽然研发出能够满足海量数据的存储和访问要求NOSQL数据库,但是NOSQL数据库不能够满足原子性、一致性、隔离性、持久性的要求[1],所以系统中关键、核心的数据依然必须存放在关系型数据库中。在通常情况下,关系型数据库中存放的数据量受到数据库自身、存储设备、扩展性和系统性能的限制,单个关系型数据库中存放的数据量是有限的,无法满足海量数据存储和访问的要求。必须将数据分散在多个数据库中,将这些数据库作为一个整体为应用提供服务,以达到存储海量数据、平衡负载、提高系统可用性的目的。

将数据库中的数据分配到不同服务器的主要方法是垂直划分和水平划分[2]。水平数据划分是基于数据库表的数据量,若表的数据量超出了单个数据库的容量,则需要将该表中的数据拆分到不同的数据库中。垂直数据划分是基于数据库中表与表之间的关系,若某几张表之间的联系非常紧密,则需要将这些表存放在相同的数据库中[3]。

数据库管理员划分数据库时,虽然会同时使用水平数据划分和垂直数据划分的理念,但是没有特别有效地方法给予适当的指导,使得数据的划分在很大程度上依赖数据库管理员的经验以及大量的测试。在划分的过程中,通常为了获得良好的系统性能,数据库管理员必须频繁更改数据库设计和测试,这样即浪费大量的时间和精力,又不一定能够获得良好的效果。在现有的数据库划分方法研究中,都是基于某次操作代价或者数据库本身的主外键关系,考虑的方面较为单一,不能综合考虑到程序运行时状态、充分发挥服务器和数据库的性能。正是由于这样的问题,使得这些方法缺乏普适性,不具有推广和应用的价值。

1 数据库自动化分方法概述

针对上述问题,本文提出一种综合考虑各种影响数据库切分的因素,如SQL语句、SQL语句的执行频率、表数据量信息、服务器的配置信息、数据库信息,通过一定的估算,自动生成数据库各表之间的依赖关系、数据库划分建议,帮助数据库管理人员做数据库的划分。同时考虑到在数据库划分之后,数据库管理员还需要修改大量已有的SQL语句、分配机器,为了缓解数据库管理员的负担,该算法还提供自动生成每个数据库的建表语句的功能。该算法的大致流程如图1所示:

2 算法主要考虑的因素

影响数据库切分的因素主要分为五类大类,分别是SQL语句、SQL语句的执行频率、表数据量信息、服务器的配置信息、数据库信息。下边介绍这些因素与该算法的关系。

2.1 SQL语句

SQL是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统[4]。SQL语句,它反映数据库表与表之间,表中字段的值之间的静态关系。在该算法中,主要使用SQL语句分为两大类:

2.1.1 SQL建表语句

SQL语句的建表语句主要用于创建数据库中的表。建表语句即包含反应表与表之参照完整的主外键关系,也包含了反应表中字段中的取值的关系。主外键关系在数据库执行insert、update、delete语句时,会被使用到;段中的取值的关系unique,在数据库执行insert语句时会被使用到。

2.1.2 SQL函数、存储过程、触发器、程序中的SQL语句

SQL函数、存储过程、触发器、程序中的SQL语句主要用于操作数据库中的数据。它们包含的join语句反映了表与表之间关系[5]。

2.2 SQL语句的执行频率

SQL语句在程序的运行过程当中,会被不断地调用,SQL语句执行的频率,在一定程度上反映数据库运行时表与表之间,表中字段的值之间的动态关系。一般情况下,某个SQL语句的执行次数越多,则包含在该SQL语句中的表之间的联系越紧密。

2.3 表数据量信息

预估的数据量,即数据库所需要承载的数据量的大小,也反映了涉及该表的SQL语句的执行时间。当一个表的数据量超过了单个数据库所能容纳的最大限度时,则需要对其进行水平切分,将同一个表中的数据放到其他的数据库中。如果一个表的数据量越大,则涉及该表的SQL语句的执行时间的操作时间越长。

2.4 数据库信息

数据库种类信息,反映了数据库的性能。它要包括数据库种类和数据库配置信息两类。不同的数据库有着不同的句法规则、不同的数据读写方式,所以在分析SQL语句语法规则和SQL语句执行代价时,必须明确数据库的种类。相同的数据库,在不同配置的情况下,能够发挥出的性能也是不同的,所以数据库的配置在一定程度上决定了数据库的性能,合理的配置数据库,可以提高数据库的性能。

2.5 服务器的配置信息

服务器配置信息,反映了服务器性能的强弱。在配置信息中,起到决定性左右的是CPU,内存和硬盘。CPU决定了服务器处理指令的能力,内存决定了数据库可以使用的缓存的大小,硬盘决定了数据库中可以存储的数据量的多少。

3 算法的主要流程详解

3.1 配置相应的参数

将影响数据库切分的主要因素,写成相应的配置文件输入到系统中。

3.2 生成主外键关系矩阵和特殊数据项表

上一篇:美国商业长期护理保险的发展及其启示 下一篇:Web技术发展及对人们使用互联网带来的现实意义