想非常精通資料庫的話需要哪方面數學?

現在是做系統集成工程師,想去互聯網公司做DBA,想專精,需要哪方面數學知識?比如離散?線性代數?高數基礎?概率論與數理統計?


什麼是DBA


資料庫管理員,英文是Database Administrator,簡稱DBA。這個職位對不同的人意味著不同的

意義。一個小的軟體開發工作室和一個分工高度明細的大公司相比,DBA的職責來得更加寬泛一些。一個公司,不管它是自己開發應用軟體,還是購買第三方的應用軟體,只要涉及到資料庫(有多少不涉及資料庫的應用軟體呢?資料庫是商業的靈魂和大腦啊),就需要確定是否僱傭一個或幾個DBA。知道DBA這個職位有哪些要求,對於企業內部這個職位的定義或者對於那些未來的DBA將是至關重要的。


下面我列出了DBA的一些職責


安裝和升級資料庫伺服器(如Oracle、Microsoft SQL server),以及應用程序工具。 資料庫設計系統存儲方案,並制定未來的存儲需求計劃。 一旦開發人員設計了一個應用,就需要DBA來創建資料庫存儲結構(tablespaces)。 一旦開發人員設計了一個應用,就需要DBA來創建資料庫對象(tables,views,indexes)。 根據開發人員的反饋信息,必要的時候,修改資料庫的結構。 登記資料庫的用戶,維護資料庫的安全性。 保證資料庫的使用符合知識產權相關法規。 控制和監控用戶對資料庫的存取訪問。 監控和優化資料庫的性能。 制定資料庫備份計劃,災難出現時對資料庫信息進行恢復 維護適當介質上的存檔或者備份數據 備份和恢復資料庫 聯繫資料庫系統的生產廠商,跟蹤技術信息。

DBA的個性特點

 很多時候管理人員都忽視了DBA的個性特點,他們只關注DBA的技術能力。上面談到的每個職責都意味著:DBA需要跟各種人員打交道,這些人員可能是銷售商、用戶、開發人員或者管理人員。這說明:DBA必須具有下面的個性特點:

自信心 好奇心 堅韌的意志力 老練 自我驅動 注意細節


為什麼這些個性特點很重要呢?

 我就有幾個缺乏自信心的部下,他們反覆問我一些事無巨細的問題,他們沒有信心哪怕做最小的決定。他們也缺乏工作的主動性。這對於初級DBA來說可能問題不太大,但對於那些高級DBA來說,如果他們缺乏自信心,他們又可以依賴誰幫他們決策呢?在DBA的面試中,即使你不能回答某個技術問題,你也要表現出足夠的自信心。最致命的不是不知道問題的答案,而是不知道從哪兒得到答案。


幾乎所有的資料庫系統都在不停地更新。但並不是所有的更新都有技術文檔。對於好的DBA來說,好奇心是必需的。沒有好奇心和求知慾的DBA總是等待有人告訴他們答案。而一個求知慾強的DBA將安裝最新版本的資料庫系統,並立即開始搜尋那些哪怕是細微的功能和性能上的差異和增強,從而改進自己的工作。應試時一個必然問及的問題是:你手頭有哪些參考資料?你如何使用它們?毫無疑問,如果你只回答了資料庫的文檔,或者你甚至沒有讀過他們,你的"股票市值"將大大下降。

好奇心會驅使DBA們理解數據字典(Data Dictionary)、管理工具(Tools)或者其他支持包(Packages)。 


DBA常常會碰到棘手的問題。尋找答案是一個需要堅韌意志力、可以經受摔打的個性特點。

我常常在一些討論組或者論壇上看到DBA們提出的問題,這些問題往往是提問者自己可以解決的,如果他們具有堅韌的個性特點,並努力尋求問題的答案。自我驅動對每個人都是很重要的,對DBA尤其如此。DBA要能想辦法使問題出現,而不是等待問

題的出現。自驅力強的DBA常常設法取得或者自己寫一些必要的腳本(Script)來監控包括數據表大小

(Table Size)、表空間使用(Tablespace Usage)等項目,這些項目如果被忽視,他們將遇到麻煩。應試的時候DBA們常常被問及在PL/SQL、SQL或者SQL*PLUS方面的經驗,這些問題將把你從從來沒有編寫過自己需要的腳本的那些DBA們區分開。


