爲何如今大部分互聯網公司使用的數據庫是MySQL?還真是這樣哦,個人網站使用的是mysql數據庫,我所在公司的網站也是使用的mysql數據庫,個人不少客戶網站也都是使用的mysql數據庫,不多有使用微軟的mssql或甲骨文的oracal數據庫的,這是爲何呢?
1、mysql是開源免費的。
這應該是最主要的緣由吧,使用mysql數據庫是不須要花錢的,因此,大多數公司爲了節省公司的成本,就會首選mysql數據庫。不論是微軟的mssql數據庫,仍是甲骨文的oracal數據庫都是須要收費。固然,在安全級別上,oracal數據庫是最高的,是一些數據公司的首選(如:電商平臺對安全要求最高),可是,對於通常的公司來講,mysql數據庫的安全級別就夠了,不必花大價錢購買oracal。
2、PHP+mysql是網站開發者的首選。
網站的開發語言不少,如:PHP、java、asp、asp.net、python等等,這些開發語言各有各的優點。可是,市面上絕大多數據網站都是經過PHP語言開發的,PHP語言在網站開發上的優點遠遠大於其它幾種語言,這也是業內公認的。而PHP+mysql的組合更是網站開發者的不二之選,因此,得益於PHP語言,mysql也受到最大的追捧。
3、大多數服務器使用的是linux系統。
如今的網站服務器系統主要有2種:windows系統和linux系統。對於一個公司來講,網站的穩定運行是最重要的,而linux系統的穩定性要比windows系統要高不少,因此,絕大多數的網站會選擇linux系統做爲本身網站服務器的系統。而LAMP(linux+apache+mysql+php)和LNMP(linux+ngnix+mysql+php)是目前linux服務器使用最多的PHP環境架構,因此,mysql數據庫在linux系統服務器上獲得普遍的使用。
4、不少網站程序都是基於mysql數據庫的。
並非每個公司都有本身的網站開發人員,因此,不少公司在作本身的網站時,都會選擇易於上手的網站程序來搭建本身的網站,好比:wordpress、織夢CMS、帝國CMS等等,尤爲是wordpress程序,受到國內外衆多用戶的追捧,全球用戶能夠用億來計算。而這些網站程序基本上都是基於「php+mysql」組合開發的,可見mysql數據庫受歡迎程度。
總之,到目前爲止,mysql數據庫依然是最受歡迎的數據庫,也是使用最多的,它的輕量級、它的開源免費、它的易用性、它的友好性都讓它在網站開發中受到開發者的重視和追捧,真可謂是「衆星捧月」。
爲何互聯公司都用MySQL非oracle,難道只是便宜?
—第一段—
當數據量太大、併發過高時,有兩種解決方案:
一、仍然使用集中式方案,提高單臺主機的能力。
二、使用分佈式方案。
兩種方式均可以解決問題,就看高層如何選擇了。阿里選擇了分佈式。
一旦選擇了分佈式,好比將一個大表分到多個數據庫中。若是是Oracle,數據庫太多license費用隨之上升。若是是MySQL,數據庫再多也不用擔憂License問題。因此,MySQL勝出。
而Hadoop類的純分佈式方案,在OLTP下,優點並不明顯。它們是爲大數據而生的。
若是選擇了集中式,照樣有方法解決。由於世界上並不僅有BAT,並不是Oracle搞不定高併發、大數據量的OLTP系統,就看硬件、和人的投入了。
阿里只因此沒有選擇集中式,主要是其餘團隊想上位,他們爲高層描繪一個美好的明天。
你沒看到阿里的這一輪去O風潮,阿里系老一代DBA都失去主導權了嗎。技術圈裏不多再有他們的聲音。這就是政治,說白點就是江湖。有人的地方就有江湖。阿里系老一代DBA中不乏有拿着千萬的股票提早退休的,退出江湖,衣錦還鄉,不錯啊。
分表、分庫後,面臨兩個問題:
一、要有強大的中間層。阿里在這一塊的投入是巨大的。這直接催生了另外一派勢力。
二、分表、分庫後,跨庫事務成爲問題。這一塊至今都沒有好的方案解決。
至於互聯網業務的發展,固然不會被Oracle限制。到是上面所說的分表的方案,限制了一部分應用。若是當初選擇的是集中式方案,應該不會有這方面的限制。
—第二段—
源碼修改,阿里所造的較大的修改,據瞭解只有仿照一個日本人的方式,去掉了MySQL的解析過程。
修改過的MySQL的應用範圍,不太清楚。阿里的重心也不在這一塊,對源碼,要了解。
瞭解源碼的目的是爲了更深的瞭解MySQL的優、缺點,更好的使用MySQL。還有,能夠基於MySQL開發一些產品。
這實際上是使用開源產品的兩大優點:
一、能夠更加了解軟件運做的原理,更好的設置MySQL。一旦出了故障也能夠準肯定位。
二、能夠更容易開發周邊產品。好比開發解析OracleRedo的產品極爲困難,但MySQL就不同了,Redo的格式是公開的。php
Oracle如今是愈來愈封閉,在不使用調試技術的狀況下,研究Oracle日漸艱難。許多性能資料、等待事件的本意無從知曉,問題的定位比較困難。開源的MySQL不存在這樣的問題。國內互聯網巨頭多在開發基於MySQL網絡協議的代理層。做文網https://www.isanxia.com簡單點說你鏈接MySQL,實際上是鏈接了代理層,由代理層把你的SQL發到某個MySQL庫中執行,若是是OLAP型SQL,由代理層用協調器,將SQL分佈到多個MySQL庫中執行,再由代理層合併結果。
若是下層是Oracle,這樣的代理層開發極爲困難,由於要全面瞭解網絡協議。若是是MySQL則不一樣了。
—第三段—
OLAP、大數據領域,分佈式優點明顯,Oracle、MySQL這些爲集中式設計的數據庫劣勢明顯。
但在OLTP領域,純分佈式(好比Hadoop)方案並沒有優點。
用MySQL作分佈,要有一個代理層(或中間層),程序鏈接這個代理層,程序覺得鏈接的是一個MySQL,但實際是背後是一堆MySQL。
這樣的分佈式方案,在跨庫事務這一塊上是弱點,有可能限制了業務發展。
純集中式方案不存在這樣的問題。
分佈式在OLTP中也要用,但對於OLTP來講,不到萬不得一,不要分佈。能分兩臺、不要分三臺。
OLAP簡單的堆機器、拼機器數量沒問題,OLTP下機器數量一旦失控,其產生的問題、成本等等更難以控制。
如今硬件都在提高。SSD、InfiniBand更快的網絡等等技術,使用RAC這樣的有限式分佈方案,基本上均可以知足OLTP的須要。
而MySQL因爲開源,能夠帶來兩大優點:
一、能夠更加了解軟件運做的原理,更好的設置MySQL。一旦出了故障也能夠準肯定位。
二、能夠更容易開發周邊產品。好比開發解析OracleRedo的產品極爲困難,但MySQL就不同了,Redo的格式是公開的。
Oracle如今是愈來愈封閉,在不使用調試技術的狀況下,研究Oracle日漸艱難。許多性能資料、等待事件的本意無從知曉,問題的定位比較困難。開源的MySQL不存在這樣的問題。
國內互聯網巨頭多在開發基於MySQL網絡協議的代理層。簡單點說你鏈接MySQL,實際上是鏈接了代理層,由代理層把你的SQL發到某個MySQL庫中執行,若是是OLAP型SQL,由代理層用協調器,將SQL分佈到多個MySQL庫中執行,再由代理層合併結果。
若是下層是Oracle,這樣的代理層開發極爲困難,由於要全面瞭解網絡協議。若是是MySQL則不一樣了。java