天天看點

《DBA修煉之道:資料庫管理者的第一本書》——1.12節新技術對DBA的影響

本節書摘來自華章社群《dba修煉之道:資料庫管理者的第一本書》一書中的第1章,第1.12節新技術對dba的影響,作者(美)craig s. mullins,更多章節内容可以通路雲栖社群“華章社群”公衆号檢視

1.12 新技術對dba的影響

每當企業引進做生意的新方法和新技術時,dba都要行動起來。資料是任何應用程式的心髒,随着大多數的新技術為程式開發人員所采用,它們也對資料産生了影響。實際上,資料是現代商業的生命線,資料庫容納資料,而dba是資料庫技術尤其資料庫內建技術方面的專家。

接下來研究三種具體的新技術,它們在某種程度上都依賴資料庫管理的有效部署:資料庫耦合的應用程式邏輯、網際網路電子商務開發和手持計算。

1.12.1 過程dba:管理資料庫邏輯

傳統的資料庫管理系統作用的域中規中矩,包括存儲、管理和通路資料。盡管這些核心功能依然适用于現代dbms産品,一些額外的程式功能正慢慢成為很好的必需功能。如觸發器、使用者定義的函數和存儲過程,都能夠為dbms而非單獨的應用程式定義業務規則。這些功能使得應用程式邏輯與資料庫伺服器緊密耦合。

由于所有最流行的rdbms産品都提供了複雜的功能來促進資料庫耦合程式邏輯,是以就需要額外的工作來管理并使用這些功能。這需要對資料庫管理的管理準則進行擴充。通常情況下,當有新功能添加時,管理、設計以及對這些新功能的管理統統都是dba的任務。如果沒有适當的規劃和準備,可能就會導緻混亂。首先研究dbms中資料庫邏輯是如何存儲的。

存儲過程

可以認為存儲過程是在資料庫中的程式。存儲過程的程式邏輯是通過一些資料庫指令進行維護、管理和執行的。使用存儲過程主要是為了将應用程式代碼從用戶端轉移到資料庫伺服器。存儲過程通常在用戶端/伺服器環境中消耗較少,因為一個用戶端調用存儲過程就會運作多個sql語句。而直接運作多個sql語句的替代方案的效率相對較低,因為其增加了網絡流量卻降低了應用程式的性能。存儲過程是獨立的資料庫對象,它本質上不與資料庫中的其他任何對象相關。一個存儲過程可以通路和/或修改多個表的資料。

觸發器

觸發器是一種關聯到資料庫表的事件驅動的特殊程式。資料庫的資料改變時,觸發器代碼會自動在rdbms中運作。每個觸發器都關聯到一張單個的、指定的表。觸發器可以看作一種進階形式的規則或使用程式邏輯編寫的限制。觸發器不能直接調用或執行,一旦對它所關聯的表進行插入、更新或删除操作,它将在rdbms中自動運作。觸發器一旦建立,就始終在它的“導火索”事件出現時運作了。

使用者自定義函數

使用者自定義函數(udf)提供了一個基于一系列輸入值的結果。udf是一種可以代替标準的、内置sql标量或列函數執行的程式。标量函數将結果集的每一行資料進行變換;列函數計算結果集中每一行的特定列的值,并傳回一個單個的值。一旦寫入且在rdbms中定義,udf就變得像任何其他内置的資料庫函數一樣。

表1-2概述了存儲過程、觸發器和使用者自定義函數之間的差異。

《DBA修煉之道:資料庫管理者的第一本書》——1.12節新技術對DBA的影響

存儲過程、觸發器和udf一旦為應用程式和開發人員所用,就要采取措施確定它們得到恰當的管理。dba必須要解決品質問題、可維護性問題、效率問題和可用性問題。如何以及何時測試這些程式對象?測試一旦失敗将影響整個企業,而不是單一的應用程式。這無形中增加了這些對象的可見性和關鍵性。一旦失敗誰将為之負責?答案無疑就是:dba。

管理程式資料庫邏輯的重擔應落在熟知該準則的人身上。此時,需要一種新型的dba來管理資料庫程式邏輯。這種新的角色可以稱作過程dba。

過程dba應為那些需要程式邏輯支援的資料庫管理任務負責。他們的主要職責就是确儲存儲過程、觸發器和使用者自定義函數能有效地規劃、部署、共享和重用。他們也負責對所有觸發器、存儲過程和使用者自定義函數進行編碼與測試,當然,編碼主要是由應用程式開發人員負責的,而過程dba負責其準确度和性能。

過程dba應參與并主導對所有程式資料庫對象(觸發器、存儲過程和udf)的審查和管理。盡管過程dba不可能像應用程式開發人員或系統分析師那樣精通程式設計,他們也要能适當地編寫并審查程式代碼。要求的技能水準依賴dbms使用何種語言建立程式對象,該語言在企業内部接受的程度如何,以及是否存在内部組織專門建立通用且可重用的程式。表1-3給出了一個過程dba參與每種程式對象的合理比重。此外,過程dba要能在生産環境的資料庫程式對象出現問題時随傳随到。

