??? 一个名叫Sid的男人,狂热地爱好拍摄、保存和整理照片。Sid的妻子名叫Debbie,他们有三个儿子Logan、Archie和Chuck。 (sid是oracle实例,照片是数据)
??? 他有一所很大的房子,同住的有男管家Simon和女仆Pam。我将引见他的家庭、他的房子和他的爱好:拍摄、收集和夸耀他的照片。
如今,Sid快乐地生活着—家庭、朋友和假期。他不时地拍照。理想上,他总是随身带着相机。他不想错过任何东西。
每一个早餐、午餐和晚宴,都会被拍下来。当孩子们从学校回家,镜头摄入他们对父亲的问候。当孩子们做家庭作业的时候,“卡嚓、卡嚓、卡嚓”,照相机的快门响个不停。
(照相只是要说明数据库不断从外部接受数据)
??? 棒球赛上,儿子Archie的每一个投掷都被拍摄下来。学校的舞会上,Chuck的父亲拍下了每一个缓慢的舞步以及在苏打水机器旁的交谈。而他的狗——Sadie则是这个世界上被拍摄次数最多的狗。
他和他的家庭收藏了数以百万计的照片。一些照片被销毁掉了,一些则经历了改变。Sid有一套神奇的系统来处理这些照片。
让我来通知你一些关于他的家庭、他的房子的事,以及关于他和他的家人如何努力于发展、组织和保护所有这些照片。
Sid用一架特殊的相机拍摄。他的相机每拍摄一次,就同时产生一张照片和一张底片。他从来不用换胶卷(这是一种科幻技术)。
照片被贴在房间的墙壁上,而底片则被保存在一个安全的地方。
?
1.1.1 Sid的家
我引见过Sid的家了吗?嗯。那里非常的大而且四处都是照片。由于照片实在是太多了,所以Sid必须寻觅地方来放置它们。
一些照片被挂在墙上,一些被藏在照相簿内,一些被插入剪贴簿里,一些被放在储藏室的一个盒子里再也不会被撇上一眼。所有这些照片都被放在他家中的某处。(照相簿和剪贴簿应该指的是SGA中的某部分)
他称呼这些放置照片的地方为“相片空间”。一个相片空间可能是一个有着很多墙壁的房间,或者是有着很多页的剪贴簿。一个房间是照片的逻辑存储单元。 (房间是表空间)
房间内的墙壁则是相片空间中保存照片的物理结构。
(墙壁是数据文件,房间是由多个墙壁组成的)
?
1.1. 2 Debbie的家务事
由于Sid忙于拍摄和处理照片,他没有足够的精力来放置和储存它们—那是她妻子的任务。Debbie的全名是Debra Wrider。 (写进程)
她的T恤衫上印着DBWR—这是一种家庭传统—为所有的东西做标签。
把所有这些照片放置得井井有条是一件巨大的任务,不过Sid和Debbie曾经建立了一个系统。当Sid拍摄结束后,他把照片都放在厨房里一个特定的架子上。 (架子是DBBUFFER)
那个特定的架子被称为“DB_BUFFER_CACHE”。Debbie时常检查那个架子,看看上面能否有新拍摄的照片。在白天,她把从架子上取回的照片分别放置到对应的相片空间。
(这里没有说明她任务的几个要求,干什么事情都要有激发条件的,不然谁做^_^)
?
理想上,在一场棒球赛或者学校的舞会上,Sid制造照片的速度太快了。以致于Debbie几乎跟不上。这是一个特别的情景,Sid拍摄照片,然后放置在那个特定的架子上,
Debbie把这些照片放在剪贴簿里,挂在墙上或者插入照相簿内。
当Sid带着照片和底片进入厨房时,他和他妻子之间可能会有这样的一段对话:
(照片是提交后数据,底片为日志数据)
Sid:“亲爱的,猜猜我给你带回来了什么?”
Debbie:“你又拍了很多照片,是吗?你知道我是多么喜欢整理照片啊。”
Sid:“当然了,Archie的棒球队博得了最后一局。他在第九局以两个二垒打获胜,我全部都拍摄下来了。”
Debbie:“太好了,那些照片放在相片空间9号墙壁的运动类里,看上去一定棒极了。我曾经等不及去放置它们了,我将约请所有的邻居来观赏。”
Sid:“Archie也非常快乐。OK,我再去拍一些照片,我将在23毫秒后回来。哦,顺便说一下,我刚才将那些照片放在DB_BUFFER_CACHE架子上。
如今Sid的目录号为1332935。”Debbie:“知道了,再见。”
为了易于管理照片、框架和日志,他使用一种特殊的数字来建立目录,称之为Sid的目录编号。他用这些独特的、不断递增的数字来追踪对这所房子内所有照片的操作。(SCN)
Sid和Debbie曾经对查阅Sid的目录编号感到厌倦。Sid在所有的照片、录像带和底片上都写上“Sid的目录编号”,累得手要抽筋。
最后,他们将“Sid的目录编号”缩略为SCN。记住SCN,Sid的生活都围绕着它展开。
如今,全家人都知道这个数字被简称为SCN。你可以在每一个地方都看到SCN。Sid把它们写在底片上,然后他把低位和高位的SCN写在每一包底片外面。
Debbie把它们写在她放置照片的地方。这些数字在Sid的复杂家庭生活中显得尤为重要。
Debbie把照片放在框架里,房子里的每一个框架都是一样大小。一些框架只保存了一张照片,一些框架则保存了几张照片。一些特别大的照片则要占据多个框架。(框架是segment)
Sid有一张和原物同样大小的照片,拍摄的是他在跳伞后在空中做外型动作,这张照片占据了两个框架。当照片跨越框架时,Sid称之为照片链。
任何时候,只需Debbie改变框架内的照片,她就把照片的SCN写在框架上。房子内的每张照片都有一个独一的数字。他们称照片的这个数字为照片ID。 (rowid)
这些照片ID协助Sid管理家中所有墙上的照片。如果他需求尽快找到一张照片,他通过照片ID来实现。通过照片ID,Sid能够迅速找到墙壁和保存照片的框架。
有时候,Sid会对照片进行一些改变。如果他要编辑一张照片,那么他让Debbie通过照片ID找到他的照片。Debbie给他一份包括所需照片的整个框架的拷贝。(数据更改前映像)
为防止Sid可能改变主意,不喜欢他曾经做的一些改变,他把那份拷贝放在一个储藏室内,称之为“回退”储藏室。当Sid完成了更改并且确定了当前,Debbie把更改后的照片放回到墙壁上原先的地方,并且把新的SCN写在框架上。如果Sid不喜欢他的更改,他们就从“回退”储藏室里取出框架并且把它放回墙上。(储藏室是回滚段或者UNDO空间)
这样一来,照片就和Sid没有改动以前一样。
?
1.1.3 Logan的家务事
Debbie为了处理Sid的照片曾经忙得焦头烂额,所以她没有足够的时间和精力来处理Sid的底片。Sid认为他的儿子们在玩电子游戏和吃土豆片上浪费了太多的时间,他决定给他们安排任务。
Sid的大儿子叫做Logan William Randolph。Logan的衬衫上都印着LGWR。Logan有一个非常简单但是非常重要的任务。 (LGWR日志写进程)
Sid的相机产生照片的同时产生了底片,Logan的任务是将底片放入笔记本里。家中的厨房里竖着另一个架子,架子上Sid贴了一个标签,用来标记那些发送给大儿子的底片。
标签被称为“LOG_BUFFER”,Logan坐在厨房的桌子旁,观察这个特殊的LOG_BUFFER架子。当有底片被放到这个架子上时,他立即把底片放在笔记本里。 (又一个架是logbuffer)
Sid称这些笔记本为“重做笔记本”。他使用这个名称是由于当前他可以用里面的底片重新制造一张照片。Logan检查他的架子的频率要比Debbie的高得多。
(lgwr要比dbwr更频繁,不过还是没指名lgwr任务的触发条件)
Sid表示,只需有底片,他就可以随时重新制造一份照片。Logan和他父亲的对话简短而温馨:
Sid:“Logan,底片在架子上了!”
Logan:“知道了,我会立即处理的。”
Logan按