技术开发 频道

追根溯源:MariaDB和MySQL比较分析

  【IT168 评论】MariaDB是MySQL源代码的一个分支,在意识到Oracle会对MySQL许可做什么后分离了出来(MySQL先后被Sun、Oracle收购)。这些担忧是有依据的,我会在本文的后面讲到。除了作为一个Mysql的“向下替代品”,MariaDB包括的一些新特性使它优于MySQL。

  在介绍这些特性前,我想先谈谈MariaDB的版本编号模式。首先,MariaDB版本与Mysql版本相匹配——比如MariaDB 5.1,与MySQL 5.1使用相同的代码。由于更新和修复是针对MySQL源码树的,这样的话MariaDB可以采纳这些补丁(理论上,MariaDB每月都与MySQL源码合并)。但是如果新的独特特性定期添加的话,我想代码校验肯定会是一个恶梦。

  MariaDB团队应该也意识到这一点,他们已经开始制定新的编号方案。最新的MariaDB版本(目前仍处于alpha状态)是Maria 10.0,后面跟着一个小数:

  mysql -P 3406 -u root -p
  Enter password: ********
  Welcome to the MariaDB monitor. Commands end with ; or \g.
  Your MariaDB connection id is 1
  Server version: 10.0.2-MariaDB mariadb.org binary distribution
  Copyright (c) 2000, 2013, Oracle, Monty Program Ab and others.
  Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.
  MariaDB [(none)]> select version();
  +—————-+
  | version() |
  +—————-+
  | 10.0.2-MariaDB |
  +—————-+
  1 row in set (0.01 sec)
  MariaDB [(none)]>

  MariaDB再三甚至有些散漫地解释为什么他们这样做——尽管这样让开发者感到不适,但它就是这样。如果依旧完全兼容Mysql的话他们不能继续添加新特性。

  至于新特征?让我们看一下其中的几个。

  Cassandra引擎

  MariaDB的一个独特特性是它的连接到Cassandra后端的引擎。引擎本身只是一个加入到Cassandra服务器中单独运行中介(Cassandra是一个NoSQL类型的键-值存储,由Facebook创建后来成为了Apache的项目;它可用于集群且没有单点故障,它同样不是完全ACID的)。通常,如果你使用Cassandra引擎的话你就无法获得与InnoDB或extradb相近的速度或性能。

  但是你可以通过MySQL访问数据,通过允许selects、inserts、updates、deletes甚至拓展的join就像使用SQL感觉一样,但MariaDB团队表示Cassandra引擎不适合大量数据的分析类查询。

  如果你在写一个需要访问Cassandra数据应用软件,那么你最好直接使用Cassandra的原生API而不是通过MySQL。如果你的注意力在 MySQL命令行,且需要抓一些数据,这种情况Cassandra引擎可以派上用场——但如果你打算这样做的话,你可能只想尝试下Cassandra的命 令行界面。

  所以我真的不知道哪种是适用情况,但这并没有阻止一些人在博客上抒发对此功能的兴奋之情。

  OQGraph引擎

  我不会介绍这个特性的全部,因为它跟Cassandra想法相同:这个引擎是图计算引擎的开放查询接口。这对一些特定的应用可能有用,尽管表面上看将图形结构映射到SQL格式有些古怪。

  MariaDB的一个重要的增强力量是使用xtradb作为InnoDB的向下替代。而且xtradb增加了现代软件所需要的可扩展能力——这是核心不同点。Oracle声称MySQL现在的拓展性比以前好,可能的确如此,但引擎还是那个引擎。如果引擎不能真正具备拓展性,那么MySQL也同样不具备。

  原子写

  选择关系型数据库而不是NoSQL的主要原因是前者对ACID的完全支持。简单的说,如果有失败,你不想丢失数据。尽管故障可能并不经常在我们的开发用机上发生,但在很多的IT中心却很常见。目前,默认的InnoDB/XtraDB引擎采用双缓冲的方法来写入数据以确保崩溃时数据能写入成功。然而,当使用高速的SSD设备时(打个比方),双缓存对性能有负面影响——会减小SSD在访问速度方面的优势。解决办法是什么呢?现在你可以关掉双缓冲打开所谓的原子写。先在你磁盘上验证再应用到生产环境。

  同样是一个有趣的功能,但还不是那个让你转用MariaDB抛弃MySQL的特性。

0
相关文章