趣谈MySQL历史,以及MariaDB初体验

作者 | 王磊

来源 | Java中文社群(ID:javacn666)

转载请联系授权(微信ID:GG_Stone)

MySQL 是一个跨世纪的伟大产品,它最早诞生于 1979 年,距今已经有 40 多年的历史了,而如今比较主流的 Java 语言也只是 1991 年才诞生的,也就是说 MySQL 要比 Java 的诞生还早十几年,不得不惊叹二者强大的生命力。

MySQL 的应用十分广泛,像 Google、Taobao、Facebook、Twitter、Baidu、Tencent 等公司以及绝大多数互联网公司都能见到它的身影,MySQL 也一度是(目前也是)“数据库”的代名词。

MySQL 之所以流行和它开源以及免费的特性是分不开的,因为免费所有很多公司在用,因为被广泛使用所以会有一群狂热的爱好者为它提供技术支持,这样良性的循环将 MySQL 推向了巅峰。

以国内的情况来说,如今的互联网巨头阿里巴巴,当年当发展到一定规模之后就提出了“去 IOE”的口号,所谓的 I 就是 IBM,O 就是 Oracle,而 E 就是 EMC 存储设备,为什么要去 IOE?无非是出于成本的考虑,最后阿里以 MySQL 为基石逐渐去掉了对 Oracle 的依赖,MySQL 在巨头的使用下也在进行着快速的迭代,那么国内的其他小弟看大哥都用 MySQL 了,也就纷纷投入了 MySQL 的怀抱,于是 MySQL 慢慢就成为了各种互联网公司数据库的首选方案。

当然阿里在使用 MySQL 的同时也在研发自己的数据库 OceanBase,并且 OceanBase 在 2019 年的 TPC-C 中也战胜了曾经的老大哥 Oracle 一举成名,让世界看到了中国的实力,这也是我们每个国人的骄傲。

TPC-C 是全球最具公信力的联机交易处理数据库的功能与性能结合的测试标准。通俗来讲 TPC-C 测试是对于商业数据库想要证明自身实力的一个硬性门槛。



MySQL 被卖

扯远了,说回 MySQL。对于 MySQL 来说 2008 年是一个重要的一年,因为这一年 MySQL 被原来的 Sun 公司以 10 亿美金给收购了,第二年 Sun 公司又以 74 亿美元将自己和所有的产品打包卖给了 Oracle,从此 Oracle DB 和 MySQL 两家并一家都归属于 Oracle 公司了。

这里有一个小插曲,Oracle 在收购了 Sun 公司的第二年,就以一纸诉状将 Google 搞上了法庭,原因是 Google 侵权使用了 Java 语言,Oracle 要求赔偿 88 亿美元,这场旷世纪的官司最终在 2018 年以 Oracle 的胜诉而告一段落,那我们可不可以理解 Oracle 如果真拿到了 88 亿美元,在不计算打官司所花的费用来说,既白嫖了 Java 和 MySQL 还白赚了 14 亿美元呢。

MySQL 另起炉灶

看完了 MySQL 的历史,我们在回到 MySQL 产品本身。当年在 Sun 公司收购了 MySQL 之后,MySQL 的创始人 Monty Widenius(迈克尔·维德纽斯)因为不满意 Sun 的工作方式而选择了离职,之后 MySQL 之父带领了一帮兄弟,另起炉灶成立 MySQL 的一个重要分支:MariaDB。

迈克尔·维德纽斯,图片来源于网络

Maria 是 MySQL 之父 Monty 最小女儿的名字,好神奇!MariaDB 的命名竟然这么的草率,这也充分的说明,有一个好爹就可以让全世界都记住你的名字~

MariaDB 初体验

MariaDB 来自于 MySQL,因此 MariaDB 和 MySQL 在绝大多数方面是兼容的,对于应用程序来说,比如 PHP、Perl、Python、Java、.NET、Ruby 无需做任何改动就可以直接使用二者。值得一提的是 MariaDB 的发展速度很快,新版本的发布速度已经超过了 Oracle 公司官方的 MySQL 版本了。

MariaDB 和 MySQL 更多区别:https://go.mariadb.com/20Q4-WBN-GLBL-OSSC-MySQL-Comparison-Migration-2020-9-30_Registration-LP.html

那接下来我们就尝试体验一下 MariaDB 吧,它的下载地址:https://mariadb.com/downloads/

选择对应的版本和系统类型进行下载。

PS:因为官方下载地址是国外源,所以下载速度很慢,可以关注【Java中文社群】发送“Maria”获取最新版本的国内下载地址。

MariaDB 的安装和 MySQL 的安装比较类似,只是提供了更多可配置项,比如端口号和编码方式、密码等让用户可以友好的配置,安装如下所示:

输入用户密码和确认密码,选择是否用 UTF8 作为默认的字符集。

可以修改服务的名称、端口号和内存占用量,设置完之后点击 Next,等待完成之后整个安装就成功了。

自带客户端

