去 IOE,MySQL 完勝 PostgreSQL

来源:http://www.cnblogs.com/jielesi/archive/2016/01/11/5122084.html
-Advertisement-
Play Games

本文轉載自:http://www.innomysql.net/article/15612.html(只作轉載, 不代表本站和博主同意文中觀點或證實文中信息)前言上周參加了2015年的中國資料庫大會,差不多從第二屆開始就每年都會北京參會,從最早的嘉賓到這次的會場主持人,也算見證了中國資料庫大會的發展吧...


本文轉載自: http://www.innomysql.net/article/15612.html 
(只作轉載, 不代表本站和博主同意文中觀點或證實文中信息)

前言

上周參加了2015年的中國資料庫大會,差不多從第二屆開始就每年都會北京參會,從最早的嘉賓到這次的會場主持人,也算見證了中國資料庫大會的發展吧。記得最早的時候大會只有兩天,分會場也比較小,而現在各種大會變為了三天,分會場也越來越細化,贊助商也從以前的出版社演變為各種高大上的軟硬體公司,這是主辦方的成功,也是整個資料庫從業人員的驕傲。然而,這次會議討論的最多的依然是去IOE問題,但是原來的主角從MySQL換成了PostgreSQL。在之前的去IOE之MySQL問答系列中,筆者其實已經回答過了這部分的問題,然而不可避免的收到了來自PostgreSQL陣營非善意的“攻擊”,故展開這個話題,儘量做到職責內的公正,公平,公開。如果您有任何關於去IOE的問題,請關註微信公眾賬號InsideMySQL並與我聯繫。

PostgreSQL

PostgreSQL官方宣稱的是:“The world’s most advanced open source database”。most advanced我不知道是怎麼定義的,因為PosgreSQL還是傳統B+樹索引的資料庫,在一些場景下,比如全插入場景,其還是會比其他一些資料庫要來得差很多,比如TokuDB,MongoDB。撇開這部分的因素,不得不承認PostgreSQL是最為強大的開源資料庫,或許,但是Oracle依然才是最為強大的關係型資料庫。PostgreSQL陣營一直標榜自己在優化器和Oracle可移植性方面的優勢,我想這對比MySQL或許是成立的。然而,如果上述都成立的話,為什麼PostgreSQL在裝機量,流行度等指標上上遠遠地被後起之秀MySQL給超越了呢?全球前20大網站完全看不到PostgreSQL的身影呢?在寫本篇文章的時候,我倏地想到了一個類似的問題,業界公認手機質量最好的Nokia,最終為什麼會倒下?

top20

PostgreSQL另一個痛點,我想很多人沒有會意識到的,就是在線上事務(OLTP)方面的性能問題。PostgreSQL在功能方面或許是比較完整的,但是真的要進入到生產環節,看的不再是簡單的功能,因為大部分用戶都明白日常所使用的僅是資料庫提供的20%功能。MySQL 5.7現在已經可以輕鬆達到50W QPS的性能,並支持通過NoSQL介面可以達到100W QPS,這是PostgreSQL為什麼沒有能在互聯網時代站住腳跟的一個重要原因之一。線上事務對性能的要求之苛刻,是普通用戶所無法感知的。

PostgreSQL最大的優勢是線上分析的場景,因為其優化器對於Join的支持堪稱全面,對於複雜查詢有著良好的支持,從Oracle遷移到PostgreSQL的成本會比較低。基於PostgreSQL的GreenPlum也已經開源,因此PostgreSQL目前在這方便是較為領先的。

MySQL

MySQL資料庫官方的口號是:“ The world’s most popular open source database.”。對比PostgreSQL,這句話簡直無法攻擊,並且MySQL官方的目標也一直是成為最為流行的資料庫。通過互聯網浪潮,移動互聯的時代,MySQL是真的做到了。

MySQL的優勢是開源與開放性架構,使其擁有有著各種分支版本與存儲引擎可供選擇。除了官方的InnoDB存儲引擎,還有TokuDB,Infobright引擎可在特定場合下進行使用。也正是因為MySQL的開源與開放,使得大量的開發人員加入到了MySQL的環抱。MySQL是一個非常成功的開源項目,可能很多人忽略了這個重要的因素。

MySQL被Oracle收購後表現的越來越好,一方面是功能越來越與Oracle資料庫接近,很多時候給我的感覺就是開源的Oracle資料庫,另一個重要的改進就是bug越來越少,甚至很多遺留了有近10年的bug也已一一修複。官方這樣嚴謹的態度,使得MySQL逐漸站穩了並開始蠶食一部分的企業市場,世界500強的選擇就是最好的證明。

