数据库重构:让数据存储更高效 (数据库的重构造)

随着IT技术的不断发展,数据量的不断增加,如何有效地存储这些庞大的数据成为了企业面临的重要问题。数据库作为一个存储和管理企业数据的重要工具,发挥着极为重要的作用,因此对其进行优化和重构尤为重要。本文将阐述数据库重构的概念、目的及方法,并探讨其对数据存储的提升作用。

一、什么是数据库重构?

数据库重构是指对现有的数据库进行优化和改进,以减少资源的浪费、提升数据库的性能及安全性。数据库重构是一种全面的优化技术,可以通过对数据库的物理结构、逻辑结构和数据的效率进行优化,使其更加高效的管理数据。

在进行重构时,需要考虑到数据类型、数据的频繁更新、查询效率,同时还要考虑到数据本身的特点,如存储容量、结构和访问模式等因素。

二、数据库重构的目的

1.提升数据存储效率

大多数企业在应对增加的数据量时,往往采用增加存储设备的方法,但其实通过数据库重构的方式可以大幅提升数据库的存储效率。重构可以消除重复数据、优化数据结构,使得数据存储更加紧凑,因而能够更加高效地管理海量数据。

2.增强数据安全性

数据库重构可以有效地保护数据安全。通过重构,可以剔除掉冗余数据,防止出现数据错误和泄露。同时,可加强数据库的安全性,防止出现数据被攻击、入侵等情况。

3.提升数据处理效率

数据库重构可以大幅提升数据库的处理效率,这对于企业来说尤为重要。通过对数据库结构和存储方式进行优化,可以提高数据处理的速度,使企业的数据更加稳定和快速的运行。

三、数据库重构的方法

1.对数据库逻辑结构进行改进

对于现有的数据库,逻辑结构通常是不完备的。为了提高数据处理效率,数据库重构的之一步就是改进数据库的逻辑结构,使其更加高效。

2.对数据库物理结构进行改进

数据库物理结构的改进通常包括以下几个方面:

a.文件系统

文件系统是影响数据库性能的关键因素之一。通过进行文件系统的优化,可以让数据库更加高效地运行。

b.物理数据结构

物理数据结构是存储数据的一种方式,数据库重构可以通过改进物理数据结构来达到优化的效果。

c.缓存技术

缓存技术是数据库中的重要一个方面,对于大规模数据的计算,缓存技术的使用能够大幅提高数据的处理速度。

3.对数据本身进行优化

除了对结构的优化,重构也需要对数据本身进行优化。例如,可以通过数据分片的方式来提高数据查询的效率。

四、

数据库是企业中极为重要的一部分。通过对其进行重构,能够大幅提高数据库的性能和安全性,同时也能够让企业更加高效地管理海量数据。因此,较为理性的互联网公司一定要注重数据库重构这个问题,尽量使自己在数据库方面更加高效,以获得更好的长期发展。

相关问题拓展阅读:

数据库如何创建视图

视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。

对其中所引用的基础表来说,视图的作用类似于筛选。定义视图的筛选可以来自当前或其它数据库的一个或多个表,或者其它视图。通过视图进行查询没有任何限制,通过它们进行数据修改时的限制也很少。

视图是存储在数据库中的查询的SQL 语句,它主要出于两种原因:安全原因, 视图可以隐藏一些数据,如:社会保险基金表,仿早可以用视图只显示姓名,地址,而不显示社会保险号和工资数等,另一原因是可使复杂的查询易于理解和使用。这个视图就像一个“窗口”,从中只能看到你想看的数据列。这意味着你可以在这个视图上使用SELECT *,而你看到的将是你在视图定义里给出的那些数据列:

既然视图的定义是基于基本表的,哪为什么还要定义视图呢?这是因为合理地使用视图能够带来许多好处:

1、 视图能简化用户操作

