【DBA | IT人生】資料庫解惑系列
資料庫解惑系列
解惑一 --大資料與Oracle資料庫
今天不發技術文章了,針對於我的學生經常問我的問題,我簡單的給大家解答一下,純粹是主觀的個人觀點。
1.Oracle資料庫現在在市場上還有競爭力嗎?
回答這個問題,首先大家要了解去IOE的概念。
它是阿里巴巴造出的概念。其本意是,在阿里巴巴的IT架構中,去掉IBM的小型機、Oracle資料庫、EMC儲存裝置,代之以自己在開源軟體基礎上開發的系統。主機被X86裝置所取代,傳統資料庫被開源資料庫產品替換,而SAN結構的高階儲存也受到雲化的儲存產品和體系的衝擊。然而,真的能去掉嗎?據我所知,其中的“I”和“E”真的去掉了,但是“O”,只能說去掉了一部分,阿里旺旺和支付寶目前還是使用ORACLE資料庫,去“O”還不如說是減“O”。另外,我要說的是,我們中國的大多數企業,沒有阿里那麼牛的研發團隊,他們能自主研發出OceanDB這樣的資料庫,以至於去掉了部分ORACLE資料庫,所以不要盲目的跟風去IOE,弄不好“去”的同時,帶來的維護成本可能會更高。
2.當前的資料庫產品有哪些,資料庫的發展趨勢?
關係型資料庫(MSSQL,MYSQL,SYBASE,DB2,ORACLE等)---NOSQL/NEWSQL---區塊鏈(可能是一種趨勢)
3.ORACLE資料庫對比其他資料庫產品的的優勢是什麼?
以關係型資料庫為代表的就是ORACLE了,不管是安全性還是穩定性上,它都有一定的優勢。目前市場上出現了很多NOSQL和NEWSQL的產品,這裡我要說明一下,任何產品的存在,都是在適應市場的需求。就好像當初資料庫進化成ER實體關係模型一樣,其實是由於金融銀行的發展。NOSQL的出現,實際上是由於網際網路的快速發展對資料庫提出了新的需求。網際網路專案開發的時間非常緊張,專案需要快速迭代。完全沒有辦法忍受原來傳統的基於SQL資料庫的開發方式。因為在實體關係模型裡,資料庫表的設計需要根據業務邏輯定義得非常準確。而網際網路專案的快速迭代特點註定了它的業務邏輯必須不斷的快速調整。如果一切都從頭再設計資料庫表格,再寫中間的訪問層,就會造成中斷,大家無法忍受,所以導致了NOSQL的出現。大家可以不需要懂SQL語句,就可以寫出來特別好的資料庫應用程式。
那麼,這是不是說明ORACLE資料庫就會被淘汰了呢,其實恰恰相反,SQL不但不會淡出,還要扮演更重要的角色。SQL和程式語言一樣,代表的其實是認識世界和描述世界的一種思維方式。那麼為什麼人們還在使用NoSQL呢,因為NoSQL上手很容易。你甚至不需要學習SQL,使用前也不需要定義資料庫架構。當然也有一些人使用NoSQL是因為比SQL的擴充套件性更好。但從效能上考慮的話,只要資料不能載入記憶體,SQL通常效能都超過NoSQL。至於區塊鏈,目前成熟的產品還不是很多,是否適合於中國這個環境,我個人持保留意見。
4.現在大資料那麼火熱,大資料與關係型資料庫有關係嗎?
一直以來,人們都認為大資料和NoSQL資料庫是天作之合,而關係型資料庫則被打上OUT的標籤。在大多數IT觀察家的眼裡,大資料通常是指那些規模大到難以用傳統關係型資料庫處理的資料集。雖然今天關係模型和SQL依然是資料庫世界的統治者,但隨著大資料時代的到來,越來越多的資料庫並非建築在“關係”之上,且具有更高的可擴充套件性。NoSQL流行的原因是,與SQL相比,NoSQL非常容易上手,你不需要任何設計就能開始使用它。但這也是有代價的,很快你就會發現對資料失去了控制。所以,大多數NoSQL解決方案的優點是:快速訪問資料(只要你捨得把檔案都丟進記憶體)、快速複製/多個節點的資料擴充套件、彈性架構(可以快速增加新的列)。那麼,大資料時代關係型資料庫何去何從呢?我覺得大多數看好NoSQL的使用者都是跟風者。大多數公司根本沒有像Facebook和Google那麼大規模的資料,而且他們其實也根本就支付不起最佳化和持續開發資料庫所需的專家人力成本。SQL不會消亡,NoSQL也無法取代它。因為幾乎所有人都需要關係型資料庫來管理資料。但隨著大資料時代的到來,我個人覺得未來將更多的是SQL和NoSQL的混合使用,而不是誰淘汰誰。
解惑二---關於從事資料庫工作,需要哪些經驗
經常有學生問我,“老師,我現在開始學習Oracle資料庫,但是我沒工作經驗啊,大多數企業都要求有工作經驗的DBA”。沒錯,一個企業很少聘用無經驗的DBA,其實可以理解,一個企業的資料怎麼可能叫一個無工作經驗的人來管理呢,資料在某種意義上來講,就是企業的生命線。今天,我就來說說,面對這樣的困境,我們應該怎麼面對呢?
第一,應聘dba職位到底需要多少經驗
很多人說沒有經驗找不上dba工作,當然很多單位在招聘dba時也確實明確提出至少需要幾年的工作經驗,高階dba職位可能會有這樣的要求,其實對我們絕大多數剛剛想轉行或者剛剛畢業想從事這個職業的新手來說,對從事dba這個職業所需要的知識儲備遠遠大於所謂的經驗。dba職位對新手來說之所以不好找、找上了也不好乾,其實最根本的原因不在於沒有經驗,而在於大家的知識儲備不夠,很多人學習oracle的時間很短,有的是自學了一段時間,有的是透過培訓機構培訓了一段時間,有的乾脆背題庫考了ocp就想找dba工作,這都不現實,大家著急的心情可以理解,因為我也是從那個困難的時侯過來的,學習oracle最大的障礙其實不是oracle本身有多難,而是我們急於求成心切、我們浮躁的心態,當然oracle的東西的確不少,錯綜複雜的糾纏在一起,短時間內不容易理清頭緒,不過只要方法得到,透過堅持學習,總還是可以上手的,學習oracle不需要有多聰明,但是需要能夠坐得住、能忍受剛開始的枯燥和寂寞這是必須的。我經常和學生說,如果有兩個人,一個是做資料庫的,另一個是做語言開發的,誰適應工作快呢,答案肯定是從事資料庫的那個人,也就是上手快,但是要把資料庫做好就不那麼容易了(這裡沒有對任何的開發人員不敬),需要你有超多的知識儲備。
第二,環境很重要
不管是知識儲備也好,經驗也罷,到底如何積累,最後又離不開初學者共同關注的話題:環境,很多人說自己沒有環境,意思是自己接觸不到生產環境,從事dba職業的人都知道真真當你面對生產環境的時侯,那上面可不是隨便能用來練手的,再說生產環境也沒有那麼神秘,重要與否還的看他上面跑的是什麼應用。那到底高手們又是如何成長起來的?其實一臺好一點的電腦可以把你需要的環境都搭建起來,現在的硬體裝置已經非常高大上了,我們平時使用的筆記本,有的已經有8g或者16g記憶體了,在上面跑幾個虛擬機器一點問題沒有,有了虛擬機器,基本上我們需要的環境都可以搭建。所以很多人所說的沒有經驗、沒有生產環境、沒有unix環境等我覺得都不重要,重要的是缺少毅力、過於浮躁,這也可以理解,在迷茫的時侯每個人都容易迷失方向。學習oracle在windows和linux下足夠了。
第三,經驗好像沒那麼重要了
學習oracle的時侯,一切都可以模擬的,只要大家堅持學習,不可能最後沒有經驗的,積累到一定程度、自信心隨之也能增強,到時候再去面試的時侯相信大家能夠感覺到:其實所謂的經驗真的沒那麼重要,都是從平時的實驗中積累出來的。
第四,關於DBA的薪資
我是很不願意回答這樣的問題的,想想看,從事哪一行,你做精了,薪水都不低的。有些人是屬於自信心暴強一類的,會的東西不多,常問初級dba待遇能到多少,時刻關心著銀子,我是這麼認為的:想要獲得什麼首先得淡忘什麼,這個職業有些特殊,越是初級的,越不容易找到工作,待遇也是低的可憐;越是高階職位,越好找、待遇也是超級誘人的。
第五,學習資料庫應該儲備哪些知識
既然想從事資料庫這個行業,首先還是圍繞資料庫來儲備,至於linux、unix等不用專門學習,搭建一些諸如rac環境需要用到的東西到時候現學就可以了,資料庫需要用到的主機知識其實不多。再深層次的還有儲存,我們不需要100%都精通。至於儲存找個模擬器自己琢磨一下,重要的是理解其中的一些概念,所以我覺得這些東西使用的話都不是很複雜。網路、應用等相關的內容都可以在學習db的時侯逐漸的去學習。
這就是我經常和學生說的,先縱向發展自己,然後再橫向發展。你既然選擇了資料庫這個方向,那麼就把它學好學通,然後圍繞著資料庫去學習一些其他的IT技能,比如作業系統、網路、應用、儲存等,IT領域是不分家的。這些都掌握了,再瞭解一下企業的文化,溝通的技巧等。
最後給大家一點忠告吧
找到一個自己感興趣的方向去學習,一個人最終可以在那條路上取得成功,完全卻決於他的性格,每一個人的成功都不可複製。加油吧,同仁們,同學們!~~~~
解惑三---如何找到第一份DBA工作
最近參加OCP培訓的學生比較多,很多人問我該如何獲得自己的第一份dba工作,我簡單的說了說我的理解,和大家分享一下:
看似是找一份簡單的工作,其實這是個不小的問題,我覺得這是個入行的問題,不簡簡單單是個入門的問題,談到入門我們經常提到的是oracle的學習方法等問題,如何快速入門,不同的人學習方法不同,總之離不開勤奮,除了勤奮還得要有興趣,沒有興趣不可能堅持太久,因為學習oracle是個長期的過程,誰想弄個幾個月就想收到成效,甚至說的直白一點就想掙錢這其實不太現實。另外沒有興趣的話也不可能做好一件事,更何況要長期做一件貌似很枯燥的事,所以說要選擇dba這個職業,那麼我覺得首先的入門,連門都沒入就想入行,這是不是有點太輕視這個行業了,我一直覺得dba象個老中醫大夫,越老越值錢…另外dba的工作主要還是和資料打交道,資料是企業的命,誰會把命交給你隨便玩呢…
入門的問題不多說了,網際網路開放到今天,網上的資源已經很豐富了,就看我們能不能擺正心態,靜下心來仔細琢磨了…
Oracle是個位於整個應用系統中間層面的系統軟體產品,下面有os、storage,上面有應用軟體,當然貫穿整個環境的離不開網路,那麼對應的職位有系統工程師(主要從事os,storage工作的),有dba,有和軟體相關的設計人員、開發人員、架構師等,最後還有網管。做為我們首先要清楚自己目前的工作角色是什麼、自己目前掌握的最有力的技術是什麼、它和oracle有多大關係。如果你是個系統管理員,那麼我覺得轉做dba有一些優勢,因為oracle再龐大、再複雜它也的跑在系統上,另外oracle的很多原理最後我們發現其實都是作業系統的原理,比如oracle的最小io單位是block,最小空間分配單位是extent,那麼os其實也是這樣,就拿windows來說,他的最小io單位是扇區,也就是oracle doc裡常說的os block,那麼分配空間的單位其實是簇;如果是從事軟體開發、設計、架構方面工作的想轉做dba也有一些優勢,因為畢竟oracle也是個軟體,很多東西在實現上可能會有相似的東西,比如oracle的專用連線模式其實就和c/s結構很相似,共享連線模式和b/s結構很相似。這樣如果大家能有一些實際工作經驗再加上平常或多或少用一些oracle,那麼轉dba其實可能不是件太困難的事情,當然如果你的工作平常可以交叉到上面我提到的各種角色當中去,那麼靜下心來仔細研究一段時間oracle,最終從事專業的dba也是很容易的事…事實上一個人工作幾年之後也不可能在工作中只從事單一的工種,交叉會很多,除非這個人能力確實一般…
做為dba來說,他們實際工作當中有多少時間是天天在處理故障呢,其實沒有,他們天天做的工作可能都是一些最基本的監控和維護,甚至是打雜,包括開會以及和其它很多部門在協調工作,說的難聽一點可能是扯皮…比如建立一個index,這聽起來是一個及其普通的工作,可是如果在一個7*24小時的高可用系統的一個頻繁訪問的大表上建立的話,那麼我們就不得不考慮index在建立的過程中對應用所產生的影響,歸根到底考慮的問題還是要回到鎖的相容性問題…所以很多人常問dba每天都忙些什麼,其實都是些很多瑣碎的工作,但是這些瑣碎的工作背後可能隱藏著很多風險,這樣要求我們每一個dba都要有紮實的功底(說這話並不代表我自己就有很紮實的功底?)。記得有一個哥們一次在qq上問我要truncate 一個100多G的表如何估算一下時間,也就是大約需要多久,我說一個具有2行資料的表需要多長時間,他差不多可能也是這個時間…他不太相信,問我原理,我告訴他我理解truncate其實就是更換了一個data segment,其實本質上是修改了資料字典,100g的資料oracle沒做任何訪問和調整…最後我建議他自己構造一個幾g的表truncate看看時間…
說了這麼多,其實最終還是告訴大家要時刻堅持學習,首先的入門,如何算入門呢?我是這樣認為的,如果你的語言能力比較強,那麼看官方文件你就有一定的優勢,也就是所說的自學成才;如果你基礎不是很好,也沒有較強的外語能力,我建議你還是找個培訓機構吧,在培訓機構學習,老師把知識及自己的實際經歷傳授給你,這不也是積攢工作經驗的過程嗎?
最後我不得不說一說剛畢業的學生該如何進入這個行業,一般院校剛畢業的學生現在找工作都很困難,要直接從事dba我覺得難度還是比較大,儘管很多人可能考了證照,但是證照就是證照,最終還是得看實力。剛畢業的學生就是想從事dba的話,我覺得不妨考慮一些大的公司,有些大公司可能每年都有給應屆畢業生一些機會,他們會從頭培養,這個當然和企業文化有關,很多公司可能都希望招聘能獨當一面的dba,這就是所說的工作經驗。對於我們沒有工作經驗的弟兄,不妨先曲線救國,找合適的機會轉過來。
解惑四:雲時代的來臨,DBA該何去何從?
今天不發技術文章了,還是根據學生的疑惑,進行一些主觀上的解答。
在很多企業中,尤其是擁有龐大資料庫叢集的大型企業中,DBA們扮演著重要角色。但是,隨著技術的不斷髮展,資料的儲存和管理發生了很大的變化,虛擬化、雲端儲存、微服務等技術的發展對DBA的職業生涯提出了考驗。如果因此你就認為未來DBA們的工作會越來越輕鬆,那你就大錯特錯了,未來,DBA的角色將變得更加重要,雖然現在開發了很多自動化工具,但是技術還沒有成熟,需要做的工作還很多,DBA在接下來的日子裡存在並將長期存在。
任何資料庫新技術的發展都是為了促使資料能夠更加專業化,無論是DBA、資料架構師、資料工程師還是資料科學家都應該以此為己任。現今社會是一個資料為王的時代,企業只有依靠資料庫才能更加高效的完成管理工作,資料讓企業更具競爭力,但是資料的價值還沒有完全被挖掘出來,還有很大的發展空間,很多技術也還在研發階段。
DBA的角色未必是死了,只是轉移到了新的位置。DBA應該把更多的目光聚焦在雲上,例如哪些資料需要遷移上雲,哪些需要遷移下來,如何遷移,以及如何整合雲上的資料等等。DBA們要對自己的職責有一個全新的認識,把自己從一個資料庫的管理者轉變為整個資料庫或者平臺的展示者,將自己的視野看的更寬,那麼未來的路不是更窄而是更加寬闊。整個資料生態也在持續發展中,它們改變了DBA的角色,DBA不再只是管理以Oracle伺服器為中心的公司資料中心,而是要管理存在於各種雲上的資料庫。
雲時代的到來讓DBA們的職業生涯產生了危機,但是有危機感是特別好的事情,有危機才有生機,DBA們也需要與時俱進。未來架構放在雲上,架構不是變得更簡單,而是在某種程度上變得更加複雜。資料庫新技術的不斷湧現雖然接手了DBA原先的部分工作,例如硬體容量規劃、查詢操作、安裝和升級等等,但是管理的問題仍然存在。這並不意味著DBA的工作量會減少。例如它們無法查詢和修復慢查詢或查詢產生的碎片,如何使用最少的資源建立最大的規模,還需要DBA專家來處理。
解惑五-開源資料庫與商用資料庫
前段時間看了一篇文章,叫“The Death Of The CommercialDatabase: Oracle's Dilemma”--“商用資料庫之死:Oracle的困境”,相當吸引眼球,其實作者只是想表達一些自己主觀上的一些觀點,比如企業繼續遷移到雲上,大多數雲上資料庫服務使用免費開源資料庫;開源資料庫不斷完善,功能日益強大,市場份額大幅攀升成為大贏家;商業資料庫不適合新興使用場合;摩爾定律帶來了處理器、記憶體、固態儲存和網路吞吐量等方面的改進等等。其實這樣說法太極端了,商業資料庫不死,跟不上時代發展的商業資料庫才會死。準確地說,商業資料庫並沒有死,而且到目前為止,商業資料庫在功能和技術等方面還是要領先開源資料庫一個時代的,尤其與商業資料庫的老大Oracle相比,差了幾十條馬路,而未來只會越差越大。
但是隨著網際網路的普及,以及網際網路賺取收入模式的轉變,傳統的軟體式銷售策略已經慢慢的背離時代了。同時,人們對資料庫的需求也多種多樣了,定製化和個性化是開源資料庫致勝的法寶之一。另外一個不可忽視的事實是,雲服務越來越流行了,不管是基於商業資料的,還是基於開源資料庫的,在雲服務商那裡,都成了商業資料庫,這也許會是開源資料庫賺錢的重要途徑,同時也是商業資料庫起死回生的一劑良藥。
不管是商業資料庫,還是開源資料庫,不存在誰死這一說法,都是共同發展的,共同進步的。
給大家制作了一張對比表,希望對大家有幫助:
About Me
...............................................................................................................................
● 本文整理自網路
● 本文在itpub(http://blog.itpub.net/26736162)、部落格園(http://www.cnblogs.com/lhrbest)和個人微信公眾號(xiaomaimiaolhr)上有同步更新
● 本文itpub地址:http://blog.itpub.net/26736162/abstract/1/
● 本文部落格園地址:http://www.cnblogs.com/lhrbest
● 本文pdf版及小麥苗雲盤地址:http://blog.itpub.net/26736162/viewspace-1624453/
● 資料庫筆試面試題庫及解答:http://blog.itpub.net/26736162/viewspace-2134706/
● QQ群:230161599 微信群:私聊
● 聯絡我請加QQ好友(646634621),註明新增緣由
● 於 2017-07-01 09:00 ~ 2017-07-31 22:00 在魔都完成
● 文章內容來源於小麥苗的學習筆記,部分整理自網路,若有侵權或不當之處還請諒解
● 版權所有,歡迎分享本文,轉載請保留出處
...............................................................................................................................
拿起手機使用微信客戶端掃描下邊的左邊圖片來關注小麥苗的微信公眾號:xiaomaimiaolhr,掃描右邊的二維碼加入小麥苗的QQ群,學習最實用的資料庫技術。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26736162/viewspace-2142388/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 成為MySQL DBA 部落格系列-資料庫升級MySql資料庫
- DBA(資料庫管理員)資料庫
- Spring&Mybaits資料庫配置解惑SpringAI資料庫
- DBA資料庫管理員要求資料庫
- Serverless 解惑——函式計算如何訪問 Mongo 資料庫Server函式Go資料庫
- Serverless 解惑——函式計算如何訪問 Redis 資料庫Server函式Redis資料庫
- Serverless 解惑——函式計算如何訪問 MySQL 資料庫Server函式MySql資料庫
- Serverless 解惑——函式計算如何訪問 PostgreSQL 資料庫Server函式SQL資料庫
- 如何成為資料庫管理員(DBA)?資料庫
- Oracle DBA1 ---- 資料庫恢復Oracle資料庫
- 面試資料系列(2): 資料庫面試資料庫
- 為什麼DBA需要資料庫廠商的資料庫概念文件資料庫
- Serverless 解惑——函式計算如何訪問 SQL Server 資料庫Server函式SQL資料庫
- 對話布本智慧CEO,為你的人生答疑解惑
- DBA福利-資料庫線上實訓平臺資料庫
- 2 Day DBA-使用DBCA建立資料庫資料庫
- DBA常用資料庫管理SQL (摘錄整理)資料庫SQL
- DBA要謹慎關閉資料庫(轉)資料庫
- 資料庫管理-第142期 DBA?DBA!(20240131)資料庫
- 2 Day DBA-開始資料庫管理-訪問資料庫主頁面資料庫
- 2 Day DBA-使用DBCA建立和管理資料庫—使用DBCA建立資料庫資料庫
- PostgreSQL DBA(1) - 資料庫引數設定#1SQL資料庫
- PostgreSQL DBA(2) - 資料庫引數設定#2SQL資料庫
- 資料庫DBA為什麼拒絕DevOps?資料庫dev
- 2 Day DBA-管理方案物件-管理Oracle資料庫軟體-升級資料庫物件Oracle資料庫
- 2 Day DBA-開始資料庫管理-管理你的資料庫:路線圖資料庫
- 2 Day DBA-安裝Oracle資料庫並建立一個資料庫-概覽Oracle資料庫
- Sql Server系列:資料庫操作SQLServer資料庫
- Sql Server系列:資料庫物件SQLServer資料庫物件
- 分散式資料庫系列(三)分散式資料庫
- 分散式資料庫系列(二)分散式資料庫
- 分散式資料庫系列(一)分散式資料庫
- Sql Server系列:資料庫組成及系統資料庫SQLServer資料庫
- 2 Day DBA-管理方案物件-管理Oracle資料庫軟體-升級資料庫-DBUA支援的資料庫版本物件Oracle資料庫
- 雲資料庫時代,DBA將走向何方?-v4資料庫
- 2 Day DBA-使用DBCA改變資料庫配置資料庫
- 2 Day DBA-使用DBCA建立和管理資料庫資料庫
- 2 Day DBA-介紹-資料庫檔案位置資料庫