讓你的應用程式不再對資料庫的改動“感冒”(一) (轉)
原著作者:to:jczuprynski@zerodefectcomputing.com">Jim Czuprynski
大綱:namespace prefix = o ns = "urn:schemas--com::office" />
對的改動,使得應用中用到的資料物件在某段時間內處於無效狀態,從而帶來致命的錯誤。本文討論些技術,可供a在實際應用中竟可能地降低資料庫改動和應用程式間的衝突。
正如古時的一位著名哲學家說的那樣“唯一不變的就是變化”。DBA的職責就是要控制資料庫的變動,使之有序。依賴於你的IT團隊的穩定性和你們開發和支援應用的穩定性,你們可以從容應付每天甚至於每時每刻地呼叫,需要變動資料庫結構。
自從我負責為客戶的資料庫提供24(小時)×7(天)的支援以後,其中一個工作就是我非常關注讓我們的應用能夠提供持續的穩定的而不需要特定的資料庫維護。而且,我發現只要事先規劃周密,我可以建立一個層來讓應用和它們要訪問的資料庫物件是絕緣的。
安全層
使用基本的檢視來隔離應用
就其形式來看,一個基本的檢視只不過是一個view引用了表中的所有列。當建立了一個新的表後,我一般會馬上建立一個基本檢視和為這個檢視建立一個公共同義詞(public synonym),然後,把必要的物件訪問授權給適當的角色。
既然oracle允許用DML語句直接操作基本表,那我可以把DML重定位到基本檢視上從而替代基本表。下面就是一個例子在HR DEMO的下,有一個EMPLOYEES的表,我授予了角色OLTPROLE完全訪問檢視的權利。
CREATE OR REPLACE VIEW hr.bv_employees AS
* FROM hr.employees
/
CREATE PUBLIC SYNONYM employees FOR hr.bv_employees;
GRANT SELECT, INSERT, UPDATE, DELETE ON hr.bv_employees TO OLTPROLE;
使用基本檢視的最大好處就是我可以把精力集中在應用的讀寫資料上,與此同時也把應用同破壞性的DROP TABLE和TRUNCATE語句隔離。同時,我也防止了那些“低階DBA”和“過分熱心的開發者”在匆忙或意外地刪除了重要的資料庫物件。
忠告:注意如果往基本表了新增了新的列,基本檢視中是不會自動新增這個列的,除非重新把編譯基本檢視。這是把雙刃劍,當你達到了隔離應用與資料庫物件的變動,但同時也不能立即得到新增加的列。而且,要記住,欄位上的是不包括在基本檢視中的(例如:列有一個NOT NULL的約束而且沒有提供預設值,或者有一個CHECK約束),發出的INSERT語句會失敗。
使用基本檢視隔離應用訪問指定的資料
既然可以為檢視的列指定別名,我們可以利用這個特性來限制返回的資料。我們還是使用EMPLOYEES這個表,我想限制OLTPUSER角色只能訪問必需的列,換句話說,在插入一條僱員資訊的時候只需要填寫那些非空的必需列。
DROP VIEW hr.bv_employees;
CREATE OR REPLACE VIEW hr.bv_employees (
empid,
fname,
lname,
,
hire_date,
job_id)
AS
SELECT
employee_id,
first_name,
last_name,
email,
hire_date,
job_id
FROM hr.employees
/
DROP PUBLIC SYNONYM employees;
CREATE PUBLIC SYNONYM employees FOR bv_employees;
GRANT SELECT, INSERT, UPDATE, DELETE on hr.bv_employees TO oltprole;
現在我以OLTPUSER使用者對基本檢視bv_employeeDML語句,增加記錄的時候只需要必要的資訊。
INSERT INTO employees
VALUES (501, 'Damien', 'McGillicudy', 'damienm@oracle.com', TO_DATE('12/31/1999'), 'FI_ACCOUNT');
COMMIT;
> SELECT *
2 FROM employees
3 WHERE empid >= 500
4 ORDER BY empid;
EMPID FNAME LNAME
---------- -------------------- -------------------------
EMAIL HIRE_DATE JOB_ID
------------------------- ------------------- ----------
501 Damien McGillicudy
damienm@oracle.com 12/31/1999 00:00:00 FI_ACCOUNT
未完待續
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-981643/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 讓你的應用程式不再對資料庫的改動“感冒”(三) (轉)資料庫
- 讓你的應用程式不再對資料庫的改動“感冒”(二) (轉)資料庫
- Zendesk:你的顧客對你的調研“感冒”麼-資料資訊圖
- GodBlessYou: 讓你的應用不再崩潰Go
- 一個功能強大的對話方塊庫—讓你的專案不再單調
- 業務人員自行搭建應用,讓資料不再過時
- 給你的應用程式新增動態滑鼠 (轉)
- 轉---讓指標不再困擾你指標
- c++ 讓你的應用支援相對路徑C++
- 非Access資料庫在VB的程式設計及應用 (轉)資料庫程式設計
- 低程式碼開發平臺 讓資料應用不再複雜
- 資料庫中的XML應用例項 (轉)資料庫XML
- Oracle資料庫及應用程式最佳化(轉)Oracle資料庫
- 讓你的Mozilla支援XML資料島 (轉)XML
- iOS開發系列–讓你的應用“動”起來iOS
- Mysql資料庫應用(一)MySql資料庫
- 實用的資料庫檢查程式 (1) (轉)資料庫
- 實用的資料庫檢查程式(3) (轉)資料庫
- 3分鐘短文:Laravel Form,讓你不再寫 HTML 的好“庫”LaravelORMHTML
- 資料庫命令的應用資料庫
- Python爬蟲隨機UserAgent庫,讓你不再手動敲UA!Python爬蟲隨機
- 資料庫即將死去 -- 轉《NoSQL的資料庫技術革命讓我們對SQL說不》資料庫SQL
- angualrJs對資料庫資料處理的增刪改查JS資料庫
- 小程式雲開發讓你不再加班
- PublishFolderCleaner 讓你的 dotnet 應用釋出資料夾更加整潔
- 如何選擇資料庫伺服器,參考這幾點讓你不再被坑資料庫伺服器
- kylix 資料庫應用簡介 (轉)資料庫
- 解讀什麼是小程式容器,讓移動應用開發不再有難題
- 資料庫應用優化(一)資料庫優化
- HarmonyOS:儲存你的應用資料
- 應用程式的資料庫從Sql Server遷移到Oracle資料庫SQLServerOracle
- Dos下的XMS完全控制類 --- 使用它,讓你的DOS程式使用XMS不再是夢想! (轉)
- 讓你詳細的瞭解資料庫防火牆的功能資料庫防火牆
- 【移動資料】imp的應用
- 【移動資料】exp的應用
- 一個庫幫你輕鬆的建立漂亮的.NET控制檯應用程式
- TiDB 分散式資料庫在轉轉公司的應用實踐TiDB分散式資料庫
- VB與資料庫應用一例----生成EXCEL表 (轉)資料庫Excel