视图机制使用户可以将注意力集中在所关心地数据上。如果这些数据不是直接来自基本表,则可以通过定义视图,使数据库看起来结构简单、清晰,并且可以简化用户的的数据查询操作。例如,那些定义了若干张表连接的视图,就将表与表之间的连接操作对用户隐藏起来了。换句话说,用户所作的只是对一个虚表的简单查询,而这个虚表是怎样得来的,用户无需了解。

2、 视图使用户能以多种角度看待同一数据

视图机制能使不同的用户以不同的方式看待同一数据,当许多不同种类的用户共享同一个数据库时,这种灵活性是非常必要的。

3、 视图对重构数据库提供了一定程度的逻辑独立性

数据的物理独立性是指用户的应用程序不依赖于数据库的物理结构。数据的逻辑独立性是指当数据库重构造时,如增加新的关系或对原有的关系增加新的字段,用户的应用程序不会受影响。层次数据库和网状数据库一般能较好地支持数据的物理独立性,而对于逻辑独立性则不能完全的支持。

在关许数据库中,数据库的重构造往往是不可避免的。重构数据库最常见的是将一个基本表“垂直”地分成多个基本表。例如:将学生关系Student(Sno,Sname,Ssex,Sage,Sdept),

分为SX(Sno,Sname,Sage)和SY(Sno,Ssex,Sdept)两个关系。这时原表Student为SX表和SY表自然连接的结果。如果建立一个视图Student:

  view plain  copy

CREATE VIEW Student(Sno,Sname,Ssex,Sage,Sdept)AS SELECT SX.Sno,SX.Sname,SY.Ssex,SX.Sage,SY.Sdept FROM SX,SY WHERE SX.Sno=SY.Sno;  

这样尽管数据库的逻辑结构改变了(变为SX和SY两个表了),但应用程序不必修改,因为新建立的视图定义为用户原来的关系,使用户的外模式保持不变,用户的应用程序通过视图仍然能够查找数据。

当然,视图只能在一定程度上提供数据的逻辑独立,比如由于视图的更新是有条件的,因此应用程序中修改数据的语句可能仍会因为基本表构造的改变而改变。

4、视图能够对机密数据提供安全保护

有了视图机制,就可以在设计数据库应用系统时,对不同的用户定义不同的视图,使机密数据不出现在不应该看到这些数据的用户视图上。这样视图机制就自动提供了对机密数据的安全保护功能。例如,Student表涉及全校15个院系学生数据,可以在其上定义15个视图,每个视图只包含一个院系的学生数据,并只允许每个院系的主任查询和修改本原系学生视图。

5、备迹雀适当的利用视图可以更清晰地表达查询

例如经常需要执行这样的查询“对每个学生找出他获得更高成绩的课程号”。可以先定义一个视图,求出每个同学获得的更高成绩:

  view plain  copy

CREATE VIEW VMGRADE  

AS  

SELECT Sno,MAX(Grade) Mgrade  

FROM SC  

GROUP BY Sno  

然后用如下的查询语句完成查询:

  view plain  州陆copy

SELECT SC.Sno,Cno FROM SC,VMGRADE WHERE SC.Sno = VMGRADE.Sno AND SC.Grade = VMGRADE.Mgrade;  

二、数据准备

1、员工表

  view plain  copy

CREATE TABLE t_employee(  

ID INT  PRIMARY KEY  AUTO_INCREMENT,  

NAME CHAR(30) NOT NULL,  

SEX  CHAR(2) NOT NULL,  

AGE INT NOT NULL,  

DEPARTMENT CHAR(10) NOT NULL,  

SALARY  INT NOT NULL,  

HOME CHAR(30),  

MARRY CHAR(2) NOT NULL DEFAULT  ‘否’,

HOBBY CHAR(30)  

);  

插入数据:

  view plain  copy