我们发现安装完 MariaDB 之后它会自动帮我们安装一个 HeidiSQL 的客户端,使用它我们可以很方便的操作 MariaDB。

它的操作界面如下图所示:

美否暂且不论,就中文菜单和自带功能(视图、SQL 操作、导入导出数据等功能)来说,给我的第一个感觉就是很实用。

命令行工具

如果我们还是习惯用 MySQL 的操作命令行,在 MariaDB 装完之后(无需安装 MySQL)的情况下也可以直接使用 MySQL 的命令行工具,我们只需要先将 MariaDB 的安装(bin)目录设置在环境变量中,如下图所示:

再直接敲击 CMD 的命令行就可以直接操作了,如下图所示:

操作命令还是和操作 MySQL 的命令一样,还是那熟悉的味道~

官方 MySQL

Oracle 虽然收购了 MySQL,并且在前些年更新也很慢(MySQL 8)之前,这个也可以理解,毕竟要把主要的精力和核心的团队放在赚钱的 Oracle DB 身上嘛,但好在一点 Oracle 依然为我们保留了免费的社区版可供使用,Oracle 的 MySQL 相关产品如下:

  • MySQL Community Server 社区版本,开源免费,但不提供官方技术支持;

  • MySQL Enterprise Edition 企业版本,需付费,可以试用 30 天;

  • MySQL Cluster 集群版,开源免费。可将几个 MySQL Server 封装成一个Server;

  • MySQL Cluster CGE 高级集群版,需付费;

  • MySQL Workbench(GUI TOOL)一款专为 MySQL 设计的 ER 数据库建模工具。它是著名的数据库设计工具 DBDesigner4 的继任者。MySQL Workbench 又分为两个版本,分别是社区版(MySQL Workbench OSS)、商用版(MySQL Workbench SE)。

所以想要继续使用 Oracle 的 MySQL 版本也是可以的,有社区办可以免费用,但如果想要尝试一下 MariaDB 也未尝不可,毕竟 MariaDB 提供了更多的功能和优化的改进。

总结

MySQL 的发展一波三折,先被 Sun 收购,最后又归属于 Oracle,后来 MySQL 之父从被收购的公司出来自己又开始做 MySQL 新的分支 MariaDB,它可以看作是 MySQL 的升级版,有兴趣的朋友可以试试。


往期推荐

MySQL开源工具推荐,有了它我卸了珍藏多年Nactive!

2020-10-12

面试官:不会看SQL执行计划,简历也敢写精通SQL优化?

2020-05-28

高质量SQL的30条建议!(后端必备)

2020-05-13

关注下方二维码,收获更多干货!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/545775.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

算法图解:如何判断括号是否有效?

作者 | 王磊来源 | Java中文社群(ID:javacn666)转载请联系授权(微信ID:GG_Stone)今天要讲的这道题是 bilibili 今年的笔试真题,也是一道关于栈的经典面试题。经过前面文章的学习,我想…

让人省心的事件委托

事件委托:利用冒泡的原理把实践添加到父元素级别上,触发执行效果。 时间委托优点: 1.提高性能,不用for循环遍历所有li,节省性能。 2.新添加的元素还会有原来之前的事件。 先看时间委托提高的性能吧,一个常…

最新版MySQL在MacOS上的实践!

作者 | 王磊来源 | Java中文社群(ID:javacn666)转载请联系授权(微信ID:GG_Stone)在 MacOS 上安装最新版的 MySQL 有三种方法:使用 Docker 安装;使用 Homebrew 运行 brew install mys…

忘记MySQL密码怎么办?一招教你搞定!

作者 | 王磊来源 | Java中文社群(ID:javacn666)转载请联系授权(微信ID:GG_Stone)在安装完 MySQL 或者是在使用 MySQL 时,最尴尬的就是忘记密码了,墨菲定律也告诉我们,如果…

一文详解「队列」,手撸队列的3种方法!

作者 | 王磊来源 | Java中文社群(ID:javacn666)转载请联系授权(微信ID:GG_Stone)本文已收录至我的 Github《算法图解》系列:https://github.com/vipstone/algorithm前面我们介绍了栈&#xff08…

自定义设置一个屏保程序

用C语言写一个简单的窗口程序&#xff0c;目的是生成一个可视化的图形窗口&#xff0c;需要用到EasyX库&#xff0c;可在文章末尾的网盘链接中下载。该程序退出需左击鼠标&#xff0c;否则无法退出。 #include<stdio.h> #include<stdlib.h> #include<windows.h…

漫画:如何找到链表的倒数第n个结点?

————— 第二天 —————什么意思呢&#xff1f;我们以下面这个链表为例&#xff1a;给定链表的头结点&#xff0c;但并不知道链表的实际长度&#xff0c;要求我们找到链表的倒数第n个结点。假设n3&#xff0c;那么要寻找的结点就是元素1&#xff1a;如何利用队列呢&…

cacti添加I/O监控