top500

MySQL在性能與流行度上的優勢我不想再做過多的筆墨,因為這是任何人都無法迴避的事實。MySQL資料庫之前被PostgreSQL陣營攻擊就是優化器,對於多表JOIN的性能以及不支持Hash Join。然而,很多人沒有意識到,MySQL已經在5.6版本支持了MRR(Multi-Range Read),ICP(Index Condition Pushdown),BKA(Batched Key Access )Join這些優化,多表的JOIN性能已經得到了很大幅度的提升。不能否則,MySQL依然不支持Hash Join,但是這些優化的引入已經使得MySQL的Join性能提升到了一個新臺階。同時,在線上分析的領域,用戶真的不關心使用Hash Join可以5分鐘出報表,而是用MySQL需要8分鐘,這些時間完全是可以容忍的。然在線上事務領域,0.1的時間都是所不能容忍的。因此,本人在這裡呼籲,嘗試升級MySQL到5.6,5.7版本,而不要依然停留在5.1或者5.5版本

MySQL替換Oracle另一個被詬病的就是沒有Oracle的透明網關(Transparent Gateway)功能,MySQL自帶的Fedorate存儲引擎支持MySQL資料庫間的查詢,不支持異構資料庫之前的查詢。然而,這個問題已經給MariaDB解決,用戶只需要通過Connect存儲引擎,就能達到類似Oracle透明網關的功能

另外,還有用戶提出MySQL不支持分區的全局索引,物化視圖等,其實這些都可以通過變通的方法實現,這在我的書籍《MySQL技術內幕:InnoDB存儲引擎》與《MySQL技術內幕:SQL編程》都有提及,而且也在網易、淘寶這樣的互聯網公司使用。

即使官方的MySQL無法滿足你的需求,但是用戶依然有InfoBright與TokuDB存儲引擎的選擇。InfoBright是列存的資料庫引擎,非常適用於線上分析領域,這點連PostgreSQL都無法進行匹敵。TokuDB是一種類似LSM數據結構的數據引擎,在大併發的插入生產環境下,其對比各種傳統資料庫都有著顯著的優勢,即使對比PostgreSQL與Oracle資料庫本身。總之,MySQL能夠在各種維度滿足用戶對於資料庫的各種需求

PosgreSQL與MySQL對比,最為關鍵的是整個人才的儲備。看看中國的互聯網公司基本都已將MySQL資料庫作為標配,而PostgreSQL甚至連備胎都無法入選。MySQL在互聯網行業積累了大量的高可用架構,分散式架構與災備經驗,但是PostgreSQL幾乎為0。再看看圖書市場,PostgreSQL鳳毛菱角,而MySQL則有很好的書籍供DBA,開發人員,架構師等學習。然即使如此,MySQL離Oracle資料庫本身的積累還有很長的路要走。

去IOE

去IOE最早是由淘寶提出,旨在去除IT架構中的IBM小型機,Oracle資料庫,EMC存儲。去IE是比較簡單的事情,因為這僅是硬體的替換。另外,X86技術也越來越成熟,穩定性與小機的差距不斷縮小。然而去Oracle資料庫才是淘寶去IOE的難點與精華所在。整個去Oracle歷時3,4年的時間。其中伴隨著功能內部工程師的質疑,大量Oracle人才的流失,但最終已經證明瞭MySQL資料庫替代Oracle的可行性。

筆者高興的是傳統企業也開始有這樣的“覺悟”開始逐步進行去IOE的嘗試,不管這種嘗試是主動還是被動,但都是值得尊敬的行為。原因在於去Oracle資料庫這件事情並不那麼簡單。資料庫是傳統企業最為核心的資產,任何損失都是不可接受的。而去年銀監會的39號文件也堅定了傳統企業的去IOE決心。

去IOE風潮顯現,一大幫的公司開始進入到這個領域,希望藉助這陣風來大賺一筆。這點本無可非議,市場與技術相輔相成。然而,有一個非常不好的現象是,很多公司是為了迎合某些領導的需要,而不是真正的為傳統企業構建面向互聯網+的安全可控的技術架構。而這其中有著一些不為人知的因素。