表1-3 過程dba對每種對象的參與度

《DBA修煉之道:資料庫管理者的第一本書》——1.12節新技術對DBA的影響

過程dba應參與并主導對所有程式資料庫對象(觸發器、存儲過程和udf)的審查和管理。

對于過程dba來說,溝通技巧與技術敏銳性同樣重要(詳見圖1-10)。除了管理并優化資料庫程式對象,過程dba還必須告知開發人員存在新的觸發器、存儲過程和udf,此外,他們還要提升這些對象的重用性。如果這些對象不為程式員所知,它們将永遠不被使用。過程dba也可能會有其他的程式管理職責,根據dba的數量以及正在開發的應用程式的數量,他們可能被配置設定額外的工作,比如:

參與應用程式代碼設計審查;

審查并分析sql通路路徑(根據explain或showplan);

調試sql;

編寫并分析複雜的sql語句;

重寫最佳查詢。

将編碼相關的工作交由過程dba分擔有助于其他dba專注于實際的實體資料庫設計和部署,進而才會有更好的資料庫。但過程dba要與傳統dba向同一個管理單元報告,如此可以更好地在過程dba和傳統的關注資料的dba之間共享技能,當然,這需要兩者之間更多的協作。過程dba的一種典型職業路徑就是他們本身來自開發團隊,因為那裡才是編碼技能的根基。

《DBA修煉之道:資料庫管理者的第一本書》——1.12節新技術對DBA的影響

1.12.2 網際網路:從dba到edba

盡管現在網際網路已不能看作一種趨勢,企業和技術人員仍需調整他們的程序來适應電子商務的發展。各種類型和規模的企業都在使用網際網路技術來加快業務程序,并且資料庫管理的實踐和流程也因網際網路應用程式和資料庫的采用而受到影響。

電子商務必須能夠适應不斷變化并為之作出反應。線上的生意永不打烊。人們期望通路的網站一直可用,無論什麼時間在什麼地方。紐約可能是淩晨兩點,但在世界的某些地方卻是黃金時間。電子商務需要一直營業且一天24小時一年365天(閏年366天)和顧客打交道,否則就會造成損失。一個網站出了問題,顧客就會轉戰它處,因為所謂競争就是簡單地點一下滑鼠。是以,管理電子商務的人一定要是内行、前瞻且時刻保持警惕。

接受電子商務的瘋狂節奏需要經營者為之作出改變,dba就極受電子商務的影響。将網絡與傳統的it服務(如dbms)相結合,對資料庫管理者提出了更高的期望。

dba能夠管理基于網絡的應用程式,且因懂得網際網路引發的特殊問題而稱作edba。edba同樣需要傳統dba具備的所有知識和進行的所有教育訓練。但需要将這些技能進行調整以适應網際網路驅動下的應用程式和資料庫。網絡加上傳統的應用程式和資料庫,産生了一種複雜的基礎設施(詳見圖1-11)。edba要能駕馭這種複雜且異形的基礎設施,并能夠在資料庫受到此基礎設施影響時提供專業的建議。

《DBA修煉之道:資料庫管理者的第一本書》——1.12節新技術對DBA的影響

dba能夠管理基于網絡的應用程式,且因懂得網際網路引發的特殊問題而稱作edba。

實際上,當網際網路與資料庫技術結合時,會有多種因素影響資料庫的管理,一些問題包括:

24/7全天候資料可用性。

新技術的采用,如java和xml。

連接配接到網絡。

遺留資料與現代基于網絡的應用程式的內建。

資料庫與應用程式架構。

基于網絡的管理。

網際網路的性能工程學。

不可預知的工作荷載。

1.12.3 個人dba與雲計算

個人裝置,通常不僅指手機還包括掌上電腦,正在快速成為現代化管理者與商人的必需品。手機是一種手持式計算裝置,有時也會有資料庫管理系統。它為什麼這麼吸引眼球呢?它是否改變了你使用手機的方式呢?它又對it部門意味着什麼呢?

流行的移動計算平台包括:symbian作業系統、windows mobile、iphone作業系統和android。

手機提供了許多便利。它體積小巧便于攜帶,不會幹擾移動工作者的工作,而且目前幾乎每個人都随身攜帶手機,提升它的計算能力是勢在必行的。

或許這些裝置最大的好處是它們可以運作移動應用程式。不管何時何地,企業移動應用程式将從主機伺服器擷取的資訊轉發給遍布的移動裝置,這種情況并不少見。移動應用程式使用雲作為後端越來越流行。

企業移動應用程式依賴從主機伺服器擷取的資訊。

什麼是雲計算

雲計算為使用者it資源傳遞提供了一種新的模式。雲計算的主要定義特點造成了對無限的計算資源按需通路的錯覺。一個很好的雲計算服務的例子來自salesforce.com,它提供了通過網絡對crm應用程式的通路。