首先下载snmpdiskio-0.9.6.zip,文件不好找&#xff0c;我已经放在本文章的附件里面。解压snmpdiskio-0.9.6.zip复制partition.xml到cacti/resource/snmp_queries/下面[roottest]# cp partition.xml /home/wwwroot/default/cacti/resource/snmp_queries/分别导入模板文件&#x…

磊哥私藏书单分享,160买400的书!

程序员的节日&#xff08;10.24&#xff09;到了&#xff0c;当当的活动也搞起来了&#xff0c;作为有上进心的你&#xff0c;怎么可能停止学习和进步呢&#xff1f;所以磊哥在当当满 400 元减 200 元的基础上&#xff0c;有要了一个减 40 的劵&#xff0c;也就是只需要花 160 …

linux——回射服务器

回射服务器即客户端发送一段数据给服务器&#xff0c;服务器再将这段数据原封不动的发送给客户端&#xff0c;原理很简单&#xff0c;原理图如下&#xff1a; 以TCP协议为例&#xff0c;客户端、服务器代码如下&#xff1a; ** 服务器&#xff1a; ** #include <stdio.h…

Android 5.0 API 的变化——开发人员注意

Android 5.0 API变化译自 http://developer.android.com/intl/zh-cn/about/versions/android-5.0.html —— By NashLegendSample示例在这里找&#xff1a;https://github.com/googlesamples/原译文在我的github上&#xff1a;https://github.com/NashLegend/ProjectBabel/blob…

Java中的5大队列,你知道几个?

作者 | 王磊来源 | Java中文社群&#xff08;ID&#xff1a;javacn666&#xff09;转载请联系授权&#xff08;微信ID&#xff1a;GG_Stone&#xff09;本文已收录至 https://github.com/vipstone/algorithm 《算法图解》系列。通过前面文章的学习《一文详解「队列」&#xff0…

linux——回射服务器多并发(多进程)

多并发原理如图&#xff0c;多个客户端连接一个服务器&#xff0c;无论哪个客户端发送数据给服务器&#xff0c;服务器都能把数据准确的返回给这个客户端。 在socket编程中&#xff0c;socket这种文件描述符被默认设置为阻塞&#xff0c;故而read函数和accept函数时阻塞函数&a…

算法图解:如何用两个栈实现一个队列?

作者 | 王磊来源 | Java中文社群&#xff08;ID&#xff1a;javacn666&#xff09;转载请联系授权&#xff08;微信ID&#xff1a;GG_Stone&#xff09;本文已收录至 https://github.com/vipstone/algorithm 《算法图解》系列。队列和栈是计算机中两个非常重要的数据结构&#…

「递归算法」看这一篇就够了|多图

前言递归是一种非常重要的算法思想&#xff0c;无论你是前端开发&#xff0c;还是后端开发&#xff0c;都需要掌握它。在日常工作中&#xff0c;统计文件夹大小&#xff0c;解析xml文件等等&#xff0c;都需要用到递归算法。它太基础太重要了&#xff0c;这也是为什么面试的时候…

linux——服务器与客户端实现聊天功能

先联想一下聊天的场景&#xff0c;假设甲和乙在聊天&#xff0c;他们每个人都能够发送给对方一句话甚至多句话&#xff0c;也能接收到对方发来的一句或多句话&#xff0c;也就是说&#xff0c;甲在发送一句话给乙的时候&#xff0c;同时也能接收到乙发来的信息&#xff0c;而且…

有关链表的小技巧,我都给你总结好了

链表链表是数据结构里一个很基础但是又很爱考的线性结构&#xff0c;链表的操作相对来说比较简单&#xff0c;但是非常适合考察面试者写代码的能力&#xff0c;以及对 corner case 的处理&#xff0c;还有指针的应用很容易引起 NPE (null pointer exception)。综合以上原因&…

ActiveReports 9实战教程(1): 手把手搭建环境Visual Studio 2013 社区版

ActiveReports 9刚刚发布3天&#xff0c;微软就发布了 Visual Studio Community 2013 开发环境。Visual Studio Community 2013 提供完整功能的 IDE &#xff0c;可开发 Windows、Android 和 iOS 应用。支持&#xff1a;C, Python, HTML5, JavaScript, 和 C#,VB, F# 语言的开发…

第 1-1 课:Java 程序是如何执行的?

了解任何一门语言的精髓都是先俯览其全貌&#xff0c;从宏观的视角把握全局&#xff0c;然后再深入每个知识点逐个击破&#xff0c;这样就可以深入而快速的掌握一项技能。同样学习 Java 也是如此&#xff0c;本节就让我们先从整体来看一下 Java 中的精髓。 Java 介绍 Java 诞…

linux——两个客户端之间实现聊天(TCP、单线程)

两个客户端实现聊天功能&#xff0c;那么服务器作转发信息的作用&#xff0c;客户端A先将信息发送到服务器&#xff0c;在由服务器将信息发送到客户端B&#xff0c;客户端B也是一样。客户端与服务器都应该有两个执行流&#xff0c;服务器的一个执行流不断的接收客户端A的信息并…