数据库系统与文件系统

数据库系统与文件系统的图像


考虑一部分储蓄银行企业,可保留有关所有客户和储蓄账户的信息。保持计算机上信息的一种方法是将其存储在操作系统文件中。要允许用户操作信息,系统有许多操作文件的应用程序,包括
  • 借记或信用帐户的计划
  • 添加新帐户的程序
  • 一个节目,用于找到帐户的余额
  • 一个生成月度陈述的程序


系统程序员写了这些应用程序,以满足银行的需求。

随着需要的,将添加新的应用程序。例如,假设储蓄银行决定提供支票账户。因此,该银行创建了包含有关银行维护所有检查帐户的信息的新的永久文件,并且可能必须编写新的应用程序,以处理储蓄账户(例如透支)中不出示的情况。因此,随着时间的推移,系统获取更多文件和更多的应用程序。

传统操作系统支持此典型的文件处理系统。系统存储各种文件中的永久记录,需要不同的应用程序来从中提取记录,并将记录添加到相应的文件中。在数据库管理系统(DBMS)之前,组织通常在此类系统中存储信息。

在文件处理系统中保持组织信息具有许多主要缺点:

  • 数据冗余和不一致: 由于不同的程序员在长期内创建文件和应用程序,因此各种文件可能具有不同的格式,并且可以以多种编程语言编写程序。此外,可以在几个位置(文件)中重复相同的信息。例如,特定客户的地址和电话号码可能出现在文件中,该文件包括节省帐户记录以及由支票帐户记录组成的文件。此冗余导致更高的存储和访问成本。此外,它可能导致数据不一致,即相同数据的各种副本可能不再同意。例如,改变的客户地址可以在节省的帐户记录中反映,但不是系统中的其他位置。


  • 访问数据难点: 假设其中一名银行人员需要找出居住在特定邮政编码范围内的所有客户的名称。该官员要求数据处理部门生成此类清单。由于原始系统的设计者没有预测此请求,因此手上没有应用程序以满足它。但是,有一个应用程序来生成所有客户的列表。银行官员现在有两种选择:要么获取所有客户的列表,要么手动提取所需的信息,要么要求系统程序员写入必要的应用程序。两种替代方案显然不满意。假设已经写了这样的程序,而且,几天后,同一名官员需要修剪该列表,仅包括那些账户余额为10,000美元或更长时间的客户。正如预期的那样,不存在生成此类列表的程序。再次,官员再次有前两种选择,其中都没有令人满意。这里的那一点是传统的文件处理环境不允许以方便且有效的方式检索所需的数据。一般使用需要更多敏感数据检索系统。


  • 数据隔离: 因为数据分散在各种文件中,并且文件可以采用不同的格式,所以写入新的应用程序以检索适当的数据很难。


  • 完整性问题: 存储在数据库中的数据值必须满足某些类型的一致性约束。例如,银行账户的余额可能永远不会低于规定金额(例如,25美元)。开发人员通过在各种应用程序中添加适当的代码来强制执行这些约束。但是,当添加新约束时,很难改变程序以强制执行它们。当约束涉及来自不同文件的几个数据项时,问题复杂了。


  • 原子问题: 与任何其他机械或电气设备一样,计算机系统受到故障。在许多应用中,至关重要的是,如果发生故障,则数据将恢复到故障之前存在的一致状态。考虑一个计划从帐户A转移50美元到帐户B.如果在执行该程序期间发生系统故障,则可能从帐户A中删除50美元,但未记入帐户B,导致数据库状态不一致。显然,对数据库一致性至关重要,可以进行信用和借记,或者既未发生。也就是说,基金转移必须是原子的—它必须完全发生或根本不发生。很难确保传统的文件处理系统中的原子性。


  • 并发 - 访问异常: 为了制定系统的整体性能和更快的响应,许多系统允许多个用户同时更新数据。在这样的环境中,并发更新的交互可能导致数据不一致。考虑包含500美元的银行账户A.如果两个客户从账户A撤回资金(分别发表50美元和100美元),则并发执行的结果可以将帐户留在不正确(或不一致)状态。假设代表每次提款执行的程序读取旧余额,减少了被撤回的金额的值,并将结果写回来。如果两个程序同时运行,他们既可以读取价值500美元,并分别回写450美元和400美元。根据哪一个写入该值,帐户可能包含450美元或400美元,而不是350美元的正确值。为了防止这种可能性,系统必须保持某种形式的监督。但是,监督难以提供,因为可以通过先前尚未协调的许多不同的应用程序访问数据。


  • 安全问题: 并非数据库系统的每个用户都应该能够访问所有数据。例如,在银行系统中,工资单只需要看到有关各世银商员工信息的数据库的那部分。它们不需要访问客户帐户的信息。但是,由于应用程序以临时方式添加到系统中,因此难以执行此类安全约束。 

这些困难在于,促使数据库系统的发展。在即将到来的文章中,您将看到数据库系统如何帮助我们解决文件处理系统的这些异常。





没意见

供电 博主 .