選擇或者放棄MySQL的理由

jopen 11年前發布 | 30K 次閱讀 MySQL

  MySQL 作為一個開源數據庫,自從被 Oracle 接管后,其發展前景就一直受到開發社區的關注,其中也有質疑,最近,兩位開發者分別發表了選擇放棄MySQL 的理由,值得數據庫相關人員參考。

  Andy Patrizio 列舉了選擇 MySQL 的五個理由,包括:

  1. MySQL 并不像其他關系型數據庫那樣成熟。MySQL 剛起步時并不是一個 RDBMS,但是后來改變了發展方向,增加了更多的功能。在許多人眼里,其他成熟、歷史久的關系型數據庫依然比 MySQL 功能更加豐富。如果你想要一個功能豐富的 RDBMS,那么可能會選擇 PostgreSQL 或者其他商業產品,比如 Oracle 或者微軟 SQL Server。PostgreSQL 代碼貢獻者 Selena Deckelmann 表示 Postgres 對于需要關系型數據庫的 Web 開發者來說是一個正確的選擇,隨著對 JSON 數據結構和 PLV8 的支持,Postgres 會成為 NoSQL 的默認選擇。
  2. MySQL 雖然是開源的,但只是形似。從技術上說,MySQL 是一個開源數據庫,但是實際上,開發者已經感覺異樣。在 Oracle 的管理下,MySQL 現在有一些專利保護和私有模塊。Paula Rooney 表示,MySQL 的活躍只停留在表面,Oracle 控制著開發進程,并且拒絕發布測試用例,安全補丁也受到嚴格控制。Oracle 是不是應該把 MySQL 奉獻給 Apache?其實你有其他開源替代品,比如 MySQL 的一個分支 MariaDB 一致是真正的開源。MariaDB 的所有代碼都是在在 GPL、LPGL 或 BSD 協議下發布的,不存在類似 MySQL 5.5 企業版那樣的私有模塊。
  3. MySQL 的性能表現沒有其他競爭者好。MariaDB 博客提供了 MySQL 和 MariaDB 基準測試的結果,后者勝出。PostgreSQL 開發者表示 Heroku Postgres 更有吸引力,“它們是 Postgres 最大的托管環境,自動處理應用的擴展,支持插件……”
  4. MySQL 由 Oracle 掌控,而不是社區驅動。MySQL 自從被 Oracle 接管折后,雖然沒有明顯改變過方向,但是 Oracle 的存在還是讓開發者感到緊張。MySQL 和 MariaDB 地創始人 Michael “Monty” Widenius 表示,最糟糕的是,社區不可能與 Oracle 的開發人員一起參與 MySQL。而且,Oracle 拒絕接受補丁,也不愿意公布路線圖。
  5. 放棄 MySQL 的人越來越多。就那今年來說,Redhat、Slackware Linux、OpenSUSE、Wikipedia 都先后宣布放棄 MySQL,采用 MariaDB。Wikimedia 架構師 Asher Feldman 解釋說,MariaDB 的優化程序增強功能和 Percona 的 XtraDB 功能設置是作出改變的根本原因。“我們歡迎并支持 MariaDB Foundation 成為一個非盈利組織。”
  6. </ol>

      而 Rikki Endsley 則列出了放棄 MySQL 的五個理由:

    1. MySQL 的投入和創新超過以往。自收購以來,Oracle 已經增加了 MySQL 的開發人員,并提供了更加成熟的工程模式,不再像以前典型的開源項目一樣,開發人員散落在世界各地。同時,MySQL 的代碼更加模塊化,這意味著短期的投入會獲得長期的回報。在 MySQL 5.6 中,他們分解了 MySQL 服務器的關鍵鎖——LOCK_open,性能改進了一倍多。此外,MySQL 的存儲引擎是 InnoDB,Oracle 在 2005 年收購了 InnoDB。因此,兩者可以更好的結合。
    2. MyDQL 產品依然健壯。MariaDB 和其他開源產品抱怨 MySQL 5.5 沒有測試用例和某些企業功能是私有模塊,但是它依然表現突出,Oracle 花費了兩年發布 DMR 給 MySQL 社區來測試和得到反饋。MySQL 5.6 從之前的 4 CPU 線程增長到 64 CPU 線程,還有其他新功能。
    3. MySQL 關注 Web、Cloud 和 Big Data。為了支持云服務,MySQL 的備份做了極大地改進,比如 Global Transaction Identifiers (GTIDs). GTIDs 可以輕松地跟蹤和比較 master 和 slave 服務器之間的進度狀態。在 2013 年 4 月,Oracle 發布了針對 Hadoop 的 MySQL Applier。Nokia 首先將 MySQL 應用于大數據環境中,包括集中的 Hadoop 集群等等。
    4. MySQL 企業版 5.6 增加了高可用性功能,比如備份等,還有企業版監控器,可以持續的幫你監控數據庫并提供最佳實踐。還有 Query Analyzer 來監控應用的性能,同時還有豐富的管理工具用于服務器配置和用戶管理。
    5. MySQL 的項目越來越多。在收購之前,MySQL 在 25 個國家有 400 名員工,但是存在交流問題。現在 Oracle 組織了工作在一起的新團隊,有的小組在做集群化軟件,有的在做數據庫算法,有的在做備份功能等。
    6. </ol>

        在不久之前,Infoq 報道過系統可擴展性的問題,其中有兩處提到了 MySQL,包括:

      • 用數據庫處理隊列——MySQL 在很多地方都做得很好,但是在處理應用程序排隊方面卻并不理想。你的數據庫中是不是有類似 JOBS 這樣的表,其中有一個狀態列,包括“queued”、“working”、“completed”這樣的值。如果是,你可能把數據庫來處理應用中的隊列工作了。這樣使用 MySQL 不好,因為會出現鎖的問題,還有查找下一個任務時的搜索和掃描任務也會遇到麻煩。建議使用 RabbitMQ 或者 Amazon 的 SQS 方案,因為這些外部服務更容易擴展。
      • 用數據庫進行全文搜索——Oracle 提供全文搜索支持,為什么 MySQL 卻不能用呢?MySQL確實有這項功能,但是在很多版本中,只能配合老的 MyISAM 存儲引擎使用。最好采用 Apache Solr 等經過驗證的搜索解決方案,它專門用作搜索,有非常好的庫,開發者可以使用多種現代 web 語言進行開發,并且非常容易擴展。只要在網絡中增加服務器,或者做整體分布即可。對于前沿技術感興趣的同學,MySQL 5.6 中提供了 Innodb 的崩潰安全和事務存儲引擎。既便如此,還是建議使用外部解決方案,如 Solr,或者 Sphinx 及 MySQL Sphinx SE 插件解決。
      • </ul>

          當然,MySQL 依然受到 Google 的青睞,Google 目前正在把 MySQL 做成全面管理的服務納入云中,其中包括一套用編程方式管理 MySQL 的 JSON API。Google 補充提供了 Cloud SQL,用來擴展自己的云服務。這個“全面管理”的 Web 服務提供了一個可伸縮的 MySQL 數據庫,運行在 Google 的基礎架構之上。用戶可以通過好幾種方式連接到云里的 MySQL 實例:命令提示符、API 控制臺、管理和報告工具、外部應用、GAE 上的 Java 應用和 Python 應用,還有 GAE 腳本。用戶還可以用 mysqldump 導入、導出實例。Google 還提供了一套實驗性質的 JSON API,這套 RESTful 接口可以用來對 MySQL 進行編程式管理:創建、刪除、重啟、從備份恢復、導入/導出,以及各種實例信息的獲取。雖然 Google 同時提供了命令行和 API 管理功能,但 MySQL 實例還是被自動管理的,比如跨不同地理位置進行同步或異步的復制、隨需伸縮、需要時進行備份和打補丁。

          對于 MySQL 參考架構感興趣的讀者,可以查看“從小型網站到超大規模網站的 MySQL 參考架構”。

        來自: InfoQ
         本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
         轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
         本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!