INSERT INTO learning.t_employee(ID, NAME, SEX, AGE,DEPARTMENT, SALARY, HOME, MARRY, HOBBY) VALUES(NULL,’小红’,’女’,20,’人事部’,’4000′,’广东’,’否’,’网球’);  

INSERT INTO learning.t_employee(ID, NAME, SEX, AGE,DEPARTMENT, SALARY, HOME, MARRY, HOBBY) VALUES(NULL,’明日’,’女’,21,’人事部’,’9000′,’北京’,’否’,’网球’);  

INSERT INTO learning.t_employee(ID, NAME, SEX, AGE,DEPARTMENT, SALARY, HOME, MARRY, HOBBY) VALUES(NULL,’天天’,’男’,22,’研发部’,’8000′,’上海’,’否’,’音乐’);  

INSERT INTO learning.t_employee(ID, NAME, SEX, AGE,DEPARTMENT, SALARY, HOME, MARRY, HOBBY) VALUES(NULL,’大大’,’女’,23,’研发部’,’9000′,’重庆’,’否’,’无’);  

INSERT INTO learning.t_employee(ID, NAME, SEX, AGE,DEPARTMENT, SALARY, HOME, MARRY, HOBBY) VALUES(NULL,’王下’,’女’,24,’研发部’,’9000′,’四川’,’是’,’足球’);  

INSERT INTO learning.t_employee(ID, NAME, SEX, AGE,DEPARTMENT, SALARY, HOME, MARRY, HOBBY) VALUES(NULL,’无名’,’男’,25,’销售部’,’6000′,’福建’,’否’,’游戏’);  

INSERT INTO learning.t_employee(ID, NAME, SEX, AGE,DEPARTMENT, SALARY, HOME, MARRY, HOBBY) VALUES(NULL,’不知道’,’女’,26,’销售部’,’5000′,’山西’,’否’,’篮球’);  

插入的结果:

请点击输入图片描述

然后再定义一张员工信息表:

  view plain  copy

create TABLE t_employee_detail(  

ID INT PRIMARY KEY,  

POS CHAR(10) NOT NULL,  

EXPERENCE CHAR(10) NOT NULL,  

CONSTRAINT `FK_ID` FOREIGN KEY(ID) REFERENCES t_employee(ID)  

)  

插入如下:

  view plain  copy

INSERT INTO t_employee_detail(ID,POS,EXPERENCE) VALUES(1,’人事管理’,’工作二年’);  

INSERT INTO t_employee_detail(ID,POS,EXPERENCE) VALUES(2,’人事招聘’,’工作二年’);  

INSERT INTO t_employee_detail(ID,POS,EXPERENCE) VALUES(3,’初级工程师’,’工作一年’);  

INSERT INTO t_employee_detail(ID,POS,EXPERENCE) VALUES(4,’中级工程师’,’工作二年’);  

INSERT INTO t_employee_detail(ID,POS,EXPERENCE) VALUES(5,’高级工程师’,’工作三年’);  

INSERT INTO t_employee_detail(ID,POS,EXPERENCE) VALUES(6,’销售代表’,’工作二年’);  

INSERT INTO t_employee_detail(ID,POS,EXPERENCE) VALUES(7,’销售员’,’工作一年’);  

内容:

请点击输入图片描述

三、使用案例

1. 语法

CREATE VIEW view_name AS select_statement CHECK OPTION>

通过该语句可以创建视图,若给定了,则表示当已具有同名的视图时,将覆盖原视图。select_statement是一个查询语句,这个查询语句可从表或其它的视图中查 询。视图属于数据库,因此需要指定数据库的名称,若未指定时,表示在当前的数据库创建新视图。

表和数据库共享数据库中相同的名称空间,因此,数据库不能包含相同名称的表和视图,并且,视图的列名也不能重复。

在创建视图前应先看看是否有权限:

  view plain  copy

SELECT SELECT_priv,create_view_priv from mysql.user WHERE user=’root’  

Y表示有创建的权限

请点击输入图片描述

