選擇或者放棄MySQL的理由
MySQL 作為一個開源數據庫,自從被 Oracle 接管后,其發展前景就一直受到開發社區的關注,其中也有質疑,最近,兩位開發者分別發表了選擇和放棄MySQL 的理由,值得數據庫相關人員參考。
Andy Patrizio 列舉了選擇 MySQL 的五個理由,包括:
- MySQL 并不像其他關系型數據庫那樣成熟。MySQL 剛起步時并不是一個 RDBMS,但是后來改變了發展方向,增加了更多的功能。在許多人眼里,其他成熟、歷史久的關系型數據庫依然比 MySQL 功能更加豐富。如果你想要一個功能豐富的 RDBMS,那么可能會選擇 PostgreSQL 或者其他商業產品,比如 Oracle 或者微軟 SQL Server。PostgreSQL 代碼貢獻者 Selena Deckelmann 表示 Postgres 對于需要關系型數據庫的 Web 開發者來說是一個正確的選擇,隨著對 JSON 數據結構和 PLV8 的支持,Postgres 會成為 NoSQL 的默認選擇。
- MySQL 雖然是開源的,但只是形似。從技術上說,MySQL 是一個開源數據庫,但是實際上,開發者已經感覺異樣。在 Oracle 的管理下,MySQL 現在有一些專利保護和私有模塊。Paula Rooney 表示,MySQL 的活躍只停留在表面,Oracle 控制著開發進程,并且拒絕發布測試用例,安全補丁也受到嚴格控制。Oracle 是不是應該把 MySQL 奉獻給 Apache?其實你有其他開源替代品,比如 MySQL 的一個分支 MariaDB 一致是真正的開源。MariaDB 的所有代碼都是在在 GPL、LPGL 或 BSD 協議下發布的,不存在類似 MySQL 5.5 企業版那樣的私有模塊。
- MySQL 的性能表現沒有其他競爭者好。MariaDB 博客提供了 MySQL 和 MariaDB 基準測試的結果,后者勝出。PostgreSQL 開發者表示 Heroku Postgres 更有吸引力,“它們是 Postgres 最大的托管環境,自動處理應用的擴展,支持插件……”
- MySQL 由 Oracle 掌控,而不是社區驅動。MySQL 自從被 Oracle 接管折后,雖然沒有明顯改變過方向,但是 Oracle 的存在還是讓開發者感到緊張。MySQL 和 MariaDB 地創始人 Michael “Monty” Widenius 表示,最糟糕的是,社區不可能與 Oracle 的開發人員一起參與 MySQL。而且,Oracle 拒絕接受補丁,也不愿意公布路線圖。
- 放棄 MySQL 的人越來越多。就那今年來說,Redhat、Slackware Linux、OpenSUSE、Wikipedia 都先后宣布放棄 MySQL,采用 MariaDB。Wikimedia 架構師 Asher Feldman 解釋說,MariaDB 的優化程序增強功能和 Percona 的 XtraDB 功能設置是作出改變的根本原因。“我們歡迎并支持 MariaDB Foundation 成為一個非盈利組織。” </ol>
- MySQL 的投入和創新超過以往。自收購以來,Oracle 已經增加了 MySQL 的開發人員,并提供了更加成熟的工程模式,不再像以前典型的開源項目一樣,開發人員散落在世界各地。同時,MySQL 的代碼更加模塊化,這意味著短期的投入會獲得長期的回報。在 MySQL 5.6 中,他們分解了 MySQL 服務器的關鍵鎖——LOCK_open,性能改進了一倍多。此外,MySQL 的存儲引擎是 InnoDB,Oracle 在 2005 年收購了 InnoDB。因此,兩者可以更好的結合。
- MyDQL 產品依然健壯。MariaDB 和其他開源產品抱怨 MySQL 5.5 沒有測試用例和某些企業功能是私有模塊,但是它依然表現突出,Oracle 花費了兩年發布 DMR 給 MySQL 社區來測試和得到反饋。MySQL 5.6 從之前的 4 CPU 線程增長到 64 CPU 線程,還有其他新功能。
- MySQL 關注 Web、Cloud 和 Big Data。為了支持云服務,MySQL 的備份做了極大地改進,比如 Global Transaction Identifiers (GTIDs). GTIDs 可以輕松地跟蹤和比較 master 和 slave 服務器之間的進度狀態。在 2013 年 4 月,Oracle 發布了針對 Hadoop 的 MySQL Applier。Nokia 首先將 MySQL 應用于大數據環境中,包括集中的 Hadoop 集群等等。
- MySQL 企業版 5.6 增加了高可用性功能,比如備份等,還有企業版監控器,可以持續的幫你監控數據庫并提供最佳實踐。還有 Query Analyzer 來監控應用的性能,同時還有豐富的管理工具用于服務器配置和用戶管理。
- MySQL 的項目越來越多。在收購之前,MySQL 在 25 個國家有 400 名員工,但是存在交流問題。現在 Oracle 組織了工作在一起的新團隊,有的小組在做集群化軟件,有的在做數據庫算法,有的在做備份功能等。 </ol>
- 用數據庫處理隊列——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>
而 Rikki Endsley 則列出了放棄 MySQL 的五個理由:
在不久之前,Infoq 報道過系統可擴展性的問題,其中有兩處提到了 MySQL,包括:
當然,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 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!