前言 

  已知MariaDB预计于今年下半年将以spac形式完成上市,最近也看了不少文章,发现MariaDB正在以一个迅猛的速度超越mysql,mysql 可以说是开源数据库中最具代表性的一个,甚至可以说是一个时代,但MariaDB在一定程度上也确实表现出了优于mysql的特性,这让MySQL的未来发展形式让人担忧。从以下几个方面可以得出上述结论

出身  

  它是由MySQL的创始人Michael Widenius主导开发的,MySQL数据库中最重要的一个分支,之后SUN收购 了MySQL,于是就有了Oracle MySQL这个分支,在SUN被Oracle收购后,MySQL的所有权也落入Oracle的手中。之后 Michael Widenius在2009年创立了MariaDB。是完全兼容MySQL的存在。事实证明MariaDB的更新版本早已经超过了Oracle维护下的MySQL版本,所以MariaDB的血统在根本上说就是继承于mysql,而当下的mysql8.x版本及以后都是拥有oracle血统的mysql,这之中就有了商业模式的区别,oracle是闭源产品,而原先的mysql及现在的MariaDB仍选择开源商业模式,模式不同盈利手段也就不多做赘述。

发展潜力

  MariaDB 根据当下云时代的市场特性推出了两款产品即SkySQL和Enterprise

  SkySQL是MariaDB在2020年推出的企业级数据库即服务,增速迅猛、存储安全性等方面的表现均比mysql,AuroraDB更出色。以容器为基础,更能够跨云部署迁移,其Xpand技术,可以将资料切分成片,并且同步对扩展的数据库节点写入资料,由于资料能够在多节点同时读取和写入,因此分布式SQL不只可以提供线性的规模扩展,同时也能保持交易强一致性和ACID特性。

  MariaDB Xpand可以容忍单节点故障,因为Xpand会跨多个数据库节点,存储资料的冗余副本,而分布式SQL的节点故障容忍程度更高,SkySQL上的Xpand在云计算地区(Region)中的不同区域(Zone)分散冗余副本,比如说上海区的云服务器上的数据,在北京区的服务器上同样可以并存,官方提到,即便整个区域都故障,用户也不会丢失任何资料,因为至少有一个人信息料副本存储在另一个区域中,容灾能力更强。
Enterprise作为MariaDB基于服务器端的企业版本,Enterprise旨在将开源与企业功能相结合,具有更强的可靠性和稳定性,并包含许多向后兼容的功能,让企业不需要经常性的承担升级的风险和不确定性,但同时又能使用新功能。其主要竞品正是如今隶属于Oracle的MySQL。

兼容性

  从兼容性上来说MariaDB简直可以说是完败mysql,就单单MariaDB的向后兼容就可以让从众多用户不必担心升级带来的影响,而反观mysql从mysql5.X到mysql8.X就是不可逾越的(这其中当然原因也比较复杂),两者技术同源,而MariaDB可以对MySQL实现一键迁移,并且不论是在数据写入或是查询方面,都更有优势。

可替代性

  讲到可替代性,对于中小企业来说理由就很简单了,就是性价比,说的直白了就是谁更稳定,更便宜就选择谁,在这上面可不存在什么情怀,对于程序员来说就更是如此了,老板,客户用什么数据库,就掌握什么技能就行了,需要考虑的就是稳定性,和升级问题,安全问题等等,学了mysql的在MariaDB上依旧可以操作,完全属于平滑过渡,但随着版本更新,差异也会雨来越大,最后也必须回归到二选一的局面。

