(转载:www.idcew.com) MySQL是一个开源的关系数据库管理系统(RDBMS)。MySQL是自由和开放源码软件,根据GNU通用公共许可证的条款,也可以在各种专有许可证下使用。MySQL AB公司在2009年被Sun Microsystems(现在的Oracle)收购。
MariaDB是一个社区开发的、商业支持的MySQL分支,旨在保持免费和开源。fork是开发人员从产品中获取原始源代码,并在其上开始独立开发的过程。开发由MySQL的创始人领导,MariaDB fork是在2010年Oracle收购Sun Microsystems时创建的。MariaDB打算保持与MySQL的高度兼容性,但是在最近的版本中加入了更多的新特性。
MySQL和MariaDB都是以Michael Widenius的女儿My和Maria命名的。Michael (Monty)在Oracle收购之前是MySQL的主要开发者,现在是MariaDB和MariaDB Corporation AB的CTO的主要开发者。
谁使用MySQL和MariaDB?
MySQL和MariaDB都拥有大量的追随者和客户群。MySQL的大客户包括NASA、Tesla和Youtube。MariaDBs的大客户包括Redhat、三星和Walgreens。
一些非常流行的Linux发行版默认使用MariaDB,即Debian(从Debian 9开始)、RedHat Enterprise Linux(从RHEL 7开始)和Ubuntu(从Ubuntu 14.04 LTS开始)。
版本控制
MariaDB最初是在MySQL 5.1时间框架内创建的,因此第一个版本包含5.1号。在5.1和MySQL的5.5版本5.2和5.3之间发布了两个额外的版本。MySQL 5.5和MariaDB 5.5的发布非常接近,这意味着高兼容性。
不过,在5.5之后,MariaDB的开发人员决定对版本号进行重大更改,以表示他们正在向代码库添加特定的发散特性。他们将这个版本命名为10.0。
从那时起,MySQL已经发布了5.6和5.7,然后在2018年发布了8.0(而不是6.0)的主要版本。
在撰写本文时,最新的主要版本是MySQL 8.0和MariaDB 10.5。
兼容性
作为RDBMS, MySQL使用表、行和列来存储数据,以及查询、触发器、角色和存储过程来处理数据。MySQL还使用主键唯一地标识表中的每一行或记录。
由于MySQL和MariaDB都来自相同的原始代码库,所以它们仍然保持高度的兼容性。由于API和底层协议都是兼容的,这意味着所有使用MySQL的连接器、库和应用程序也应该使用MariaDB。甚至大多数命令行工具都是类似的,而且大多数都有相同的名称。一般来说,这使得MariaDB可以替代MySQL。
也就是说,MySQL有两个版本:开源MySQL社区服务器和私有MySQL企业服务器。Enterprise是Oracle公司提供的一种基于订阅的服务,主要针对商业市场。
逐渐地,MySQL和MariaDB的特性集和内部结构发生了分歧。MariaDB花了很多时间在不同的版本上记录了两者之间数百个不兼容的地方,所以虽然许多人最初希望MariaDB仍然是MySQL的一个简单分支,但实际上它已经变成了一个完整的分支,有不同的特性和目标。
许可和发展
MariaDB被授权为GPLv2,而MySQL有双重授权:社区版的GPLv2和企业版的私有授权。如前所述,MariaDB是完全开源的,而只有社区版的MySQL是真正的开源。
Oracle的MySQL开发团队是MySQL的独家供应商,而另一方面,MariaDB的开发过程更加开放,任何人都可以向源代码树提交补丁,考虑添加到主代码中。
更新
一般来说,MariaDB比MySQL更新更频繁。这既有好处也有坏处,因为虽然更新的特性和bug修复会更快地发布,但管理更频繁的更新可能会使您的软件难以保持最新。
特性
这两个数据库都提供不同的特性,这些特性可能会根据您的用例吸引您。这里列出的是一些独有的特性。
验证:MySQL和MariaDB都提供mysql_native_password,但是,从MySQL 8.0开始,默认是caching_sha2_password。这种增强应该可以提高安全性。
加密:MariaDB支持二进制日志和临时表加密,而MySQL不支持。JSON:虽然MySQL和MariaDB都提供JSON相关的功能,但它们的实现方法不同。从5.7开始的MySQL实现了一个原生JSON数据类型,而MariaDB只定义了一个别名,并实际使用了列类型LONGTEXT。
Keys:默认情况下,MariaDB通过插件提供AWS密钥管理,而如果你想要MySQL也有这个功能,你必须使用企业版。
MySQL Shell: MySQL Shell利用MySQL X协议提供高级CLI和代码编辑器,以及用于JavaScript和Python的脚本功能,这在MariaDB上是不可用的。
Sys schema:从MySQL 8.0开始,Sys schema对象可用于优化和诊断用例。MariaDB没有这种增强功能。
Threadpool: MariaDB支持连接线程池,但是如果你需要MySQL的这个功能,你必须使用企业版。
性能
基准测试:由于MySQL和MariaDB都已经存在一段时间了,您可以通过几个简单的搜索找到许多基准测试的公共列表。我们不会在这里这样做。相反,我们将向您强调需要在您选择的解决方案上执行您自己的基准测试,以了解性能如何影响您的应用程序。查看Baron Schwartz、Peter Zaitsev和Vadim Tkachenko提供的高性能MySQL:优化、备份和复制,可以在Amazon上以多种格式获得。
索引:索引提高了性能,同时也给数据库增加了一点开销。在没有索引的情况下,搜索数据库需要遍历整个表来找到相关的行。使用适当的索引,数据库引擎将更快地查找和检索特定的行。
MariaDB:与MySQL相比,MariaDB有几个性能优化。数据库视图:视图是可以像普通表一样查询的虚拟表。MariaDB经过优化,因此在查询视图时只查询相关的表,而MySQL则查询附加到视图的所有表。
Flash Storage:MariaDB提供MyRocks存储引擎,特别针对使用Flash存储时的更好性能进行了调整。
并行执行:从10.0开始,MariaDB自动提供了多个查询的并行执行。
线程池:如前所述,线程池是MariaDB独有的,允许一个线程处理到数据库的多个连接。MySQL添加了线程池,但只在企业版中。
复制
MySQL和MariaDB都支持复制,允许您将数据从一台服务器复制到另一台服务器。
复制品有几个优点。您可以在不影响生产实例的情况下查询副本以获得长时间运行的查询。您可以在复制副本上再次执行备份,而不会影响生产实例。
不过,有几点需要注意。
虽然MariaDB允许您从MySQL进行复制,例如,将数据从MySQL迁移到MariaDB,但是大多数MySQL版本都不允许您从MariaDB进行复制。
另外,MySQL GTID和MariaDB GTID是不同的实现,因此当您进行复制时,GTID将被调整。
存储引擎
到目前为止,MariaDB支持更多的存储引擎,但重要的是,您要选择满足应用程序需求和性能目标的存储引擎。
文档
MySQL文档由Oracle公司拥有和管理。
MariaDB文档由MariaDB基金会管理,但其他人可以提供帮助。
结论
MySQL和MariaDB都是强大的数据库,您可以使用它们为应用程序供电。
MySQL是一个久经考验的数据库,拥有强大的追随者。
MariaDB提供了MySQL的替代品,同时允许人们为其开源产品和文档做出贡献。
每一个都有其他人没有的有用特性。
在选择之前,先问自己以下问题:
你打算使用一个或另一个独有的功能吗? 您计划使用一个或另一个专用的数据库引擎吗? 对你来说,在社区中有发言权还是对你选择的数据库的开发过程有影响很重要? 在这一点上,你可能有一个很好的主意,你会选择。 (转载:www.idcew.com) |