2、单表上创建视图

在员工表是创建视图

  view plain  copy

CREATE VIEW V_VIEW1(ID, NAME, SEX, AGE,DEPARTMENT) AS SELECT ID, NAME, SEX, AGE,DEPARTMENT FROM learning.t_employee;  

然后是显示内容:

  view plain  copy

SELECT * FROM V_VIEW1  

请点击输入图片描述

3、多表上创建视图

  view plain  copy

CREATE VIEW V_VIEW2(ID, NAME, SEX, AGE,DEPARTMENT,POS,EXPERENCE) AS SELECT a.ID, a.NAME, a.SEX, a.AGE,a.DEPARTMENT,b.POS,b.EXPERENCE FROM learning.t_employee a,learning.t_employee_detail b WHERE a.ID=b.ID;  

显示结果 

  view plain  copy

SELECT * FROM V_VIEW2  

请点击输入图片描述

4、查看视图

(1)DESCRIBE 命令

  view plain  copy

DESCRIBE V_VIEW2  

请点击输入图片描述

(2)SHOW TABLE STATUS 

  view plain  copy

show TABLE status LIKE ‘V_VIEW2’  

请点击输入图片描述

(3)SHOW CREATE view命令

  view plain  copy

show CREATE view V_VIEW2  

请点击输入图片描述

5、修改视图

(1)CREATE OR REPLACE命令

  view plain  copy

CREATE OR REPLACE VIEW V_VIEW1(ID, NAME, SEX) AS SELECT ID, NAME, SEX  FROM learning.t_employee;  

请点击输入图片描述

(2) ALTER 命令

  view plain  copy

ALTER VIEW  V_VIEW1(ID, NAME) AS SELECT ID, NAME  FROM learning.t_employee;  

SELECT * FROM learning.v_view1  

请点击输入图片描述

6、更新视图

在MySQL中,更新视图是指通过视图来插入(INSERT)、更新(UPDATE)和删除(DELETE)表中的数据。因为视图是一个虚拟表,其中没有数据,所以通过视图更新时,都是转换到基本表来更新。

更新视图时,只能更新权限范围内的数据。超出了范围,就不能更新。

更新前:

请点击输入图片描述

更新后:

  view plain  copy

UPDATE V_VIEW2 SET POS=’高级工程师’ WHERE NAME=’天天’  

请点击输入图片描述

对应 的真实表上的数据也发生改变 了

  view plain  copy

SELECT * FROM learning.t_employee_detail WHERE t_employee_detail.ID=3  

请点击输入图片描述

不可更新的视图:

某些视图是可更新的。也就是说,可以在诸如UPDATE、DELETE或INSERT等语句中使用它们,以更新基表的内容。对于可更新的视图,在视图中的行和基表中的行之间必须具有一对一的关系。还有一些特定的其他结构,这类结构会使得视图不可更新。更具体地讲,如果视图包含下述结构中的任何一种,那么它就是不可更新的:

· 聚合函数(SUM(), MIN(), MAX(), COUNT()等)。

· DISTINCT

· GROUP BY

· HAVING

· UNION或UNION ALL

· 位于选择列表中的子查询

· Join

· FROM子句中的不可更新视图

· WHERE子句中的子查询,引用FROM子句中的表。

· 仅引用文字值(在该情况下,没有要更新的基本表)。

· ALGORITHM = TEMPTABLE(使用临时表总会使视图成为不可更新的)。

注意

视图中虽然可以更新数据,但是有很多的限制。一般情况下,更好将视图作为查询数据的虚拟表,而不要通过视图更新数据。因为,使用视图更新数据时,如果没有全面考虑在视图中更新数据的限制,就可能会造成数据更新失败。

CASCADED和LOCAL能不能决定视图是否能更新?

WITH CHECK OPTION能不能决定视图是否能更新?这两个参数的基本定义如下:

