2020年8月3日 星期一

0.1 寫在前面—潛談Oracle資料庫

在談論Oracle之前,我們還是簡單的來聊一下資料庫這個東西來當作一個開頭吧。

 

什麼是資料庫(Database) ?  顧名思義也就是一個儲存資料的地方,而這個儲存資料的地方是具有一定的格式、組織與系統,以方便我們從這個地方尋找想要的資料。好比一個書櫃,我們會把手 上的書本分門別類的排放在書櫃的不同位置,甚至在每個地方貼上不同的標籤,有系統的紀錄每本書存放的位置,方便日後可以快速且方便的找到我們要的書籍。

 

資料庫系統的演進大致可分為六個階段,1960年代前是以人工作業的方式,將資料記錄在一張張 的小卡片上,此種紀錄資料的方式不易管理、資料難以尋找,且卡片容易損壞與竊取;到了1960年代,發展出了檔案處理系統,這時人們懂得將資料分門別類加 以記錄,例如人力資源部門將會建立員工資料檔來記錄員工的資料,建立部門資料檔來存放公司的部門資訊;1970年代發展出了階層式資料庫系統;到了 1980年代便發展出了現在運用最為廣泛的關聯式資料庫系統;1990年代則出現了以物件式導向的資料庫與關聯式資料庫系統;而2000年代之後,資料庫 系統更增添了許多應用,例如資料倉儲架構(Data Warehouse)、資料挖掘(Data Mining)…等。

 

既然有了資料庫,那當然必須要有可以來操作及管理資料庫的軟體,而這個軟體就稱作資料庫管理系 統(DBMS),一般我們常聽到的RDBMS就是指一個用來管理關聯式資料庫系統的軟體,例如市場上普遍使用的SQL Server、DB2以及我們所要談的Oracle均是RDBMS的產品。

 

提到了RDBMS,那麼就來談一下什麼是關聯式資料庫。在早期資料是以扁平式(flat- file)的方式儲存,意及資料的所有數據都以同一個表格來儲存,而這個方式最大的缺點就是表格中會存在多餘的資料,例如客戶名稱、客戶編號、客戶聯絡方 式以及客戶其他資訊,當有新的訂單進來,這些資訊就很有可能不斷不斷的重複被記錄,這種扁平式資料儲存的方式顯得很沒有效率,當資料量越大,資料也越不容 易維護。直到1970年,由密西根大學(University of Michigan)的E.F.Codd博士發表了一篇名為"銀行共享大量資料的資料關聯式模型"(A Relational Model of Data for Large Shared Data Banks)的論文,而這篇論文中提供了一套規則,解決了扁平式(flat-file)資料儲存模式所產生資料需重複儲存的問題,這也是關聯式資料庫理論 的起源。所謂的關聯式資料庫,就是將資料有系統、有組織的整合到不同的表格當中,而這些表格與表格之間又有相依的關聯性,以此理論為基礎,漸漸的就發展成 為現在我們所熟知的關聯式資料庫系統了(Relational Database Management System, RDBMS)。

 

談起Oracle資料庫,與現在我們所熟知的架構相近,就從1985年Oracle發布了 5.0版說起吧,這個版本是第一個使用Client/Server架構下的RDBMS產品;1988年發布了6的版本,這個版本引進了row-level locking 的特性;1992年發布了7.0版本,在Oracle 7增添了許多新特性,例如分佈式處理、儲存過程( Procedure)、觸發過程(Trigger)…等,另外從這個版本也開始引入了CBO,而Oracle也因為Oracle7的推出而獲得巨大的成 功;1997年發布了Oracle 8的版本加入了物件導向,發展成為了物件式導向的關聯式資料庫系統;而1998年Oracle正式發布了Oracle 8i,"i"代表者Internet,為配合網路的發展,這個版本也添加了許多支援Internet而設計的特性,例如Java可編寫Oracle的 Procedure、以及XML的運用…等特性;在2001年,Oracle發布了Oracle 9i,而這個版本最重要的就是RAC這個特性了(Real Application Clusters),雖然Oracle發展並行伺服器(Oracle Parallel Server, OPS)已經一段時間了,但是到了9i的RAC才算是真正的成熟;2003年Oracle發布了新一代資料庫產品Oracle 10g,"g"代表網格運算(grid computing),意及透過高速的互聯網路把各地的伺服器連接在一起,充分共享資源,並透過合理的調度將資源有效率的應用,Oracle 10g為配合網格運算也發展了許多新特性,例如CRS、ASM…等;2009年Oracle發布了11gR2這個版本,這也是目前(2013)市場上主要 的Oracle資料庫版本。

 

最後我們來談一下使用者是如何來存取資料庫的資料?  一般最常用的是使用結構化查詢語言(Structured Query Language, SQL)來存取資料庫的資料,SQL是用於資料庫中的標準資料查詢語言,最早由IBM公司使用在其開發的資料庫系統中,直到1986年,由美國國家標準學 會(ANSI)對SQL進行規範後,正式以此作為RDBMS的標準語言(ANSIX3.135-1986),1987年更成為了國際標準。而各家資料庫系 統均以此為基礎做了某些改編與擴充,進而發展出各家資料庫系統專屬的結構化查詢語言,例如SQL Server所使用的SQL稱為 T-SQL,而Oracle資料庫所使用的SQL稱作為PL/SQL…等。SQL的語法大致可分為DDL、DML與DCL。DDL(Data Definition Language)用於定義及維護資料庫中的資料表,例如create table、alter table、Truncate…等語法都屬於DDL;DML(Data Manipulation Language)用於處理資料庫中的資料,例如insert、delete、update…等語法;DCL(Data Control Language)用於控制資料庫的使用權限與安全程度,例如grant、revoke、audit…等語法。

 

說了這麼多,總算對資料庫有些許的了解了吧,接下來我們就可以針對Oracle資料庫來做一個詳細的介紹。



沒有留言:

張貼留言