排列三的开奖号码乐彩网:選擇或者放棄MySQL的十個理由

2013-07-19 08:32:32來源:infoq作者:崔康

福彩有极速赛车吗 www.ipmpe.com MySQL作為一個開源數據庫,自從被Oracle接管后,其發展前景就一直受到開發社區的關注,其中也有質疑,最近,兩位開發者分別發表了選擇和放棄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成為一個非盈利組織。”

而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增加了高可用性功能,比如備份等,還有企業版監控器,可以持續的幫你監控數據庫并提供最佳實踐?;褂蠶uery Analyzer來監控應用的性能,同時還有豐富的管理工具用于服務器配置和用戶管理。
  5. MySQL的項目越來越多。在收購之前,MySQL在25個國家有400名員工,但是存在交流問題。現在Oracle組織了工作在一起的新團隊,有的小組在做集群化軟件,有的在做數據庫算法,有的在做備份功能等。

在不久之前,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插件解決。

當然,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