Oracle一家的幸福生活
一個名叫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是oracle內部用於維護一致性的重要機制)
現在,全家人都知道這個數字被簡稱為SCN。你可以在每一個地方都看到SCN。Sid把它們寫在底片上,然後他把低位和高位的SCN寫在每一包底片外面。
Debbie把它們寫在她放置照片的地方。這些數字在Sid的複雜家庭生活中顯得尤為重要。
Debbie把照片放在框架裡,房子裡的每一個框架都是一樣大小。一些框架只儲存了一張照片,一些框架則儲存了幾張照片。一些特別大的照片則要佔據多個框架。(框架是dbblock)
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按照他得到底片的順序將這些底片放入“重做筆記本”。一旦當前的筆記本裝滿了底片,他就換另一個新的筆記本。每一次他更換“重做筆記本”後,
都在“告警筆記本”上做一個記錄,然後通知他的兄弟來進行他們的家務活。
(日誌切換點log switch,發生的時候會記錄到告警日誌中)
悲哀,是不是?老爸和他的大兒子太專注於底片了!
順便提到,不是所有的照片都有對應的底片儲存。Sid指定某些照片不必被做日誌,這些照片就沒有對應的底片儲存在“重做筆記本”裡。Sid稱其為“無日誌”。 (nolog的情況)
1.1.4 Archie的家務事
Sid的第二個兒子Archibald則另有任務。他的襯衫上寫著ARCH。Archie從重做筆記本里提取底片後,把它們放置在一個安全的地方。 (ARCHIVE歸檔程式)
當Archie發現Logan更換到另一個重做筆記本的時候,他就開始行動。他拿起重做筆記本中的那些底片,把它們放在房子外面的一個安全地方。
Sid在後院建造了一個控制好溫溼的地下室。那是他儲存底片的安全地點。如果暴風來到,破壞了房子,他可以使用儲存在地下室的底片來替換那些被損壞的照片。
每一份Logan的“重做筆記本”複製,被稱為“歸檔的重做筆記本”。 可能某一天,你可以聽到Sid和他次子之間的笑談:
Sid::“Archie?你在哪裡?”
Archie:“老爸,我在自己房間裡,Logan現在切換筆記本了嗎?”
Sid:“是的,他剛剛乾完。”
Archie:“知道了,老爸。我會複製這些底片並且製作一個新的筆記本放在地下室裡。然後,我會更新‘控制筆記本’,並且在‘告警筆記本’裡寫一個記錄。”
Sid:“你是一個好孩子,我知道可以相信你。”
(archive完成後會更新控制檔案,並記入到告警日誌中)
1.1.5 Chuck的家務事
Sid最小的兒子Chuck確保每一件事情都是同步的。他的全名是Charles Kenneth Patrick Thomas。他襯衫上的字母是CKPT, (CKPT檢查點程式)
Chuck的任務是將每一面牆壁、相片冊和剪貼簿上的相片數字和控制筆記本中的數字協調起來。當他得到訊號,他就開始在房子裡奔跑起來,在每一面牆壁上寫下數字,
同時將同樣的數字也記錄在控制筆記本里。這使得每一件事情都協調起來。以下是一段Sid和Chuck的對話:
Sid:“hi,Chuck。”
Chuck:“老爸,Logan又開始更換筆記本了嗎?”
Sid:“是的,兒子,你知道規矩。帶著目錄編號1332935跑遍房間,把這個數字寫到每一面牆壁的開頭,每一個剪貼簿的封面和照片盒子的頂部。”
Chuck:“沒問題,給我幾微秒時間搞定”。
Sid:“別忘記把1332935寫在控制筆記本上!”
Chuck:“老爸,我知道了,同樣的事我一天內已經做過幾百次了。”
我敢打賭,你已經對閱讀這個瘋狂的Sid之家感到厭倦,是不是?到現在為止,你可能已經看出Sid有一個功能失常的家庭。功能失常?是的!不過卻有效而可靠。Sid喜歡這樣。
(檢查點程式負責更新控制檔案、資料檔案的頭資訊,以使其保持一致)
1.1.6控制筆記本
這個家庭怎樣維持所有這些活動?Sid、Debbie、Logan、Archie和Chuck斷定,要想把這項照片收集和整理工作處理的井井有條,必須要製作很多詳細的筆記。
他們每個人都把自己的東西寫入一個日誌,稱之為“控制筆記本”。 (控制檔案)
控制筆記本有一個記錄整個房子中每一堵牆壁、剪貼簿和照片盒子的家庭財產清單條目。如果Sid增加了一個房間,來放置更多的照片,他在控制筆記本里做一個記錄。
當Logan更換重做筆記本時,他在控制筆記本里做摘要記錄。每次Archie製作一個歸檔的重做筆記本放入地下室時,他把名字和SCN的範圍寫在控制筆記本里。
每次Chuck在房子裡跑完一圈,他把細節也記錄在控制筆記本里。這特殊的筆記本動態儲存了所有地方的資產情況,和房子裡以數字表示的程式。
(控制檔案中包含資料庫名、資料檔案、日誌檔案、歸檔檔案,檢查點及scn等相關資訊)
1.1.7告警日誌
時不時的總會有些意外發生,也可能出現錯誤。Debbie可能在把照片放進框架的時候發生問題,因為那面牆上已經沒有多餘的空間了。Archie可能無法摺疊起底片條,
因為有人把蘇打水噴在上面。Sid考慮到了所有的可能,他買了一個螺旋軸的筆記本,放在廚房的抽屜裡。在筆記本的面子上寫上“告警日誌”。
每一個家庭成員將遇到的問題寫在這個日誌裡。他們不僅要記下發生的錯誤,還要記下正常的活動過程。
這個告警日誌是一個用來儲存在Sid家裡已經和即將發生的事情的便利場所。如果他們要解釋某個情形下額外的細節,他們製作一個新的“追蹤筆記本”,把資訊記錄在裡面。
這樣一來,這個告警筆記本不會變得比它原先的樣子更雜亂。
(告警日誌記錄例項所有的變動和錯誤資訊)
1.1.8清晨程式
全家早晨一起醒來,也總是同時上床睡覺。他們稱這些時間為一天的“啟動”和“關閉”。下面是早晨的啟動程式:
Sid從床上起來,端上一杯咖啡開始他的一天。在咖啡壺邊上,他將一系列指令儲存在筆記本里,稱之為初始化引數檔案。閱讀這列指令幫助他開始新的一天。
啜著咖啡,他走過去確認控制筆記本是否放在老地方。他在房子裡打轉叫醒Debbie、Chuck、Logan、Archie、Simon和Pamela(你很快就會遇到他們)。
當每一個人都醒來後,就開啟控制筆記本。確認根據控制筆記本的內容,所有的照片牆壁都沒有問題,當所有的東西都被檢查過以後,他開啟房子迎接賓客,
並開始拍攝照片。Sid僱傭了一個男管家,Simon,在早晨幫助他,Simon的燕尾服上寫著字母SMON(省掉名字裡的一個字母)。有些早晨房子裡特別凌亂,
因為在前一個就寢時間,家庭的每一個成員都沒有及時清理好各自的事物。當Simon就位後,Sid開啟窗簾,掛好電話,開啟門鎖,他的家庭開放,準備好了迎接客人。
(啟動後執行必要的系統清理和例項恢復是smon一項主要工作)
Sid和Simon可能這樣開始一天:
Simon:“早上好,先生。我今天能幫你做什麼嗎?”
Sid:“是的Simon,早上好。看來我們這裡很凌亂啊。我們昨天晚上突然中斷了。你能否處理一下所有這些沒有完成的照片和‘回退’。”
Simon:“當然了,所有這些底片在重做筆記本里的都要被重新制作,然後以簡單的順序放置在正確的框架裡。”
Sid:“你處理完這些後,接著處理‘回退’,是嗎?”
Simon:“當然了,先生。我從回退儲藏室裡取出照片框架,然後把舊的版本放回它們原來的地方。”
Sid:“太棒了,你完成後,我就開啟房子。” (例項恢復是在資料庫open之前完成的)
1.1.9夜間程式
Sid家的夜間程式也很有趣。當Sid躺下準備休息的時候,他要求家裡所有的東西都放好、關掉和停下。就寢時間的第一個行動是要求房子裡所有的客人回家去。
Sid晚上的情緒有四種情況。第一種,有時他很有耐性,等待所有的男女客人自行離去後,再就寢;第二種,Sid沒有耐性,他親自來監督每一個客人,
當客人幹完各自的事情(看照片等等)後,他給客人指示出門的方向;第三種,Sid非常沒有耐性,他揪著客人陪他們出門,不讓他們幹完正在乾的事;
第四種,Sid拉下房子的電閘,大叫“時間到”,房子裡一片狼藉。Simon不得不在第二天早晨來清理混亂的場面。 (資料庫關閉的幾種情形)
當一個客人走後留下一團糟時,Sid叫來他的女傭PamelaMonica。她監控客人的活動,並且在客人走後處理善後。她的清潔裝置上貼著標籤PMON。
(PMON使用者監控程式,負責對使用者資源的清理和回收)
如果Sid沒有突然拉閘,每個人都開啟燈,進行清理。同步處理筆記本來完成各自的任務。Debbie從DB_BUFFER_CACHE架子上取走所有的照片,放到合適的牆壁上。
Logan確保LOG_BUFFER架子是空的,所有的底片都在當前的重做筆記本里。Chuck在房子裡兜一圈,用最高和最低的目錄編號(SCN)來更新牆壁和筆記本。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12932950/viewspace-421577/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 女程式設計師的幸福生活程式設計師
- 羅馬尼亞程式設計師的幸福生活程式設計師
- 北漂程式設計師邊城的幸福生活程式設計師
- 一家公司的Java面試題Java面試題
- 一家遊戲周邊公司的發展史遊戲
- 今天去一家外企的面試題.....面試題
- 英雄互娛,一家被低估的遊戲公司遊戲
- Oracle收購Talari,第一家SD-WAN公有云提供商出現Oracle
- 程式碼之外週刊(第111期):哈佛世紀研究:何為幸福生活?
- 一座城市的最後一家遊戲店遊戲
- 一家之言:遊戲開發的意義遊戲開發
- 如何選擇一家靠譜的IT培訓機構?
- 沐瞳——上海最神祕的一家遊戲大廠遊戲
- 凱度:開一家‘喪茶’的快速資料指南
- 一家之言:成功遊戲設計的理論模型遊戲設計模型
- OPPO VIVO 到底是不是一家
- 一家法律智慧公司的CTO是怎樣煉成的?
- 京東官宣換新Logo京東JOY變胖 回應:幸福生活指數變高罷了Go
- 一家道系AI公司的非典型邏輯AI
- 一家軟體服務商與DDOS之間的故事
- 萬里資料庫是一家怎樣的公司?資料庫
- 藍點:一家本土Linux企業的跌宕浮沉(轉)Linux
- Zoho和Zoom是一家公司嗎?OOM
- 杉數科技,是一家怎樣的非典型AI公司?AI
- 如何去一家估值10億美元的創業公司工作?創業
- 一家低調的福州公司,是如何影響中國遊戲業的?遊戲
- 回武漢的第一家培訓機構的網路環境
- 天下開源是一家,GitHub 收購 npmGithubNPM
- 最強智慧穿戴只有一家! 不服來辯!
- 每日安全資訊:NSO,一家專業入侵 iPhone 的神祕公司iPhone
- 一家探索遊戲敘事的公司,拿到上億融資開始招人遊戲
- Netflix有可能做成一家偉大的遊戲公司嗎?遊戲
- 一家既文藝又重口的“奇葩”發行商Devolverdev
- 如何挑選一家好的軟體測試培訓機構
- 如何選擇一家靠譜的網路安全培訓機構?
- 小米正式進軍銀行業 年輕人的第一家銀行行業
- IT創業失敗案例解析4:一家失敗的招聘網站創業網站
- 一家零售上市公司的IT框架,請教各位老師框架