LOCAL参数表示更新视图时只要满足该视图本身定义的条件即可。

CASCADED参数表示更新视图时需要满足所有相关视图和表的条件。没有指明时,该参数为默认值。

With check option的用法:

(with check option对于没有where条件的视图不起作用的)

  view plain  copy

CREATE VIEW V_VIEW3(ID, NAME,SEX,AGE,DEPARTMENT,SALARY, HOME, MARRY, HOBBY) AS SELECT ID, NAME, SEX,AGE,DEPARTMENT,SALARY,HOME,MARRY,HOBBY FROM learning.t_employee WHERE DEPARTMENT=’人事部’ WITH LOCAL CHECK OPTION;  

表示只限定插入部门为人事部的人。

请点击输入图片描述

然后插入一条:

  view plain  copy

INSERT INTO learning.V_VIEW3(ID, NAME, SEX, AGE,DEPARTMENT, SALARY, HOME, MARRY, HOBBY) VALUES(NULL,’会会会会’,’女’,20,’人事部’,’4500′,’广东’,’否’,’网球’);  

看下结果:

  view plain  copy

SELECT * FROM learning.V_VIEW3  

请点击输入图片描述

同时看真实表中的数据:

请点击输入图片描述

再来插入一条:

  view plain  copy

INSERT INTO learning.V_VIEW3(ID, NAME, SEX, AGE,DEPARTMENT, SALARY, HOME, MARRY, HOBBY) VALUES(NULL,’qqqqvasvas’,’女’,20,’研发部’,’4500′,’上海’,’否’,’网球’);  

请点击输入图片描述

结果显示插入失败

对于with check option用法,总结如下:

通过有with check option选项的视图操作基表(只是面对单表,对连接多表的视图正在寻找答案),有以下结论: 插入后的数据,通过视图能够查询出来就符合WITH CHECK OPTION 否则就不符合;

首先视图只操作它可以查询出来的数据,对于它查询不出的数据,即使基表有,也不可以通过视图来操作。

1.对于update,有with check option,要保证update后,数据要被视图查询出来

2.对于delete,有无with check option都一样

4.对于insert,有with check option,要保证insert后,数据要被视图查询出来

对于没有where 子句的视图,使用with check option是多余的

7、删除视图

  view plain  copy

DROP VIEW IF EXISTS 视图名  

创建视图的理想步骤:

一般来说,视图创建可以分为五步走:

之一步:先考虑select语句的编写。我们知道,视图其实就是一个select语句的,所以,我们建立视图的之一步,就是考虑这个select语句的如何编写。这个select语句编写的是否合理,执行效率的高低直接影响着这个视图的性能,在Select语句中,可能还会有格式的控制、内容的编排等等。如在Select语句中,可以把一些字段合并成一个字段;也可以把相关的内容进行倒置等等。这些功能都是Select语句完成的。所以可以这么说,Select语句的编写是视图建立的基础。

第二步:对这个Select语句进行测试。当我们编写好Select语句之后,就需要在数据库中执行这条语句,看其能否查询到我们想要的值。在对

Select语句进行测试的时候,需要注意一个问题,有时候Select查询语句可以查到准确的数据,但是在以这条语句建立视图的时候,可能就会通不过。

如在一些表之间的连接查询的时候,如果两个表中有个字段名相同,是可以的。因为他们除了字段名字之外,还有表名一起来定义这个字段。如A.name与

B.name。这是不算重名的。但是,若在建立视图的时候,这就会被认为是重复的列明,需要对其中的一个列名进行重定义。这一点在数据库视图建立的时候,

要特别的注意。

 第三步:考虑查询结果的准确性。通过查询语句把我们想要的结果查询出来后,我们就需要看看这个液稿肆结果是否满足我们的需要。在这个过程中,我们主要注意两

点。一是形式字段是否齐全。在一些应用系统中,若数据库的视图要能够被前台的

应用程序