不用說和用戶,就是和程序員和管理人員打交道,也需要你足夠老練。一個一點不會處事的DBA不會為你做什麼好事,只會在你的部門點燃敵對情緒的烈火。老練是這樣一種能力,你勸告某個人到地府去,哈哈,最後這個人懷著渴望的心情去了。很多時候,開發者、管理者、用戶,他們會提出毫無道理的需求,DBA們需要老練地引導、修正它們的要求,說服他們。在應試時,你的應對就很能說明你是否老練。


最後說說注意細節,這種性格傾向非常重要。注意細節的DBA們衣著整潔,有自己的日程安排,在應試前對應聘的單位做過調查。注意細節的DBA們深入了解資料庫的內核,並能理解視圖、表之間的關係。


DBA的等級

  DBA的等級並不是很嚴格的。按照對資料庫的掌握情況,我簡單地分成三個等級:初級Primary、中級Intermediate和高級Senior。


初級DBA又稱為DBBS,是英文Database Baby Sitter的縮寫。初級DBA常常是兼職的,他們往往同時是程序員或者兼任其他的工作。初級DBA往往把個人簡歷寫得很棒,參與了很多和資料庫有關的

項目或工作。但是,這些項目或者工作往往是:第三方軟體供應商已經安裝並配置了資料庫,他們只做一些監控的工作。他們能處理一些簡單的問題,但大多數時候他們嚮應用軟體供應商求救。初級DBA更喜歡圖形化的資料庫管理或者監控工具,他們喜歡Access這樣的桌面資料庫簡單易用,並把這些小型資料庫的經驗簡單地應用到大型資料庫相關的工作中。


初級DBA是最好區分的。而中級DBA和高級DBA就不太好區分。他們的差別在於經驗的不同和個性特點、能力方面的差異。中級DBA比較多,他們可以勝任高級DBA的大部分工作,包括:

資料庫安裝 資料庫配置和管理 許可權設置和安全管理 監控和性能調節 備份和恢復 解決一般的問題

中級DBA往往從業一年左右,熟悉某種操作系統環境下的資料庫。因為對中級DBA來講,WindowsNT和Unix是有很大差別的。中級DBA對SQL比較熟悉,他們自己購買了幾本資料庫方面的書籍,並深入鑽研。中級DBA往往同時兼任資料庫程序員,他們的工作對性能、穩定性、安全性的追求基本上不是很高,往往配合高級DBA做一些例行工作。

高級DBA在國內是非常少的。他們購買了太多的資料庫方面的英文資料。相對於他們的報酬來講,買書的錢是很少的一個比例。高級DBA一般都熟悉很多種操作平台下

的幾種大型資料庫。他們知道各種不同資料庫在不同環境下的優勢和劣勢,並能在資料庫平台和資料庫環境的選擇方面做出決策。他們一般通曉系統架構和資料庫設計,並能對資料庫進行各種級別的優化。


高級DBA一般都配有助手,他們更偏向做決策和計劃。高級DBA往往在銀行業、保險業、在線交易等對穩定性、安全性、性能都要求比較高的關鍵業務處理領域大顯身手。很多時候,是否取得資料庫專家認證證書並不是很重要。我知道很多資料庫廠商的培訓只要你去了都會獲得證書。有很多的公司提供商業化的培訓,他們的服務質量也有好有劣。所以證書並不是特別地有意義。


幾種流行的資料庫系統


最"容易"的資料庫系統-Microsoft SQL Server

如果你打算做一個DBA,建議你選擇那些現在比較流行的資料庫系統。這意味著你將有更多的就業機會、交流和培訓機會,而且,流行自有流行的理由,你可以因此省心很多。當然,就業競爭壓力也比較大。一般的入門者選擇Microsoft SQL Server,這是非常適合中小型企業的資料庫系統,熟悉Access的讀者很容易就能初步使用Microsoft SQL Server,成為一個DBBS。


