回覆列表
  • 1 # 智慧神算

    因為沒有哪種資料庫能支撐這麼大的資料量。所以,大型網際網路公司都不用oracle,而是用mysql。因為mysql雖然單獨1臺不如oracle,到時他們會用很多臺mysql。

    而且,mysql是開源的,facebook等公司用的mysql都是他們最佳化過的版本,增加了適合他們自己特點的功能和效能的提升。

    現代的大使用者量的網站早就不用oracle了,而是用分散式的很多臺mysql機器。淘寶開始也用oracle,後來發現支撐不了服務,所以慢慢也全部轉成mysql了。

  • 2 # 獨立的網際網路從業者

    儘管Facebook使用MySQL,但它們並不是一成不變的使用它。 事實上,他們的團隊已經提交了許多MySQL核心和Innodb外掛的高效能增強。 他們的主要重點是增加效能計數器到Innodb。 其他更改集中在IO子系統上,包括以下新功能:

    1 innodb_io_capacity:設定伺服器的IO容量以確定後臺IO的速率限制

    2 innodb_read_io_threads, innodb_write_io_threads:設定後臺IO執行緒

    3 innodb_max_merged_io:設定可能合併到一個大IO請求中的相鄰IO請求的最大數量

    Facebook使用MySQL作為鍵值儲存,其中資料隨機分佈在一大組邏輯例項中。 這些邏輯例項分散在物理節點之間,負載均衡在物理節點級完成。 Facebook已經開發了一個分割槽方案,其中全域性ID被分配給所有的使用者資料。 他們也有一個自定義的歸檔方案,它基於每個使用者的頻繁和最近的資料。 大部分資料是隨機分佈的。 令人驚訝的是,據傳Facebook有1800個MySQL伺服器,但只有3個全職DBA

    Facebook主要將MySQL用於結構化資料儲存,例如牆貼,使用者資訊等。這些資料在各個資料中心之間複製。 對於blob儲存(照片,影片等),Facebook使用一個自定義的解決方案,涉及外部的CDN和內部的NFS

    同樣重要的是,Facebook大量使用Memcache,這是一種記憶體快取系統,透過在RAM中快取資料和物件來加速動態資料庫驅動的網站,以減少閱讀時間。 Memcache是Facebook的主要快取形式,大大減少了資料庫的負載。 擁有一個快取系統可以使Facebook的速度與呼叫資料一樣快。 如果不需要訪問資料庫,則只需根據使用者標識從快取中獲取資料

    所以,“Facebook使用什麼資料庫”似乎是一個簡單的問題,你可以看到他們已經添加了各種其他系統,使其真正的具有網路可擴充套件性。 但是,仍然可以自由地使用這樣一個觀點:“MySQL和Oracle或者MS SQL Server一樣好或者更好,因為就算只有Facebook使用它,它也有5億使用者!”

  • 3 # GeCoder

    Mysql的優點很多,主要列舉以下幾點:

    (1) 是開源的,就是說是免費的,你不需要支付額外的費用。

    (2) 是可以定製的,採用了GPL協議,你可以修改原始碼來開發自己的Mysql系統。

    (3) MySql的核心程式採用完全的多執行緒程式設計。執行緒是輕量級的程序,它可以靈活地為使用者提供服務,而不過多的系統資源。

    (4) 擁有一個非常快速而且穩定的基於執行緒的記憶體分配系統,可以持續使用面不必擔心其穩定性。

    由於facebook業務的性質,存在大量的更新,mysql資料對於這塊是比較擅長的。

    關注是為了再一次的交流,戳一戳右上角的關注吧!

  • 4 # 你看我獨角獸嗎

    謝邀。我分享下他們MySQL運維最佳化的邏輯,大家可以借鑑參考一下。本質上講,他們用的是修改後的MySQL,不是原生MySQL。Facebook創辦以來就一直在使用MySQL資料庫,也隨著資料量的增大而不斷改進他們的自有MySQL,目前已經可以輕鬆支撐來自20多億使用者的資料量。

    1.每臺機器都使用多例項的模型,每個機器放多個例項,每個例項放多個DB,多例項之間沒有資源隔離,充分發揮例項間的最大效能。

    2.將大部分核心業務引擎切換到MyRocks,不改變伺服器配置大概可以節省一半伺服器資源。

    3.主從結構採用基於GTID的一主多從結構,外加一個基於lossless semi-sync機制的mysqlbinlog實現的binlog server。

    4.所有的備份都是基於mysqldump實現,可以無需備份索引,只備份資料,而且備份檔案壓縮比高,更節省磁碟空間,透過改進了的mysqldump,備份過程中還可以進行額外壓縮。當然備份時也會控制並行備份的數量,避免影響線上業務效能。

    5.快速部署從庫可使用xtrabackup在現有存活的SLAVE例項上備份,也可在主庫上發起備份,再利用WDT(或者是BT)協議傳輸到異地,用於拉起從庫。

    總而言之,Facebook在最佳化MySQL方面做了很多努力,也提交了很多優秀的Innodb外掛來大大提高了MySQL主從叢集的效能。而且有傳聞稱,Facebook擁有大約1800臺MySQL伺服器,內部卻只有三名資料庫管理員(DBA)。這有點匪夷所思,不過也側面說明Facebook確實在MySQL最佳化方面有著非常不錯的效果。

  • 5 # web網際網路

    從你的問題描述來看,我覺得這是一個偽命題,在這個行業,很多人都流傳著一個所謂經典的名言:‘如果MySQL資料庫儲存記錄超過一百萬的時候,效能會有很大的折扣’,但是結果facebook卻能夠很好的執行,下面我們就來分析一下原因。

    原因一

    為了應對高效能的應用,我們的MySQL也在不斷的改進,不斷的引入很多高階的功能,比如表分割槽、複製和叢集等,還引入了Memcached,利用好這些功能,能夠讓我們的應用程式效能大大的提高,同時也能夠處理好儲存大資料的問題。

    原因二

    我們知道MySQL是開源的,什麼意思呢?就是我們能夠對MySQL的原始碼進行修改然後編譯,從而實現屬於我們的定製化的MySQL,所以Facebook也對MySQL進行了修改,刪除了很多不需要的功能,添加了很多自己需要的功能,尤其是將一些認為效率低的東西徹底移除,打造屬於Facebook的定製化MySQL,這應該是MySQL能夠勝任Facebook的根本原因。

    原因三

    雖然資料庫提供了很多我們需要的功能,但是為了提高應用的效能,我們很多時候不一定要藉助資料庫來完成,比如實現一些統計功能,我們可以不借助資料庫的儲存過程來實現,而是採用應用程式的方式來實現,讓資料庫只做一件事:就是資料管理,不做太複雜的資料處理操作。

  • 6 # 毛琳Michael

    Facebook最初誕生的時候並不是大公司,所以整個資料底層都是放在MY SQL上,因為MY SQL不需要授權費,對facebook是最划算的,而在發展壯大後,MY SQL同樣夠用,當然會一直用下去了。

    為什麼Facebook還會用MY SQL?

    1.MySQL早期就是為PC網際網路服務的,而且是免費開源的,Facebook早期是學生創業,跟本沒錢,而且Facebook最開始是PC產品,用MY SQL是自然的。

    2.用MY SQL更省錢。除了MY SQL還有商業資料,比如Oracle資料庫,但是商用資料庫價格非常的貴,比如官方報價一般25/CPU核,以及採購小型機一般80-120萬/臺,儲存裝置一般500萬一套,但是Facebook現在有近萬臺的伺服器,這是一筆極為龐大的資金。

    3.常規資料庫的集中式資料庫很難解決海量使用者 MySQL的分散式資料庫正好適合;

    4.MYSQL可以定製化,更適應Facebook業務發展需要。oracle等無法定製,不能滿足每個不同企業的定製化資料要求。所以mysql資料庫會越來越火,也越來越受到企業的重視。

    總的來說是,MYSQL更加省錢,Oracle價格太貴,另外就是可定製化。

  • 7 # stormzhang

    MySQL 早期就是為 Web 應用而生的,而 Facebook 正是此領域的業務場景;另外從成本價格來講,MySQL 開源免費的,Oracle 價格高。在版權上,大公司更注重版權,開發人員也不能隨便用盜版,所以,如果全部用正版資料庫,肯定增加成本的。而 MySQL 開源免費。當然,也並不是說 MySQL 沒啥優點。MySQL 作為是一種開放原始碼的關係型資料庫管理系統(RDBMS),任何人都可以在 GeneralPublic License的許可下下載且個性化優,另外,MySQL 的可靠性,速度以及它適應性強而受人歡迎。提供用於管理、檢查、最佳化資料庫操作的管理工具 用其來管理內容無疑是很好的選擇,而且 MySQL 資料庫系統使用最常用的為資料庫管理語言--結構化查詢語言(SQL)進行資料庫管理。不僅如此,MySQL 其自身的特點也是它的加分項。它支援AIX、FreeBSD、Windows等多種作業系統。不僅能夠作為一個單獨的應用程式應用在客戶端伺服器網路環境中,還能夠作為一個庫而嵌入到其他的軟體中提供多語言支援。雖然其他的大型資料庫例如 Oracle、DB2、SQL Server 等相比,MySQL 自有它的不足之處,如規模小、功能有限等,但是這絲毫也沒有減少它受歡迎的程度 。當下 IT 行業的走向是開源化、免費化。這就意味著個人可以定製更加具有個性化需求的資料庫,從而節省開銷。這點上 MySQL 是符合的,阿里巴巴等大型專案也用了 MySQL ,主要用了分散式儲存、快取、分表分庫等技術,靈活運用而已。當然,現在許多的資料庫的功能雖然很強大,但經常性使用的無非幾種,或者有些比較適合自己使用的功能, oracle 等無法定製。所以 MySQL 這種開源的資料庫會越來越火。另外,Facebook 也並非一成不變使用 MySQL,節省開銷是一回事,但體驗使用質量好更是一回事,新的需求產生會催促其進行升級成長,比如 Facebook 建 立了自己的 Cassandra 資料商店並且在其網站上重點推出一項新的搜尋功能。據Facebook的工程師 Avinash Lakshma 介紹,Cassandra 僅用 0.12 毫秒就可以寫入 50 GB 的資料,比 MySQL快了超過 2500 倍。Twitter公司也計劃從 MySQL 遷移到 Cassandra 資料庫,因為後者具有更大的彈性、可擴充套件性和大量的社群網路開源開發人員。歡迎更多交流留言評論 !

  • 8 # excellence27871936

    在關係型資料庫剛出現的時候,那時候資料庫技術是一個很複雜的技術,關係型資料庫的由IBM的科研人員最先發表的論文,IBM沒有重視,卻被oracle佔了先機。如今在網際網路時代,理論和開發技術已經很成熟,一個數據庫產品已經沒有那麼複雜,而且可替代性已經很高,越來越多的軟體也開始免費。我感覺,本身這個話題意義也不大,企業現在對資料庫的選擇很多,現在已不像網際網路剛興起的時候,oracle也不會再像以前憑藉一個數據庫就能成為超級公司。

    再說說為什麼用MySQL,因為MySQL是開源的,稍加定製就能適應自己的需求。MySQL一臺效能不好,但是擴充套件性非常好,以資料庫的複製為基礎,可以一主多從,多主多從,很多公司都開發了自己的MySQL中介軟體,哪怕程式碼初期沒考慮讀寫分離一樣不用做太大改動。大型的應用可以考慮分庫分表,這樣擴充套件性可就更高了。一個免費的產品就能實現了,我幹嘛還要花錢。

    現在新的非關係型的資料庫越來越多,也越來越火,不僅擴充套件性更強,而且存取速度更快,最重要的還開源免費,資料庫技術也在迎來一場新的革命,什麼樣的資料庫,已不再重要,關鍵是什麼能滿足網際網路的需求。同樣現在的大型企業會用各種各樣的資料庫,以滿足不同需求。

  • 9 # 會點程式碼的大叔

    首先不能否認的是,如果是按照單庫執行,Oracle、DB2這些商業資料庫還是很強大的。IT公司的傳統套路就是IOE,其中O就是指的Oracle。另外I是指IBM的伺服器,E是指EMC列陣儲存。三個加起來很強大,基本上可以支援一般的企業的業務,當然,也很貴,非常貴。

    當到了Facebook這個級別的公司,資料量可不是幾千萬,幾個億這個級別的了,這時候如果資料還是單機的話,已經很難支撐基數大、增長快的資料了;這時候的做法就是分庫,把資料儲存到不同的資料庫節點上。

    這時候Mysql的優勢就顯示出來了:

    開源,就意味著免費,也就節省了License的費用;

    也是因為開源,所以有能力的公司都會對公開版的Mysql做二次開發,跟進業務的需要去改造Mysql;

    伺服器的錢也省下來了,也不必使用費用很高的伺服器了,這一點又是省錢。

    總之,Mysql省錢,還能定製改造。

  • 10 # Lu發言

    但如果非要說的話,

    1 免費,節約下來的授權費不是一點半點,完全足夠定製一個自己的資料庫了,這也是很多初創公司選擇mysql的重要理由。

    2 開源,個性化定製靈活,根據自身的業務場景定製,就可以打造最適合自己的資料庫工具

    3 安全,不會因為授權而受制於人,特別是到了這麼大體量的時候,這種關係到核心利益的東西必定是要完完全全掌握在自己手裡的

    4 Fb的業務已經非常龐大而且複雜,絕對不只是使用某一種資料庫的,mysql只是其中一種而已,現如今的網際網路,業務拆分,服務微化細化,不是某一種工具,某一種語言,或者說某一種平臺就可以滿足的了

  • 11 # SVIP7188925871

    人家的mysql也不是世面上用的mysql了,這種開原的專案,大廠一般都會針對自己的業務進行定製化的二次開發,沒有最好的,只有最適合自己的。

  • 12 # 老郭123123462

    看到很多回答,不少都是不懂裝懂。很多人還扯到效能上。MySQL作為網際網路資料庫標配時,MySQL的效能,穩定性都不好。

    網際網路公司採用MySQL,真正的原因,也是唯一的原因,就是開源免費。

    網際網路資料的兩個特點決定了MySQL是首選,一個特點是網際網路針對的使用者群巨大,大的網際網路公司資料庫伺服器成百數千,一個oracle版費幾十萬,這個費用太巨大。另外一個特點,絕大部分網際網路資料的重要性遠低於銀行電信,甚至一般企業業務,比如一個使用者的留言,一個帖子,真丟了,只要不是普遍現象,後果不嚴重,這也是早期MySQL不穩定,備份機制也不好時,但仍成為網際網路標配的原因。

    現在很多大型網際網路公司,資料庫其實既有MySQL,也有oracle,依據資料型別來使用不同資料庫。

  • 13 # 原語9102

    看了這麼多回答,作為一個當時參與阿里去lOE過程的人,聊聊個人看法。

    阿里在定下2014目標上市時,內部就開始發起去IOE運動,2013年收尾。全球上市意味著要經過全球檢驗,要合法合規(至少大面上要這樣)。首要過的,就是專利(如現在高通,每部用它專利的手機都得給它交錢)。隨阿里商業化程度的進行,馬雲就放眼全球。當時核心訴求是,可控性(不能將自己的咽喉放在別人的手上)。記得我當時還問過為什麼會發起這麼大成本的去IOE化,得到的回答是IOE不可控(比如orocle,發生一個問題可能幾天之後才得到響應,對於快速發展的網際網路來說,是不可接受的)。從網際網路商業角度來講,錢不是關鍵的,時間、流量才是王者。網際網路服務要求穩定、快速解決大於一切。這也是現在分散式的核心訴求(大資料也是)。能用錢解決的問題都不是問題,比如網際網路企業前期大部分是鉅額虧損的(如BAT,滴滴,共享單車…),它們要的是快速佔領市場。在此前題下,lOE,有兩大致命傷:

    1,出問題後解決的效率太低(lOE作為穩定性產品,更新節奏是比較慢的,並且因為不開源,意味著它是黑箱,遇到問題你連找臨時解決的方案都很難,等到廠商問題解決,黃花菜都涼了),

    2,不可控。網際網路是快速試錯的過程,今天穩定的東西可能明天就滿足不了需求了。指望廠商跟進,就會錯過大量的時機(這也是現在大資料技術快速發展和各大網際網路企業投入巨大資源自研的原因)。資料庫作為網際網路核心部件(資料就是金錢),命脈必須掌握在自己手裡。開源推進了現代網際網路的快速發展,技術不再是少數企業的專利,開源能集結全球人才的聰明才智,能夠快速解決問題,而不是侷限於等待少數人去改變。開源意味著可預測,可控制、可把它作為基礎發展為最適合自身業務的東西。

    其它:1,免費,降低成本。2,可研究,人才眾多。3,實時大資料,批次。

    現在各大網際網路公司已根據自身業務特點,已經在開源基礎上研發了大量的定製資料庫。

    從創業起步時角度來講,確實能省一些是一些,MySQL夠用了。發展大了之後,做分散式叢集話,穩定度和速度、靈活性都大大大於lOE,lOE也就沒那麼必要了。4,去lOE還能大幅度培養自己的技術團隊,拓展未來的想象力,何樂而不為。

    反之,看先前和現在的國有企業(如銀行),動不動就停機維護,以前轉個帳都要24小時甚至更長(因為它們是壟斷,它們不缺錢,一體化都是最高階的lOE服務,所以我們無可奈何)

    ,這種情況若發生在網際網路身上,那可能就是生死攸關的事情——使用者的敏感度大大大於傳統的企業。

    從上情況可知,選擇去lOE是必然,甚至,網際網路企業發展到一定規模,自研是必然(自研當然需要建立在合法合規上)。

    企業發展到一定程度,有3個最重要的:1,企業架構(自動化機器)2,法律風險(投入比會大大增加,比如現在華為遇到的情況)3,門檻(核心技術,核心競爭力)

    個人淺見,共同交流。

  • 14 # pipi_44532

    為什麼這麼多回答每個人都在胡扯?

    當fb還小時的確是用過MySQL,但隨著資料變大mysql已不敷使用,早已化整為零。為什麼提問人不懂,回答的人也被牽著鼻子走?太扯了,比扯鈴還扯,你們是都被長城封閉太久與世隔絕了嗎?

    由於效能及query 速度,big table及no sql是主要選擇,故facebook 採用的是 Hive + Cassandra+Haystack 。

  • 15 # 網際網路活化石

    1.facebook確實在使用MySQL,主要是因為免費開源,因為免費降低了成本,也因為開源,其可定製化比較強,基於MySQL的第三方版本也比較多。facebook自己就基於MySQL搞了一個MyRocks資料庫。

    RocksDB是FaceBook基於Google開源的LevelDB實現的,使用LSM(Log-Structure Merge)樹來儲存資料。Facebook開發工程師對RocksDB進行了大量的開發,使其符合MySQL的外掛式儲存引擎框架的要求,移植到了MySQL上,並稱之為MyRocks。MyRocks支援基於SQL的資料讀寫、鎖機制、MVCC、事務、主從複製等MySQL絕大部分功能特性。從使用習慣考慮,使用MyRocks還是使用MySQL/InnoDB並沒有多大區別。

    2.資料量大的問題,主要是透過分散式和分庫分表來解決的,並不是單機儲存。oracle的缺點就在於這,oracle雖然單機資料處理量大,但是對叢集和擴充套件的支援比較差。mysql單機不行,但是可以叢集啊,叢集不夠,還可以分散式啊。況且facebook這種業務,也不適合oracle。

    3.facebook

    的資料儲存和處理不僅僅使用了MySQL,還是用了大資料的一套東西,比如spark。

    4.歷史原因和使用習慣導致的,這也是為什麼沒有選擇另外一個開源資料庫postgreSQL的主要原因。

    所以,可以這麼說,facebook資料量大是一個問題,但是並不是完全或者說單獨依賴MySQL全部解決的。

  • 16 # 東北不太冷

    怎麼還有人糾結在這種地方,學php的時候就在那問php能不能開發大型專案,人家告訴他大站都是多語言混合來的,單php不行,這時候他就說了,facebook也是php開發的,一個可能都沒開啟過facebook的人,就在那天天facebook是php開發的。mysql也一樣,你和他說大資料量下mysql有效能問題,他又和你說facebook。我真的想和你說,facebook用的php不是你我平時用的php,他用的mysql也不是我們常用的mysql,他是經過改造的。然而我就這樣回答了就被提問的人罵了,他說你外國爹月亮都是圓的… 我還能怎麼說呢,唉……………

  • 17 # 進擊的路路潘

    我不確定你是懷疑哪個點,使用mysql肯定不是純單機mysql,都是叢集,網際網路都是線上叢集,離線分析,幾乎沒有transaction,和金融是兩個極端,所以即便使用mysql,單機mysql也不會有非常多的資料

  • 18 # _愛吃魚的哈士奇

    與O相比,免費,中等規模流量的效能沒有劣勢。像臉書這種,和支付寶,微信有一個共同的特點,業務集中於單獨的個體上,也就是說,以使用者ID為索引可以支撐核心的業務。因為超大資料量以及超大吞吐量帶來的問題,可以使用nosql資料庫承擔一部分,然後idc分散式,透過合理的路由分散降低物理資料庫的負載,保持資料庫的價效比

  • 中秋節和大豐收的關聯?
  • 華為今年的手機出貨量能超過三星登頂世界第一嗎?