MYSQL时代是否将结束的更多相关文章

  1. [CB]Intel 2018架构日详解:新CPU&新GPU齐公布 牙膏时代有望明年结束

    Intel 2018架构日详解:新CPU&新GPU齐公布 牙膏时代有望明年结束 北京时间12月12日晚,Intel在圣克拉拉举办了架构日活动.在五个小时的演讲中,Intel揭开了2021年CP ...

  2. MySql开始日期、结束日期查询

    str_to_date('2016-08-24', '%Y-%m-%d %H') validStartTime str_to_date('2016-09-16', '%Y-%m-%d %H') val ...

  3. mysql 查询表死锁 和结束死锁的表步骤

    1.查询是否锁表 show OPEN TABLES ; 2.查询进程 show processlist 查询到相对应的进程===然后 kill    id 3.查看正在锁的事务 SELECT * FR ...

  4. mysql查询表死锁和结束死锁的方法

    1.查询是否锁表 show open tables where in_use>0; 2.查询进程 show processlist 查询到相对应的进程,然后 kill id 3.查看正在锁的事务 ...

  5. mysql 查询表死锁 和结束死锁的表步骤以及锁表等级

    1.查询是否锁表show OPEN TABLES where In_use > 0; 2.查询进程 show processlist  查询到相对应的进程===然后 kill    id 补充: ...

  6. 数据库 之MySQL 简单教程

      So Easy系列之MySQL数据库教程 1.   数据库概述 1.1.  数据库概述 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库,它产生于距今六十多年前,随着信息技术和 ...

  7. MySQL操作使用

    这只是一些简单的数据库命令,作为新手记录一下,以供后面查询使用. 查询服务器版本号和当前日期: select version(), current_date; 一个命令通常用一个SQL语句组成,后面跟 ...

  8. Windows mysql提示:1045 access denied for user 'root'@'localhost' using password yes

    Windows mysql提示:1045 access denied for user 'root'@'localhost' using password yes http://blog.csdn.n ...

  9. 平时一些mysql小技巧及常识

    >navicat premium 快捷键1.ctrl+q 打开查询窗口2.ctrl+/ 注释sql语句3.ctrl+shift +/ 解除注释4.ctrl+r 运行查询窗口的sql语句5.ctr ...

随机推荐

  1. PAT 乙级 1003. 我要通过!(20) (C语言描述)

    "答案正确"是自动判题系统给出的最令人欢喜的回复.本题属于PAT的"答案正确"大派送 -- 只要读入的字符串满足下列条件,系统就输出"答案正确&quo ...

  2. Spring学习:简单实现一个依赖注入和循环依赖的解决

    依赖注入 什么是依赖注入 使用一个会创建和查找依赖对象的容器,让它负责供给对象. 当a对象需要b对象时,不再是使用new创建,而是从容器中获取,对象与对象之间是松散耦合的关系,有利于功能复用. 依赖: ...

  3. 安装MySQL到Ubuntu 20.04

    本文的内容主要来自对How To Install MySQL on Ubuntu 20.04的翻译.在根据该文的指导下,我在自己的Ubuntu 20.04.3 LTS版本中安装了MySQL 8. St ...

  4. 【记录一个问题】go get -u github.com/go-redis/redis出现错误" invalid character '.' after top-level value"

    安装某个库的时候依赖于redis库,总是出现这样的错误: go install go: github.com/go-redis/redis/v7@v7.2.0: parsing go.mod: mis ...

  5. 刷机错误ERROR:STATUS_BROM_CMD__FAIL

    ERROR:STATUS_BROM_CMD_STARTCMD_FAIL window驱动没有安装好,几乎所有安装包都有问题,很难成功,成功了也很慢.这是因为之前检测到且烧写错误,然后上一次的驱动错误连 ...

  6. 学习JAVAWEB第六天

    # 今日内容: 1. JavaScript: 1. ECMAScript: 2. BOM: 3. DOM: 1. 事件 ## DOM简单学习:为了满足案例要求 * 功能:控制html文档的内容 * 获 ...

  7. SpringBoot使用异步线程池实现生产环境批量数据推送

    前言 SpringBoot使用异步线程池: 1.编写线程池配置类,自定义一个线程池: 2.定义一个异步服务: 3.使用@Async注解指向定义的线程池: 这里以我工作中使用过的一个案例来做描述,我所在 ...

  8. Nginx日志管理

    1 日志管理 1.1 Nginx日志描述 通过访问日志,你可以得到用户地域来源.跳转来源.使用终端.某个URL访问量等相关信息:通过错误日志,你可以得到系统某个服务或server的性能瓶颈等.因此,将 ...

  9. Go 学习路线(2022)

    原文链接: Go 学习路线(2022) Go 语言的发展越来越好了,很多大厂使用 Go 作为主要开发语言,也有很多人开始学习 Go,准备转 Go 开发. 那么,怎么学呢? 我发现,在互联网时代,学习的 ...

  10. eslint规则详解

    { // 环境定义了预定义的全局变量. "env": { //环境定义了预定义的全局变量.更多在官网查看 "browser":true, "node& ...