最"難"的資料庫-無冕之王Oracle

  如果你有機會接觸到Oracle,那可是個好機會。Oracle是目前最看好的資料庫廠商,由於其強大的功能和可配置、可管理能力,Oracle DBA的薪資一般比其他資料庫管理員的薪資要高。而且,Oracle在大中型企業的關鍵應用也更加普遍了。Oracle可以運行在Windows NT、Sun Solaris、Linux等平台下。很多情況下要求你不僅僅熟悉NT,還要你熟悉Unix;而且Oracle不太友善的界面和成箱的Oracle產品資料可能也是一個障礙。


資料庫系統的貴族-IBM UDB/DB2

  作為30年資料庫研究的成果,IBM DB2確實稱得上"資料庫系統的貴族"。不管是小型商業系統,還是大的銀行系統,用DB2都是可以高枕無憂的。最近推出的新版DB2 6.1, 管理和調節工具更加卓越和便於使用。DB2 可以運行在Intel架構上,也可以運行在IBM的S/390大型計算機上。如果你所在的行業對IBM的機器特別地稱道,建議你學習IBM DB2。


下面不是全部列表,但是包括了DBA的典型職責:
· 把監視資料庫實例當作每日必做工作以保證其可用性。解決不可用的問題。
· 收集系統統計和性能信息以便定向和配置分析。
· 配置和調整資料庫實例以便在應用程序特定要求下達到最佳性能。
· 分析和管理資料庫安全性。控制和監視用戶對資料庫的訪問。必要時審計資料庫的使用。
· 監視備份程序。必要時提供恢復。測試備份與恢復程序。
· 升級RDBMS軟體並且在必要時使用補丁。必要時升級或者遷移資料庫實例。
· 通過資料庫相關動作來支持應用程序開發人員。
· 跟隨資料庫趨向和技術。當可應用時使用新技術。安裝,測試和評估Oracle新的相關產品。
· 執行存儲和物理設計。均衡設計問題以完成性能優化。
· 創建,配置和設計信的資料庫實例。
· 診斷,故障檢測和解決任何資料庫相關問題。必要時聯繫Oracle支持人員以便使問題得到較好的解決。

· 確保Oracle網路軟體(SQL*Net, Net8, Names, OiD)配置和運行的很好。
· 與系統管理員(Unix NT)一起工作以保證Oracle相關事務得到很好的處理。
· 為有效的,定期的維護資料庫創建任何必要的腳本。


假如我沒有任何經驗,我怎樣才能得到DBA的工作呢?我沒有工作的話又怎麼能得到DBA經驗呢?


這是要戰勝的最困難的障礙。最困難的部分是獲得第一個DBA工作。這部分的剩下部分將針對實現你第一個DBA工作的目標給你一些建議。

提示#1:接受教育。--儘可能多的學習有關資料庫的知識。這很可能將佔用你正常工作以外的部分時間也精力。參加本地大學舉辦的資料庫培訓班。許多培訓公司都會舉辦資料庫管理員的培訓班。假如你的老闆不資助你的學習,那麼你可能不得不自己支付這筆費用。許多DBA職業要求至少為計算機科學或相關專業本科以上學歷,因此你必須至少有那樣的文憑。


提示#2:鍛煉成為DBA。--許多資料庫供應商都允許你下載他們資料庫系統的測試版或評估版。下載一份並且在自己的個人電腦上安裝軟體。練習使用資料庫。故意破壞資料庫並且嘗試修復它。嘗試著履行你所能想到的儘可能多的DBA職責。測試和磨練你在自己的測試平台上的技能這樣你就可以證明你的資料庫管理能力。


提示#3:獲得認證。--許多資料庫提供商都提供自己的資料庫產品的認證。許多公司現在都把認證看作是一種標準。需要記住的一件事是僅獲得認證是不夠的。通過DBA認證測試並不意味著你知道如何管理一個資料庫。它只是告訴你以後可能的老闆,現在你擁有了一定的技術。它還告訴你的老闆你對DBA工作的態度是很認真的。我看到許多人抱怨他們已經得到了認證但是沒有經驗,卻仍然不能得到第一份DBA工作。認證本身並不能使你得到工作,但它是無害的。即使沒有其他的,在你進行認證的時候你也已經學到了許多知識。只是不要依賴認證來給你帶來你要找的工作。你需要的比這還要多。但它會在最後幫助你。


