51CTO诚邀您9月23号和秒拍/国美/美团元专家一路聊智能CDN的优化之路,抓紧时光哦!
Mysql 安装简单,速度较快,功能丰富。别的它照样开源活动的标杆,它的巨大年夜成就向我们展示了一个成功的公司是可以建立在开源代码之上的。

为了在这个秋天躁起来,我们列举了 8 个抱怨开源关系型数据库的来由。下面列举的来由中不仅限于 MySQL,有一些是针对关系型数据库的。如不雅我们没有理清跋扈关系型数据库和 MySQL,我们将会永远陷入 90 年代的思惟上。我们须要推倒然后重建这些。或者我们转向应用一个比来风行的,存在时光没有长到可以列出一堆像下面一样的来由的数据库。
根深蒂固的 bugs
任何大年夜的软件包都有 bug。但稍微深刻懂得一下,就会发明和 Mysql 相干的 bugs 自成体系。忽然你就须要留心,因为 NULL 并不是以同样的方法出现,外键束缚也没有像你想像的那样履行,连主键主动增长也会掉足。
小问题大年夜量存在,并且并不老是可以修复,这就是为什么一些人保持一个列表。还好 MySQL 保护着一个异常好的 bug 申报体系,让我们可以知道我些我们无法想像的工作,知道其他人也在经受同样的灾害。
关系表的不灵活性
关系表具有层次性,层次性是好的——然则,它使得法度榜样员不得不编造或硬塞一些数据到已经定义好模式的列中。NoSQL 开端越来越受到迎接的原因之一,就是它为法度榜样员供给了足够的灵活性,来加快数据库的应用。如不雅一个街道地址须要增长一行,那么,你可以将它很轻易地插入到一个 NoSQL 文档中。如不雅你想添加一个完全的新的数据块,无论它包含什么内容,文档模型也可以原封不动地接收你的数据,而不必改为它请求的数据格局。
试想一下,你用整数格局建立了一个全部是邮编的表格。这个表是十分高效的,它履行的规矩也很好。忽然一次,有人上传了一个应用了连字符的九位数邮编。或者还有可能,你获得了一位来自加拿大年夜客户的信件,膳绫擎写竽暌剐邮政编码。
sql 经由过程一系列 join 构建的复杂萌芽将开辟者推入潦攀困惑与掉望的深渊。并且存储引擎也须要以最优的方法来高效地解析 join 语句。开辟者须要绞尽脑汁编写萌芽语句,然后数据库对其进行解析。
这时,一切都乱了。老板请求网站要在几小时内恢复正常工作。然而,如今已经没有时光来重建数据库。法度榜样员可以做什么?也许,可以应用黑客手段把加拿大年夜邮政编码由 base64 的数字格局改为 base 10 格局?或者设置一个应用转义编码的帮助表格,用来解释真正的邮政编码或者其他?谁知道呢?到处都有黑客,他们都是危险的。但你没有时光来搞定它。
MySQL 的接洽关系规矩让每小我都诚实和谨慎,但它能强迫我们避开易受进击和欺骗的麻烦。
JOIN 结号绫侨芽
曾几何时,将数据分表保存是计算机科学史上的巨大年夜立异。分开后的表不仅构造简单,也简化了应用。但它却须要应用 join 语句进行萌芽。
然而用过 mysql 的人都曾对着显示器挥动过拳头。但你弗成能创造一种每秒能保存成千上万行互联网数据,并且一点缺点都没有的技巧吧。
这就是很多重视运行速度的开辟者放弃数据分表转而应用不规范数据表的原因。不区分数据实体,将所稀有据保存到一个大年夜表中——以避免复杂的萌芽。如许确切很快,并且办事器也不会耗尽内存。
磁盘空间如今很便宜。8TB 的磁盘已经在售,更大年夜的也要上市了。我们不再须要为应用 join 而绞尽脑汁了。
分支的纷乱
是的,一个靠得住的、获得优胜支撑的 MySQL 分支,可以带来竞争和选择,然则它也引起困惑和纷乱。更糟糕的是,一个称为 MariaDB 的MySQL 分支,由 Monty Widenius 保护着。他同样也在介入编写 MySQL。那么,MariaDB 是真正自力的值得我们拥戴的吗?或者它是 MySQL?我们是否应当保持应用由创建原始 MySQL 数据库的组织运营的核心代码?或者我们应当参加那些被认为更聪慧的,往往很酷的反叛者?
看 MySQL 的年纪最好的办法是安装它,然后你会心识到须要添加更多的驱动法度榜样使它可用。MySQL 平日在 3306 端口上通信,它一般输出的是它本身难以懂得的格局化数据。如不雅你想让你的代码和它通信,你必须添加另一层的代码,将 MySQL 的说话转换成有效的器械。这些层的代码,以库的情势分发,经常须要人们购买一个贸易典范可证。
还有,我们应当若何获得关于兼容性的信息?一方面,我们被确信 MariaDB 和 MySQL 十分地类似。另一方面,我们要信赖有差别——不然为什么大年夜家都在争辩它?也许它们在机能和我们萌芽典范围内,在两个阵营中工作方法雷同?但也许他们不合 - 或者将来会不合。
存储引擎纷乱
MySQL 不是事实上的同一的数据库;它由几个数据库构成,它们的大年夜多半细节都被同一的外面所掩盖。在开端的时刻,有一个 MyISAM 引擎,它很快然则在前后一致上不克不及做到完全。有时刻你须要速度并且可以接收不一致的结不雅时是很好的。
当人们须要更多时,具备完全事务支撑的 InnoDB 出现了。但这还不敷。如今,它可能有 20 种存储引擎的选择——这足以矢荷琐数据库治理员猖狂。当然,有些时刻在不合的存储引擎之间切换而不必重写你的 SQL 是很好的,然则切换后总会带来纷乱。这缸莨狁我选择的引擎是 MyISAM 照样 innoDB 呢?或者,我决定输出的数据是 CSV 格局的吗?
盈利的念头
固然 MySQL 是一款成功的开源产品,但它仍然是一学生意,琅绫擎满是靠它获得薪水的专业开辟者。昔时夜多半用户在持续地享受开源许可证带来的最佳体验时,毫无疑问这家公司还在为赚取足够的钱来保持运营而尽力。这导致自由代码在 “社区版” 和出售给企业的完全产品之间产生了奇怪的分岐。
推荐阅读
51CTO诚邀您9月23号和秒拍/国美/美团元专家一路聊智能CDN的优化之路,抓紧时光哦! 一些常用的 Linux iptables 规矩,请根据本身的具体须要再修改。# 7. 多端口(许可进来的 SSH、HTTP 和 H>>>详细阅读
地址:http://www.17bianji.com/lsqh/37325.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示