首當其衝的是領導們的績效,傳統企業做事,以績效為導向,這與互聯網行業並無不同。但是互聯網行業有著技術積累,而且對於技術的選型與轉型有著相當的耐心,從淘寶去Oracle用了3,4年就可以看出。而目前擺在傳統企業領導面前的現實卻是,39號文件要求各銀行業金融機構對安全可控信息技術的應用以不低於15%的比例逐年增加,直至2019年達到不低於75%的總體占比。

遇到一些傳統企業的朋友,領導要求他們用PostgreSQL替換Oracle資料庫,原因在於這是“最快”的替換Oracle成本,但是他們站在IT從業人員的角度來看這件事是不對的,有種敢怒不敢言。當然,這其中也有部分商業公司在其中推動的關係。但是明白人心裡都知道,PostgreSQL國內從業人員寥寥,之前在中國沒有大規模的使用經驗與架構設計,大多停留在找個文檔折騰下的水平上。所謂“最快”的替換方案僅是因為不用進行存儲過程的移植,如果只是這樣使用PostgreSQL,那麼僅是應付上層的文件,而沒有真正領會到文件的精神。更有商業公司號稱有PostgreSQL的專家,然而非常經不起推敲,玩過GreenPlum的就是PostgreSQL專家?而且GreenPlum也僅做研究性質的用途?與專家交流後發現其對鎖與併發,高可用這塊的掌握更是讓人觸目驚心。

所以筆者一再和身邊的朋友說,去IOE不是一件一蹴而就的事情,需要給MySQL時間,否則這件好事情會像著另一個方向而發展,甚至重覆當年年Sybase替換Oracle的事件發生。但是好消息是這次的領導們終於開始認識到互聯網的重要性,理解了安全可控對於一個國家的重要性,而互聯網公司的成熟經驗具有很好的借鑒意義。

總結

MySQL資料庫早已不是原來的迷你資料庫,其在功能性與性能方面都已經大幅提升,隨著SSD的崛起,MySQL資料庫已經完全可以替換Oracle數據,而PostgreSQL還需要很長的路要走。但市場是開放的,就像Oracle稱雄的年代,還有DB2,Sybase這樣的資料庫與之一較長短。我相信互聯網時代,依然是百花齊放的年代,沒有誰可以一直占領優勢,即便是MySQL也沒有這個能力。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Linux安裝tomcat。
  • 安裝svn需要依賴apr和apr-util這兩個軟體,所以先安裝這兩個軟體下載安裝APRwget http://apache.fayea.com//apr/apr-1.5.2.tar.gztar -zxvf apr-1.5.2.tar.gzcd apr-1.5.2./configure --pref...
  • Linux視頻教程集:序列之一:Linux基本操作和系統管理序列之二:Linux_C編程(IO+多線程+進程管理+進程通信+網路)序列之三:C++精講精煉(語法+STL+IO編程)序列之四:Qt編程式列之五:ARM嵌入式Linux開發(ARM硬體體系+指令集彙編+Linux開發) 鏈接序列1鏈接: ...
  • 概述 SQLite提供了一系列介面供用戶訪問資料庫,主要包括連接資料庫,處理SQL,迭代查詢結果等。本文會針對我們使用SQLite的主要場景,列出核心的API,詳細介紹API的用法並給出代碼用例。1.打開關閉資料庫sqlite3_open_v2原型:int sqlite3_open_v2(cons....
  • 本文轉至:http://database.51cto.com/art/201503/469510_all.htm(只作轉載, 不代表本站和博主同意文中觀點或證實文中信息)Olery成立於2010年,總部位於阿姆斯特丹。該初創公司為酒店行業提供聲譽管理與媒體監控工具,幫助酒店將網路評論和社交媒體反饋轉...
  • 本文轉載自:http://www.innomysql.net/article/23959.html(只作轉載, 不代表本站和博主同意文中觀點或證實文中信息)工作10餘年,沒有一個版本能像MySQL 5.7那樣令我激動與期盼,10月MySQL 5.7 GA版本的發佈,意味著MySQL資料庫終於有能力在...
  • ---------------原創內容,轉載請註明出處。------------一、概述RRDtool(round-robin database tool),即輪詢式資料庫工具(註:並不等同於電腦中的輪詢調度演算法),採用固定大小的空間來存儲數據,設定一個指針,隨數據的讀寫移動,指向最後更新的數據的...
  • 本文轉載自:http://www.oschina.net/translate/why-you-should-never-use-mongodb(只作轉載, 不代表本站和博主同意文中觀點或證實文中信息)免責聲明:我不構建資料庫引擎,但搭建Web應用。每年我大約跑4-6個不同項目,所以我搭建了不少Web...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...