在咱們互聯的小型企業中,有的公司3百多臺的數據服務器也沒有用DBA,而是運維人員來維護。咱們運維人員爲何要學好DBA那,由於數據庫是企業架構的瓶頸。mysql
99%互聯網的公司的網站機構瓶頸都在後端,一個是存儲一個是數據庫數據庫,第一大瓶頸是數據庫極難擴展的,第二大瓶頸是存儲,只要將這兩個學好,作網絡架構是很是容易的。由於數據庫和存儲的極難擴展的特性所應用到了緩存和cdn這些技術的價值,cdn和緩存的目的都是爲了減輕存儲的壓力。爲何是加緩存那而不是直接擴展數量那,一個是很差擴展,另外一個是即便擴展了效率也不高,就拿數據庫爲例,加一個memched比後端擴展5臺mysql的效果都好。linux
簡單說,數據庫就是一個存放數據的倉庫,這個廠庫是按照必定的數據結構來組織、存儲的咱們能夠經過數據提供的多種方法來管理數據據庫的數據。
數據庫誕生距如今大概60年,2000年後,數據庫不在僅僅是存儲和管理數據了,而轉變成用戶所須要的各類數據管理的方式,數據庫有不少種類和功能,從簡單的存儲有各類數據的表格到可以進行海量數據據存儲的大型數據系統都各方面獲得了普遍的應用。web
隨着互聯網web2.0網站的興起,傳統關係型數據庫在應對web2.0網站,特別是對於模塊日益擴大的海量數據,超大規模和高併發的微博、微信、SNS類型的web2.0純動態網站已經顯得力不從心,暴露了不少難以克服的問題,例如:傳統的關係型數據IO瓶頸、性能瓶頸都難以有效的突破,因而開始出現大批針對特定場景,以高性能和使用便利爲目的功能特異化的數據產品,NoSQl(非關係型)類的數據庫就是在這樣的場景中誕生並獲得很是迅速的發展。算法
簡單來說就是web2.0後動態請求的增長,傳統的數據庫已經成爲機構的瓶頸,因此纔會後noSql的發展。sql
非關係型數據庫的種類
1.(鍵值)存儲數據庫
鍵值數據庫就是相似於傳統語言中使用的哈希表,能夠經過key來添加、查詢或者刪除數據,由於使用key主鍵訪問,因此會得到很高的性能以擴展性。
鍵值數據庫主要使用的是哈希表,這個表中有一個特定的建和一個指針指向特定的數據。key/value 模型對與IT系統來講的優點在於簡單、易於部署、高併發。
典型產品:Momcached,Redis、MomcacheDB、Berkeley DB
2.列存儲數據庫
列存儲數據庫將數據存儲的列族中,一個列族存儲常常備一塊兒查詢的相關數據。舉個例子,若是咱們有一個Person類,咱們經過常常一塊兒查詢他們的姓名和年齡而不是薪資。這種狀況下,姓名和年齡就會備放入一個列族中,而薪資則在另外一列族中。
這部分數據庫一般是用來對應分佈存儲的海量數據。鍵仍然存在,可是它們的特色是指向了多個列,這些列是由列家族來安排的
典型產品:Cassandra,Hbase
3.面向文檔的數據庫
文檔數據庫的靈感來自與Lotus Notes辦公軟件的,並且它同第一中鍵值存儲類型。該類型的數據類型是版本的文檔,半結構的文檔一特別的格式存儲,好比json。文檔數據可一看做是鍵值數據的升級版本。容許之間嵌套鍵值,並且文檔數據庫比鍵值數據庫的查詢效率高。
面向文檔數據庫會將數據以及文檔的形式存儲,每一個文檔都是自包含的數據單元,是一系列數據項的集合,每一個數據項都有一個名稱於應鍵值,值既能夠是簡單的數據類型,如字符串、數字和日期等;亦能夠是複雜的類型,若有序表和關聯對象,數據存儲的最小單位是文檔,同一個表中存儲的文檔屬性能夠是不一樣的,數據可使用XML、JSON或者JSONB等多種形式存儲。
典型產品:mongoDB、CouchDB
4.圖形數據庫
圖形數據庫容許咱們將數據以圖的方式存儲,實體會被做爲頂點,而實體之間的關係則被做爲邊,好比咱們有三個實體SteveJobs、Annle和Next、則會有「Founded by」的邊將Apple和Next鏈接Steve Jobs
圖形結構的數據庫通其餘行列以及剛性結構的SQL數據庫不一樣,它是使用靈活的圖形模型,而且可以擴展到多個服務器上,NoSQL數據庫沒有標準的查詢語言(SQL),所以進行數據庫查詢須要定製數據庫類型,許多NoSQL數據庫有REST式的數據接口或或者查詢API
典型產品:Neo4J、InforGr id數據庫
關係型數據庫是把複雜的機構歸結爲簡單的二元關係(即二位表格形式)。在關係型數據庫中,對數據的操做幾乎所有創建在一個或多個關係表格上,經過對這些關聯表格分類、合併、鏈接或選取等運算來實現數據庫的管理json
Mysql 數據庫的主要應用範圍,是互聯網後端
典型產品:Mysql ,oracle 緩存
有必要學習oracle嗎? 互聯網公司是沒有必要學習的,互聯網公司都用mysql,由於oracle太笨重、太貴了,在傳統的一些行業中可能會用到(證卷,金融,政府。。。)。
Mysql數據庫是一箇中小行的關係數據庫管理系統,軟件開發爲瑞典Mysql AB公司。在2008年1月16號備sun公司收購,後Sun公司又被oracle公司收購。目前Mysql被普遍應用在Intnet上的大中小網站中。因爲體積小、速度快、整體擁有成本低,尤爲是開放源代碼這一特色,許多大中小網站爲了下降網站成本而選擇了Mysql做爲網站數據庫,甚至國內致命的淘寶也選擇棄用oracle而更換爲Mysql。Mysql數據庫的主要應用範圍;互聯網領域,大中小行網站,遊戲公司,電商平臺等。服務器
毫無疑問,既成事實,絕大多數linux操做系統的大中小互聯網網站都在用Mysql做爲後端的數據庫存儲,從大型的BAT門戶,到電商平臺,分類用戶等無一例外都使用mysql數據庫。那麼Mysql數據庫到底有那些優點和特色,讓你們義無反顧的選擇它呢?
緣由有一下幾點:
1)Mysql性能卓越,服務穩定,不多出現異常宕機
2)Mysql開放源代碼且無版權限制,自主及使用成本低
3)Mysql歷史悠久,社區及用戶很是活躍,遇到文帝,能夠尋求幫助
4)Mysql軟件體積小,安裝使用方便,而且維護成本低
5)Mysql口碑效應,是的企業無需考慮是使用,LAMP,LEMP流行架構
6)Mysql支持多中操做系統,提供多中API接口,支持多種語言,特別多流行的PHP語言有很好的支持
mysql 官網:https://www.mysql.com/,msyql採起雙受權的政策,和大多數的開源產品同樣,分爲社區版和商業版,兩者兩個版本又各自分四個曉得版本,這個四個曉得版本分別是alpha版、Beta版、RC版和GA版。
alpha 版:mysql公司內部測試用的版本,不對外開放。
beata 版:完成功能和測試後的版本。
RC版:生產環境發佈前的小版本,是beata升級後的版本。
GA版:對外的穩定版。
msyql在發展5.1版本後,從新規劃爲三條生產線,爲的是提升市場的競爭力
第一條生產線:5.0.xxx--5.1.xxx生產線
這條生產線繼續完善和改進用戶體驗和性能,同時增長新功能,這條生產線能夠說是早起生產線的延續。
第二條生產線:5.4.xxx--5.7.xxx生產線
第二條產品線是爲了更好的整合msyql AB 公司社區和第三方公司的新存引擎,以及吸取新的算法等,從而更好的支持SMP架構,提搞性能而作了大量的代碼重構版本從5.4開始目前發展到5.6x
***公司經常使用的版本是5.5版本
第三條產品線:6.0.xx--7.1.xx 產品系列(使用比較少,爲的是解決集羣的問題,可是各公司都用本身的解決方案)
第三條產品先是爲了更好的推廣mysql cluster版本,以及提升性能和穩定性,以及功能改進,使其對cluster引擎提供更有效的支持和優化,版本爲6.0開發版,目前到7.1xx
1)選擇開源的社區版的穩定版GA 版本
2)選擇5.1或5.5,互聯網主流是5.5 ,其次是5.1和5.6
3)選擇mysql數據庫發佈GA版,必定是發佈6個月以上的GA版本
4)要選則先後幾個月沒BUG修復的版本,而不是大量修復BUG集中的版本
5)最好向後較長時間沒有發佈更新的版本
6)要考慮開發人員開發程序使用的版本是否兼容你的版本
7)作爲內部開發測試數據庫跑3到6個月的時間
8)優先企業非核心業務跑新版的數據庫
9)行DBA高手請教,那個產品更適合
10)通過上述流程沒有問題後,能夠全面上新的數據庫
7、mysql多實例介紹(須要補充)
什麼是mysql多實例?簡單說,就是一臺機器上開啓多個不一樣對的服務端口(3306-3307),運行多個mysql服務進程,這些服務進程經過不一樣的socket監聽不一樣的服務端口來提供各自的服務。這些mysql多實例共用一套mysql安裝程序,使用不一樣(也能夠相同)的mysql配置文件、啓動程序、數據文件,在提供服務時多實例Mysql在邏輯上看來是各自獨立的,多個實例的自身根據配置文件對應的設定值,來取得服務器的相關硬件資源多少。mysql多實例就像房子的多個臥室同樣,每一個實例能夠看作一個臥室,整個服務就是一套房子,服務器的硬件資源能夠看作房子的衛生間、廚房、客廳同樣,是房子的公共資源。多實例的問題:當某個服務實例併發很高或者有慢查詢時,整個實例回消耗整個更多的內存、cpu、磁盤IO資源,致使服務上的其餘實例提供服務的質量降低,這樣至關於你們住在一個房子的不一樣臥室內,早上起牀上班,都會刷牙。。。這樣爲衛生間會長期佔用,其餘人就要等待同樣的道理。多實例的應用場景1)資金緊張的公司。公司業務量不大有捨不得花錢,能夠經過3臺服務器部署6-9個實例,交叉作主從同步及讀寫分離,實現6-9臺服務器纔有的效果,這裏要強調的是所謂的儘可能獨立是相對的。2)併發訪問不是特別大的業務。服務的資源基本是浪費的。這個時候就和適合多實例的應用,若是對SQl語句優化作的好,MYSQL多實例是一個值得用的技術,及使併發很大,合理分配好系統資源,也不會有太多問題。3)門戶網站應用MYSQL多實例的場景。百度搜索引擎的數庫就是多實例,通常是從庫,cpu爲48C內存96G,跑3-4個實例,sina網也是用的多實例,內存48G左右。門戶網站使用多實例的目的是配硬件好的服務,節省IDC機櫃空間,同時,跑多個實例也讓硬件資源不浪費。