提示#4:利用你現有的技能。--許多DBA具有系統管理員背景。其他的有應用程序開發背景。假如可能,查看你能否利用現有的技能來得到工作。現在的目標就是為你和你的老闆創造一個雙贏的局面。例如,讓我們假設你已經是一名系統管理員而想進入DBA領域。也許你會找到一份工作,這份工作一部分時間裡可以用到你的系統管理技能,並且在剩下的時間裡可以使你涉及到資料庫管理領域。假如你已經是一名某個產品平台上的DBA但你希望轉到其他產品平台,那麼看看你能否找到一份同時接觸兩個產品平台的工作。這樣,公司和你都得到了想要的。在你定向到了DBA工作後,你可以試著得到一個能讓你全職作它的職位,也許還可以在同一個公司中。


提示#5:利用現在的機會。--有時候,一個人進入DBA領域僅僅需要的是正確的地方和正確的時機。假如你現在的老闆有一個機會讓你進行任何資料庫的項目,抓住這個機會!任何資料庫經驗就比沒有資料庫經驗要好。讓你的管理者知道你十分積極的在尋找任何可能的資料庫機會。他們就有可能在下次機會到來的時候想到你。進行這些資料庫項目以及看到你要成為一個DBA的渴望以後,他們可能會決定培訓你,提拔你。許多許多人都是以這種方式獲得他的第一個DBA工作,在進行了一些資料庫相關的項目後不知不覺的成為一名較低級的DBA。通常當一名DBA離開公司後,公司將在內部尋找一個候選人,假如他們認為這名候選人是可訓練的話。


提示#6:尋找較低級的DBA職位。--假如你只是為了一個較低級的DBA工作,看到DBA職位的需求描述說他們正在尋找高級DBA或者其他的。所以,讓我們嚴謹一些。你並沒有一個高級方面的經驗。我已經討論過了對於這樣的職位為什麼公司不會考慮你。但是他們會在低級的職位上考慮你。低級的DBA在高級DBA的指導下完成工作。他們摸索竅門。一般來說,高級DBA對資料庫承擔責任,同時也獲得所有的榮譽。但是不要焦急。隨著你的事業發展,你將會有越來越多的責任和得到越來越多的信任

。因為你沒有任何經驗,你應該從這裡開始啟航。


來源;DBA資料庫管理員要求


關係代數


上面那個一大篇的東西感覺並沒有怎麼回答題主的問題,反而像是哪裡粘貼的一篇介紹DBA的東西。。
我覺得和資料庫相關的數學科目應該就是離散數學,線性代數,概率,和資料庫關係不大,計算機方面的資料庫,一個很大的方面就是查詢語句的高效,查詢語句應該和數理邏輯有很大關聯,所以離散數學中的數理邏輯應該好好學習和應用。
不過要是說精通資料庫,那點數理邏輯感覺就不太夠了,而且數學的數理邏輯重在理論,和計算機聯繫的並不是那麼直接,還需要自己去領會,還是多看看計算機方面資料庫的書籍吧,如果裡面涉及到哪些數學知識,再去針對性的學習我覺得更好。


資料庫有很大的範圍,單單dba這一崗位在個人方向上依然有很多細分的地方.具體可參考下面這本書.

題主說的那些基礎數學可以說對你成為初級甚至中級,或者說對絕大多數的db從業人員都無法起到顯著的作用.當然後面轉向挖掘方向數學知識是必不可少的. 誠然優質嚴謹的理科思維可以更好的幫助如何成為優秀的dba,但也僅僅是幫助,所以其實要做的很簡單,動手學習實踐操作. 等哪天你覺得你自己的基礎知識不夠了再回去看.


搗騰


不需要數學


找機會實踐


作為DBA,不需要什麼專業的數學知識,實踐即是真理。


推薦閱讀:

同一台伺服器上裝MySQL和oracle會有衝突么?
爬蟲的資料庫選型,redis, leveldb, mongodb, mysql 選哪個?
mysql 的事件調度器(Event Scheduler)穩定性如何?主要用在什麼場合?
大家設計資料庫時使用外鍵嗎?
如何MySQL鏈接Excel,實現一個簡易的自動更新報表?

TAG:資料庫 | MySQL | 甲骨文Oracle | 數據分析 | 資料庫管理員DBA |