调用的话,则必须包含一些形式字段。如笔者以前在设计一个

ERP系统

的时候,若前台系统要调用数据库中的视图的时候,必须包含记录更新时间、更新者、记录创建时间、创建者等相关信息。若缺乏这些信息的话,则前台

调用这张视图的时候,就会出现错误。故在考虑查询结果准确性的问题的时候,就要考虑到前台应用程序的需要,看看这些形式字段是否齐全。二是实体内容的完整

若字段内容显示不足的话,则以后要添加字段的话,会比较麻烦,有一定的工作量。所以在这个检验的时候,需要根据视图的实际功用,确定视图需要显示的内容。

第四步:视图的修饰。有时候,为了阅读的方便,我们需要对查询结果进行一些修饰。如现在有两张表,一张是员工基本信息表,这表中有员工姓名、员工职位编号

等等;另一张表是职位基本信息表,在这表中有职位编号、职位名称。我们希望在视图中能够如下显示:“职位:员工名字”,如

数据库工程师

:Victor。也

就是说,把两个字段合并起来,并且在中间加入一个冒号敬敏。这些格式性的内容都是在查询的时候实现的。所以,我们确认查询的结果没有错误之后,接下来就要确认

格式问题。若能够在视图中规范这些格式问题,则前台的程序设计就会相对来说比较简单

 第五步:建立视图。等到上面四步都确认无误后,我们就要根据上面闹轿的查询语句来建立视图了。不过在这一步过程中,也有一些问题需要注意。一是视图名字的命

名规格。我们除了遵循数据库的强制命名格式之外,如不能以数字开头等等,还需要遵循一些软规则。如视图更好能够以V开头,跟基础表进行隔开;另外在视图命

名中,能够根据应用模块的不同,来进行分类,并体现在视图的名字中。这对于我们后续视图的查找都具有非常现实的意义。二是虽然可以在视图中直接更新基础

表,不过,为了安全与数据统一的考虑,我们这些过来人一般都不建议通过视图来直接更新基础表中的数据。虽然数据库提供了类似的功能。若要更改相关数据的

什么是数据库系统的体系结构?

数据库系统的体系结构是指数据库系统的整个体系的结构。数据库系统和镇孙的体系结构从不同的角度可有不同的划分方式。从数据库管理系唤链统的角度可分为三层,从外到内依次为外模式、模式和内模式。模式是所有数据库用户的公共数据视图,是数据库中全部数据的逻辑结构和特征的描述。模式(schema)又可细分为概念模式(conceptual schema)和逻辑模式旅袭(109ical schema)。

希望对你有帮助。

三级结构的组织形式称为数据库的体系结构或数据抽象的三个级别。这个结构是于1975年在美国ANSI/X3/SPARC(美国国家标准协会的计算机与信息处理委员会中的标准计划与需求委员会)数据库小组的报告中提出的。

  1.1.4.1三级数据视图

  数据抽象的三个级别又称为三级数据视图,是不同层次用户(人员)从不同角度所看到的数据组织形式。

  (1) 外部视图 之一层的数据组织形式是面向应用的,是应用程序员开发应用程序时所使用的数据组织形式,是举皮物应用程序员所看到的数据的逻辑结构,是用户数据视图,称为外部视图。外部视图可有多个。这一层的更大特点是以各类用户的需求为出发点,构造满足其需求的更佳逻辑结构。

  (2) 全局视图 第二层的数据组织形式是面向全局应用的,是全局数据的组织形式,是数据库管理人员所看到的全体数据的逻辑组织形式,称为全局视图,全局视图仅有一个。这一层的特点是对全局应用更佳的逻辑结构形式。

  (3) 存储视图 第三层的数据组织形式是面向存储的,是按照物理存储更优的策略所组织形式,是系统维护人员所看到的数据结构,称为存储视图。存储视图只有一个。这一层的特点是物理存储更佳的结构形式。

