欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Oracle 9i & 10g编程艺术-深入数据库体系结构——前言(转)

程序员文章站 2022-07-14 18:31:52
...

前言

过去我一直在开发Oracle软件,并与其他Oracle开发人员一同工作,帮助他们构建可靠、健壮的应用程序。在这个过程中积累了一些经验,这是这些经验赋予我灵感,才有了本书中的内容。这本书实际上反映了我每天做了些什么,汇集了我所看到的人们每天遇到的问题。

本书涵盖了我认为最重要的一些内容,即Oracle数据库及其体系结构。我也可以写一本书名类似的其他方面的书,向你解释如何用一种特定的语言和体系结构开发应用程序。例如,我可以告诉你如何使用JavaServer PagesJSP)与Enterprise JavaBeansEJB)通信,EJB再如何使用JDBCOracle通信。不过,归根到底,你最后还是要了解Oracle数据库及其体系结构(本书介绍的内容),才能成功地构建这样一个应用程序。要想成功地使用Oracle进行开发,我认为有些内容你必须了解,而不论你是一位使用ODBCVisual Basic程序员、使用EJBJDBCJava程序员,还是使用DBI PerlPerl程序员,这本书都会介绍这些通用的知识。本书并不推崇哪一种特定的应用体系结构,在此没有比较三层机构和客户/服务器结构孰优孰劣。我们只是讨论了数据库能做什么,另外关于数据库如何工作,我们还会指出你必须了解哪些内容。由于数据库是所有应用体系结构的核心,所以这本书使用面很广。

在编写本书时,我对Expert One-on-One Oracle一书中关于体系结构的章节做了全面修订和更新,并补充了大量新的内容。Expert One-on-One Oracle一书所基于的版本是Oracle 8.1.7,在此之后又推出了3个版本——两个Oracle9i版本和Oracle数据库10g Release 1,这也是写这本书时的Oracle发行版本。因此,有许多新的功能和新的特性需要介绍。

如果针对9i10g更新Expert One-on-One Oracle,那么需要补充的内容太多了,那本书原本篇幅较多,再加太多内容就会很难处理。出于这个考虑,我们决定分两本书来介绍。这是其中的第一本,第二本书暂定名为Expert Oracle Programming

顾名思义,本书的重点是数据库体系结构,并强调数据库本身如何工作。我会深入地分析Oracle数据库体系结构,包括文件、内存结构以及构成Oracle数据库(database)和实例(instance)的底层进程。然后讨论一些重要的数据库主题,如锁定、并发控制、事务、redoundo,还会解释为什么了解这些内容很重要。最后,我们再来分析数据库这的物理结构,如表、索引和数据类型,并介绍哪些技术能最优地使用这些物理结构。

读者对象

这本书面向那些使用Oracle作为数据库后端开发应用程序的人员。专业Oracle开发人员如果想了解如何在数据库中完成某些工作,同样可以参考本书。本书相当实用,所以DBA也会对书中的许多内容感兴趣。书中大部分例子都使用SQL*Plus来展示关键特性,所以如果你想通过本书来了解如何开发一个很酷的GUI,可能不能如愿。不过,从这本书中,你将知道Oracle数据库如何工作,它的关键特性能做什么,以及什么时候应该(和不应该)使用这些特性。

如果你想事半功倍地使用Oracle,如果你想了解使用现有特性的新方法,如果你想知道这些特性在真实世界中如何应用(不只是展示如何使用特性,而是首先分析为什么要用这个特性),就请阅读这本书。作为技术经理,如果你手下的开发人员在开发Oracle项目,你可能也会对这本书感兴趣。从某种程度上讲,技术经理也要懂数据库,而且要知道这对于成功至关重要。如果技术经理想安排员工进行适当的技术培训,或者想确保员工了解他们应该掌握的技术,就可以利用这本书来“充电”。

要想更好地学习本书的内容,要求读者:

  • 了解SQL。不要求你能编写很棒的SQL代码,但是如果用过SQL,对SQL有实战经验,这会很有帮助。
  • 掌握PL/SQL。这不是一个必要的前提,但是有助于你“领会”书中的例子。例如,本书不会教你这样编写一个FOR循环,或者如何声明一个记录类型,这些内容可以参考Oracle文档和许多相关的图书。不过,这并不是说你从本书中学不到PL/SQL的知识。不是这样的。通过阅读本书,你会PL/SQL的许多特性相当熟悉,而且会学到一些新方法,还会注意到你以前以为不存在的一些包和特性。
  • 接触过某种第三代语言(third-generation language, 3GL),如CJava。我相信,如果你能阅读3GL语言编写的代码,或者编写过这种代码,肯定能顺利地阅读和理解本书中的例子。
  • 熟悉Oracle Concepts手册。

最后再说两句,由于Oracle文档实在太庞大了,这让很多人有些畏惧。如果你刚开始读Oracle Concepts手册,或者还没有看过,那我可以告诉你,这个手册绝对是一个很好的起点。它大约有700页,涉及了你需要知道的许多重要的Oracle概念。其中不会涵盖每一个技术细节(Oracle文档提供了技术细节,不过它有10,00020,000页之多),但你能从中学到所有重要的概念。

这个手册涉及以下主题(这里所列的并不完整):

  • 数据库中的结构,数据如何组织和存储;
  • 分布式处理;
  • Oracle的内存体系结构;
  • Oracle的进程体系结构;
  • 你要使用的模式对象(表、索引、聚簇等);
  • 内置数据类型和用户定义的数据类型;
  • SQL存储过程;
  • 事务如何工作;
  • 优化器;
  • 数据完整性;
  • 并发控制。

我自己也会时不时地温习这些内容。这些都是基础,如果不了解这些知识,你创建的Oracle应用程序就很容易失败。建议你通读Oracle Concepts手册来了解这些主题。

本书组织结构

为了帮助你更好地使用这本书,大部分章节都组织为4个部分。这个划分并不严格,不过有助于你快速地找到感兴趣的方面,从中获得所需的更多信息。本书有15章,每一章都像一本“迷你书”,可以单独成册。有时我会引用其他章中的例子或特性,不过你完全可以从书中任选一章,不参考其他章也能顺利阅读。例如,要理解或使用第14章关于并行机制的知识,就不必阅读介绍数据库表的第10章。

许多章的格式和风格基本上都一样:

  • 首先是特性和功能的介绍。
  • 说明为什么可能想使用(或者不想使用)这个特性或功能。我会概要地指出哪些情况想要考虑使用这个特性,而哪些情况下这个特性不适用。
  • 如何使用这个特性。这里提供的信息不是完全照搬SQL参考资料中的内容,而是会以一种循序渐进的方式组织。我会清楚地指出哪些是你需要的,哪些是你必须做的,另外哪些环节需要仔细检查。这一部分包括以下内容:
  • 如何实现这个特性;
  • 许许多多的例子;
  • 如何调试这个特性;
  • 使用这个特性的忠告;
  • 如何(主动地)处理错误。
  • 对上述内容的小结。

书中有相对多的例子和大量的代码,这些都可以从http://www.apress.com的Source Code区下载。下面将详细介绍每一章的内容。