Oracle应用开发实战

来源:互联网 发布:经营杠杆的理解知乎 编辑:程序博客网 时间:2024/05/22 06:41

Oracle应用开发实战

摘要:提到Oracle数据库,很多人的反应就是它是一款关系型数据库。什么是关系型数据库呢?LZ认识的一位Java方面的HR说在面试经常问到这个问题,结果很多人答不上来,而我相信大家心中已经有了答案。

关系型数据库基于关系模型提出来的数据库。


关系模型:就是指二维表格模型,因而一个关系型数据库就是由二维表及其之间的联系组成的一个数据组织通俗来讲就是我们用的二维表行和列的形式就是关系模型。

扩展:现阶段随着大数据的发展,由于数据呈现爆炸性增长,传统的关系型数据库处理效率已经不能够满足巨量数据,所以出现了NOSQL数据库,这种数据库是key-value的形式,开发中常用的由HBASE,MongoDB等等。

一.Oracle数据库的基本概念

  1. 一个Oracle服务器:一个数据管理系统(RDBMS),用于开发的,全面的几近完整的信息管理。
  2. 由一个Oracle数据库和多个Oracle实例组成。
注:数据库表示的是物理的文件,实例是将数据库文件读取到内存中的镜像。一般都是一对多的关系。


扩展:Oracle集群
     概念:磁盘阵列,由很多个小磁盘组装成一款大的磁盘;
     如下图所示:
而Oracle集群同磁盘阵列的原理很相似,通过在多台服务器组装成一个总的Oracle服务器。
对于Oracle集群有特定的名称:RAC------Real Application Cluster

集群优点:
(1)Load Balance---负载均衡

假设我们有一台服务器,有1000台客户端访问,那么服务器的压力会变得很大,这时候如果我们有10台服务器提供客户端访问,那么就可以将客户端的压力分散到10台服务器上。这就是负载均衡。

(2)File Over---失败迁移

假设程序要向数据库插入10条语句并提交,A服务器在执行前五条语句后宕机,那么这时候服务器BC会将继续执行剩下的语句。这样就提高了系统的可靠性。




二.Oracle数据库的体系结构与架构







操作数据库的过程:客户端-----内存中的实例----数据库
问题:内存中的实例如何修改数据库的内容?
答:是以操作系统的进程来操作文件。

扩展:在Java环境配置好后,在命令行中输入jps后,会显示当前系统的Java进程情况,及其进程号(PID)。

结构分析:
内存块中分为SGA (System Global Area),系统全局区。
还有多个PGA(Process Global Area),进程全局区。

过程分析:
客户端与PGA内存连接,客户端更新数据首先保存到PGA上,提交后,会将数据提交到SGA中,SGA通过写进程写入到数据库ORCL硬盘的文件中。

注意:客户端提交了一次,但是内存中提交了两次。这就是两阶段提交
方案一:PGA直接提交到数据库需要提交多次;
方案二:PGA-   (需要提交多次)->SGA-(只需要提交一次)-->数据库
而内存的访问速度是磁盘的访问速度很多倍,所以方案二较快。

对于Oracle和MySQL,两个数据库同时存储5000条数据,Oracle由于有两阶段提交,执行速度是MySQL的25--30倍。




























原创粉丝点击