外部视图是全局视图的逻辑子集,全局视图是外部视图的逻辑汇总和综合,存储视图是全局视图的具体实现。三级视图之间的联系由二级映射实现。外部视图和全局视图之间的映射称为逻辑映射,全局视图和存储视图之间的映射称为物理映射。

  1.1.4.2 三级模式

  三级视图是用图、表等形式描述的,具有简单、直观的优点。但是,这种形式目前还不能被计算机直接识别。为了在计算机系统中实现数据的三级组织形式,必须用计算机可以识别的语言对其进行描述。DBMS提供了这种数据描述语言(Data Description Language 简记为DDL)。我们称用DDL精确定义数据视图的程序为模式(Scheme)。与三级视图对应的是三级模式。

  (1) 子模式  定义外部视图的模式称外模式,也称子模式。它由对用户数据文件的逻辑结构描述以及和全局视图中文件的对应关系的描述组成,用DBMS提供的子模式DDL定义。一个子模式可以由多个用户正液共享,而一个用户只能使用一个子模式。

  (2) 模式  定义全局视图的模式称逻辑模式,简称模式。它由对全局视图中全体数据文件的逻辑结构描述以及和存储视图中文件的对应关系的描述组成,用DBMS提供的模式DDL定义。逻辑结构的描述包括记录的型(组成记录的数据项名、类型、取值范围等),还有记录之间的联系,数据的完整性、安全保密要求等。

  (3) 内模式  定义存储视图的模式称内模式,又称物理模式。它由对存储视图中全体数据文件的存储结构的描述和对存储介质参数的描述组成,用DBMS提供的内模式DDL定义。存储结构的描述包括记录值的存储方式(顺序存储、hash方法、B树结构等),索引的组织方式等。

三级模式的结构如图1.8所示。

  三级模式所描述的仅仅是数据的组织框架,而不是数据本身。在内模式这个框架填上具体数据就构成物理数据库,它是外部存储器上真实存在的数据。模握乎式框架下的数据是概念数据库,它仅是物理数据库的逻辑映像。子模式框架下的数据是用户数据库,它是概念数据库的逻辑子集。

所谓三层体系结构,是在客户端与数据库之间加入了一个中间层。三层体系不是指物吵宽手理上的三层,不是简单地放置三台机器就是三层体系,三层是指逻辑上的三层,即使这三个层放置到一台机器上。三层体系结构的应用程序将业务规则、数据访问、合法性校验等工作放到了中间层进行处理。通常情况下,客户端不直接与数据库升嫌进行交互,而是通过与中间层通讯建立连接,再经由中间层与数据库进行交互。

在基于B/S的三层体系结构中,表示层、中间层、数据层被分割成三个相对独立的单元。

表示层(Browser)位于客户端,一般没有应用程序,借助于Javaapplet、Actives、Javascript、vbscript等技术可以处理一些简单的客户端处理逻辑。它负责由Web浏览器向网络上的Web服务器(即中间层)发出服务请求,把接受传来的运行结果显示在Web浏览器上。

中间层(WebServer)是用户服务和数据服务的逻辑桥梁。它负责接受远程或本地的用户请求,对用户身份和数据库存取权限进行验证,运用服务器脚本,借助于中间件把请求发送到数据库服务器(即数据层),把数据库服务器返回的数据经过逻辑处理并转换成HTML及各种脚本传回客户端。

数据层(DBServer)位于更底层,它负责管理数据库,接受Web服务器对数据库操纵的请求,实现对数据库查询、修改、更新等功能及相关服务,并把结果数据提交给Web服务器。

在三层结构中,数据计算与业务处理集中在中间层,只有中间层实现正式的进巧猛程和逻辑规则。

. 数据库系统的软件主要包括:

(1) 数据库管理系统,DBMS是为数据库的建立、使用和维护配置的软件。

(2) 支持DBMS运行的操作系统。