雲計算服務的另一個普遍的現象是使用者可以租用計算能力且不必承諾。你可以租用一台伺服器而不需要購買,然後支付用到的計算能力的費用。這曾經稱作效用計算,它模仿了人們如何支付公共設施,如水或電。是以這是一種“随需随用”的服務。

從資料庫的角度來看,有一些雲服務,包括amazon的simpledb,google app engine資料存儲。此外,microsoft sql azure也支援雲資料。

雲計算可以讓即使是最小的企業甚至個人獲得計算資源,這在以前是不可能的。

移動應用程式的設計與部署不像桌面個人計算機應用程式開發那樣簡單。對于移動應用程式的開發人員來說,考慮該應用程式将用于什麼環境是很重要的。

雖然帶來的好處是顯著的,但企業将個人裝置融入基礎設施也會面臨挑戰。裝置上的資料必須得到專業的管理以確定其完整性和可靠性。由于該裝置是遠端的,資料共享可能比較困難。手機上的業務資料必須通過可靠的方式與現有的企業系統和資料庫保持同步。從業務和合規性的角度來看,很難評估移動應用程式帶來的風險。移動裝置很容易儲存不當且沒有适當的安全措施可能會導緻資料洩漏。

所有的dbms供應商都提供了各自旗艦産品的輕量級版本在個人裝置上運作。例如,ibm投放市場的db2個人版、oracle銷售的移動資料庫、microsoft提供的sql server精簡版,以及sybase提供的adaptive server anywhere資料庫。總體思路是将移動裝置中的少量關鍵資料存儲在資料庫中。接下來,使本地資料庫與企業資料庫伺服器上的長期資料同步。每種移動dbms都提供了移動裝置與企業伺服器平台之間來回同步資料的技術。

對dba的影響

dba不需要對每個pda的資料庫進行管理,但dba的工作會受到資料庫開發的影響。不需要對那些存儲在pda上的資料庫的大小進行深入調整和管理,企業資料庫部署時才要求。然而,會要求dba幫助設計适用于小型裝置如pda的資料庫。當然,這不是最大的影響。

對dba的一個很大的影響來自規劃如何管理數以百計或數以千計的pda的資料同步。什麼時候開始同步?将對使用大型生産資料庫的應用程式造成什麼影響?如何確定移動使用者的資料可靠且按時同步?

此外,對于雲計算的部署,dba可能要負責保證可靠資料的可用性。設計并調整雲計算的資料庫部署可以将重要的資源用于管理大量的資料并保證其全天候的可用性。

這些都不是小問題。開始部署大批的移動資料庫前,使用者必須同步他們的資料以確定dba人員已經為可能産生的影響做好了準備。與大多數其他的事情一樣,準備不足也許會面臨災難,但是必須要準備。通過了解資料同步技術、雲計算和企業内部遠端資料庫使用者的潛在需要,dba人員必須做好準備來支援移動從業人員。

在為手持裝置支援資料庫做準備的過程中,還需要審查企業的應用程式并嘗試确定哪些可能最先受到影響。那些有遠端工作者的公司,如分布式的銷售隊伍或傳遞跟蹤服務将最有可能首先受到影響。花些時間審查這些應用程式的資料需求,以及大量湧入的遠端連接配接對現有的系統可能會造成的影響。

普遍計算技術和移動工作者已是事實,dba人員必須做好準備以一種有效的、共享資料的基礎設施來支援這些移動工作者。

1.12.4 nosql、大資料和dba

nosql是可以影響dba工作的另一種趨勢。正如其字面意思,nosql是一種最基本的動作。也就是說nosql dbms不支援sql。上升一個層面來說,nosql意味着非關系型的、分布式的、靈活的和可擴充的。大多數nosql産品還是開源的。

nosql産生于對現代資料庫系統支援網絡這一舉措的權衡需求。此外,nosql dbms的一些常見屬性包括:缺乏一種模式、使用簡單、支援複制和“最終一緻性”的能力(不是典型的acid交易能力——原子性、一緻性、獨立性和耐久性)。它并不意味着沒有sql支援,實際上一些nosql産品已經開始支援sql了,于是一些學者将nosql定義為“不隻是sql”。

nosql産品的一些例子

mongodb: www.mongodb.org/

riak: www.basho.com/

nosql運動是和大資料運動聯系在一起的。nosql資料庫是為了提供低成本的存儲和對大量資料的通路。

部署了nosql,通常情況下就隻能以一種方式通路資料,幾乎沒有即興地、臨時查詢的靈活性。

nosql的另一特點是它幾乎不需要資料庫管理。當然,必須建立dbms并進行管理,資料也要備份。是以當有人告訴你任何資料庫系統不需要資料庫管理時,不要相信就是了。

1.12.5 新技術對dba的影響

企業引入新技術,通常dba團隊會率先研究使用。上述所列技術僅作為例子說明近期的一種發展趨勢,以及管理并部署高效、有效資料庫需要的技術。大多數新技術都會對dba産生影響,或多或少。