(3) 具有与数据库接口的高级语言及其中碰编译系统,便于开发应用程序。

(4) 以DBMS为核心的应用开发工具。

(5) 为特定应用环境开发的数据库应用系统。

2. 整个数据库系统对硬件资源提出了较高的要求:

(1) 为了存放操作系统、DBMS的核心模块、数据缓冲区和应用程序,需要足够大的内存。

(2) 要有足够大的磁盘等直接存取设备存放数据库,有足够的磁带(或软盘)用于数据备份。

(3) 系统要提供较高的通道能力,以提高数据传送率。

3. DBA的重要职责是保证数据库的安全性和完整性。因此DBA负责确定各个用户对数据库的存取权限、数据的保密级别和完整性约束条件;DBA还有一个重要职责就是监视数据库系统的运行情况,及时处理运行过程中出现的问题。比如系统发生各种故障时,数据库会因此遭到不同程度的破坏,DBA必须在最短时间内将数据库恢复到正确状态,并尽可能不影响或少影响计算机系统其他部分的正常运行,DBA要定期对数据库进行重组织,以提高系统的性能;当用户的需求增加和改变时,DBA还要对数据库进行较大的改造,包括修改部分设计,即数据库的重构造。

4. 系统分析员负责应用系统的需求分析和规范说明,要和用户及DBA相结合,确定系统的硬件软件配置,并参与数据库系统的概要设计。

数据库设计人员负责数据库中数据的确定、数据库各级模式的设计。数据库设计人员必须参加用户需求调查和系统分析,然后进行数据库设计。在大多数情况下,数据库设计人员就由数据库管理员担任。

应用程序员负责设计和编写应用系统的程序模块并进行调试和安装。

5. 数据库管理系统的功能有:(1)数据定义;(2)数据操纵;(3)数据库运行管理;(4)数据组织、存储和管理;(5)数据库的建立和维护;(6)数据通信接口。

6. DBMS由以下几个部分组成:(1)数据定义语言及其翻译处理程序;(2)数据操纵语言及其编译(或解释)程序;(3)数据库运行控制程序;(4)实用程序。

在关系模型中,实体以及实体间的联系都是用关系来表示的。例如导师实体、研究生实体、导师与研究生之间的一对多联系都可以分别用一个关系来表示。在一个给定的应用领域中,所有实体及实体之间联系的关系的构成一个关系数据库。

关系模型的数据结构

关系数据库模型是如今更流行的数据库模型,其流行源于它结构的简单性。在关系模型中最重要的数据结构就是关系。构建关系模型下的数据库,其核心是设计组成数据库的关系。

关系设计中涉及到一些术语包括:

关系就是一张表,设计关系就是设计一张表;

元组是表中的一行;

属性是表中的一列,属性名是给属性起的名字;

关键字是表中的某个属性组,唯一确定一个元组;

关系模式是对关系的描述,一般表示为关系名(属性1,属性2,···,属性n);

外键是关系中不是该关系的关键字或只是关键字的一部分的某个梁裤属性或属性组合,但它同时是另一个关系的关键字;

主表是以外键作为主键的表;

从表指外键所在的表。

在为数据库设计关系时,必须为每个关系指定一个关键字或主码,并且在该关系中,关键字的值不能为空,即关键字的值为空的元组在关系中是不允许存在的。在有些关系中关键字是由单个属性组成的,在另一些关系中关键字是由若干个属性的组合而构卖渣谈成的,即这种关系中的元组不能由任何一个属性惟一表示,必须由多个属性的组合才能惟一表示。关系模式是稳定的,而关系是随时间不断变化的,因为数据库中的数据在不断更新。

数据库的重构造的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于数据库的重构造,数据库重构:让数据存储更高效,数据库如何创建视图,什么是数据库系统的体系结构?的信息别忘了在本站进行查找喔。


数据运维技术 » 数据库重构:让数据存储更高效 (数据库的重构造)