Oracle 工程师离职并回踩:MySQL 糟糕透顶,强烈推荐 PostgreSQL
整理 | 祝涛
出品 | CSDN(ID:CSDNnews)
如果你即将离职,你会做什么?抨击自己付出了五年心血的技术——这是Oracle公司前首席软件工程师、MySQL优化器团队成员Steinar Gunderson的选择。
这位工程师现已在Chrome团队任职,他在一篇文章中表示,他离任的原因很复杂,但他特别指出:“MySQL是一个糟糕透顶的数据库,你应该考虑用Postgres作为代替。”
MySQL已经“江郎才尽”
“来到MySQL团队就像踏入了一个平行宇宙,那里有很多人真的相信MySQL是一个最先进的产品。”尽管如此,目前来看仍然有“大量的改进空间”,“管理层强烈支持大规模的重构”。
虽然他对自己在MySQL上的工作感到自豪,MySQL 8.0也无疑是一个比5.7版本 “更好的产品”,但Gunderson表示:“你能做的也只有这么多。我和团队其他人所做的改变使得MySQL优化器朝着21世纪初期设计的方向发展,并进行了一些不错的调整,但这也是它的终点了。”Gunderson表示,无论公司内部如何吹嘘,他都无法相信MySQL会变成一个有竞争力的产品。
不过,不得不说Oracle确实在MySQL上花了很多心思。例如,去年12月,它升级了Oracle云中的在线分析处理能力。内存分析引擎旨在提高开源数据库的性能,由负责Oracle同名数据库的同一团队开发。
MariaDB不会比MySQL更好
MySQL原本是一个开放源码的关系数据库管理系统,第一个版本可以追溯到1995年。原开发者为瑞典的MySQL AB公司,该公司于2008年被昇阳微系统(Sun Microsystems)收购。2009年,甲骨文公司(Oracle)收购昇阳微系统公司,MySQL成为Oracle旗下产品。
MySQL在过去由于性能高、成本低、可靠性好,已经成为最流行的开源数据库,因此被广泛地应用在Internet上的中小型网站中。随着MySQL的不断成熟,它也逐渐用于更多大规模网站和应用,比如维基百科、Google和Facebook等网站。非常流行的开源软件组合LAMP中的“M”指的就是MySQL。
但被甲骨文公司收购后,Oracle大幅调涨MySQL商业版的售价,且Oracle公司不再支持另一个自由软件项目OpenSolaris的发展,因此导致自由软件社群们对于Oracle是否还会持续支持MySQL社群版(MySQL之中唯一的免费版本)有所隐忧,MySQL的创始人麦克尔·维德纽斯以MySQL为基础,成立分支计划MariaDB。而原先一些使用MySQL的开源软件逐渐转向MariaDB或其它的数据库。
但Gunderson对此也是嗤之以鼻,他表示:“不要相信MariaDB会比MySQL更好。”
没有理由不选择PostgreSQL
Gunderson没有详细解释为什么PostgreSQL比MySQL好得多,但他也并不是唯一一个提出这个观点的人。
SIB Visions的首席执行官Roland Hörmann上周在Postgres Build 2021上发表了演讲,他也特别提到了从Oracle的专有数据库转移到PostgreSQL的问题。
Hörmann表示:“如果客户询问应该选择哪个数据库,我总是回答PostgreSQL。没有理由不选择PostgreSQL:它是开源的,而且会变得更好。”
“如果你要建立一个数据库,你只需配置一次PostgreSQL的conf文件,然后它就能一直运行下去。你几乎不需要做任何事情,当然,你也需要设置备份等等,但你不必再花那么多时间了。”
你会弃用MySQL而选择PostgreSQL吗?
参考链接:
https://www.theregister.com/2021/12/06/mysql_a_pretty_poor_database/
https://blog.sesse.net/blog/tech/2021-12-05-16-41_leaving_mysql.html
https://zh.wikipedia.org/wiki/MySQL
往
期
回
顾
资讯
程序员敲诈老板,或面临37年监禁
资讯
Meta新语音模型可支持128种语言交流
资讯
全球首个活体机器人,能生娃
资讯
机器人Ameca苏醒瞬间逼真到令人…
分享
点收藏
点点赞
点在看
相关文章:

ORA-01109:数据库未打开(解决)
SQL> startup mountORA-01081: 无法启动已在运行的 ORACLE - 请首先关闭它SQL> shutdown immediateORA-01109: 数据库未打开 已经卸载数据库。ORACLE 例程已经关闭。SQL> startup mountORACLE 例程已经启动。 Total System Global Area 612368384 bytesFixed Size 125…

[洛谷P1317]低洼地
题目大意:一组数,分别表示地平线的高度变化。高度值为整数,相邻高度用直线连接。找出并统计有多少个可能积水的低洼地?(首尾都为0) 题解:求出其中都多少个不严格下降子段和不严格上升子段所夹的…

Linux环境编程--多线程
本文作者: 姚继锋 (2001-08-11 09:05:00) 时隔多年 原文地址已经无从查。。。 居然是2001年就写了 今天看来对初学者还是很有参考意义 所以特转给大家 本人在原文基础上适当修改 1 引言 线程(thread)技术早在60年代就被提出,但真正应…

Python 到底该怎么学才好?你关心的答案来了
相对于Android、IOS等技术,Python有着更为广阔的应用领域,例如前后端、AI、数据分析、爬虫、自动化、游戏开发等几乎所有领域都有它的应用。但也正因为如此,很多新人在学完Python基础后,根本不知道该选择什么方向深造,…

9513 防空洞
时间限制:1000MS 内存限制:65535K提交次数:104 通过次数:24 题型: 编程题 语言: G;GCC Description 有一天,dragon123偷偷地拿锄头在学校里挖开了一个尘封已久的防空洞。他在这个防空洞里面找到许多贵重的东西:一些石头和一些液体。dragon123知道&…

学习Mybatis与mysql数据库的示例笔记
目录结构: pom.xml文件 1 <?xml version"1.0" encoding"UTF-8"?>2 <project xmlns"http://maven.apache.org/POM/4.0.0"3 xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"4 xsi:schem…

Linux环境编程--进程通信
实验内容 编写程序实现进程的管道通信。用系统调用pipe( )建立一管道,二个子进程P1和P2分别向管道各写一句话:Child 1 is sending a message!Child 2 is sending a message! 父进程从管道中读出二个来自子进程的信息并显示(要求先接收P1&…

你的编程能力从什么时候开始突飞猛进的?
如果提到程序员,很多人的印象是:呆板、木讷、不懂浪漫。如果提到代码,很多人的印象是:枯燥、繁琐、很难理解。但其实程序员的浪漫是普通人想象不到的,有一个网友为了追女生,以自己和女生为主角写了一个战棋…

超级 App 手机百度云端架构设计与个性化推荐
2015 年 6 月 28 日下午,百度与 InfoQ 携手举办了手机百度“云和端技术实践”沙龙活动。这是手机百度首次公开超级 App 背后的技术知识。活动分云端和客户端技术两个会场同时举办,吸引了众多技术爱好者前来学习交流。现场人数爆满,气氛热烈。…
Scala和范畴论 -- 对Monad的一点认识
背景 所有一切的开始都是因为这句话:一个单子(Monad)说白了不过就是自函子范畴上的一个幺半群而已,有什么难以理解的。第一次看到这句话是在这篇文章:程序语言简史(伪)。这句话出自Haskell大神Philip Wadler࿰…

Linux环境编程--linux中的perror、exit、_exit、wait 和 waitpid
perror:#include<stdio.h> #include<stdlib.h>定义函数 void perror(const char *s); perror ("open_port");函数说明 perror ( )用 来 将 上 一 个 函 数 发 生 错 误 的 原 因 输 出 到标 准 错误 (stderr) 。参数 s 所指的字符…

DeepMind 打造 AI 游戏系统,可以玩扑克、国际象棋、围棋等,战斗力爆表
编译 | 禾木木 出品 | AI科技大本营(ID:rgznai100) 谷歌母公司 Alphabet 的人工智能实验室 DeepMind 长期以来一直投资于游戏人工智能系统。实验室的理念是,游戏虽然缺乏明显的商业应用,但却是认知和推理能力的独特相关挑战。这使…

WPF-动态加载
添加一个UserControl,命名为BusyIndicator,view为空,在其.cs文件中定义一个类 1 /// <summary> 2 /// 动态实体 3 /// </summary> 4 public class AnimationObject 5 { 6 publ…

ORA-06502 when awr report produce
最近在生成一套系统的AWR报告时出现了如下报错:ORA-06502: PL/SQL: numeric or value error: character string buffer too small,然后生成AWR报告的过程就终止了,查看生成的AWR报告,发现报告时不完整的,AWR报告到Comp…

进程间通信学习小结(共享内存)
要使用共享内存,应该有如下步骤:1.开辟一块共享内存 shmget()2.允许本进程使用共某块共享内存 shmat()3.写入/读出4.禁止本进程使用这块共享内存 shmdt()5.删除这块共享内存 shmctl()或者命令行下ipcrm 共享内存可以说是最有用的进程间通信方式ÿ…

[ObjectiveC]NSDATA, NSDICTIONARY, NSSTRING互转
2019独角兽企业重金招聘Python工程师标准>>> NSDATA-->NSDICTIONARY NSDictionary *dict [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil]; NSDICTIONARY-->NSDATA NSData *data [NSJSONSerialization dat…

如流智会2021:技术结合场景 让企业知识懂员工
12月10日,“如流智会2021智能进化”在京举行,学界专家业界大咖云集荟聚,共商企业智能化转型之道。会上,百度集团副总裁、百度集团首席信息官(CIO)李莹表示:“智能经济时代,智能组织是…

WSFC 仲裁模型选择
今天我们再来详细讨论下关于WSFC的仲裁模型,主要仲裁模型的优缺点,应该如何去思考选择最佳合适方案WSFC引入仲裁,主要有两个目的跟踪群集当前运作票数是否符合仲裁模型协定,如果低于最少允许节点,则决定关闭群集&#…

关于进程间通信的学习心得
进程:进程是指独立地址空间的指令序列进程的五种状态:新建,就绪,运行,睡眠,僵死进程间通信:是不同进程之间进行一些"接触",这种接触有简单,有复杂。机制不同&a…

Go modules基础精进,六大核心概念全解析(上)
Go 语言做开发时,路径是如何定义的?Go Mudules又为此带来了哪些改变?本文将会全面介绍Go Modules六大核心概念,包括了设计理念与兼容性原则等,掌握这些技术点对于管理和维护Go 模块有重要价值。 在Go Modules 的前世今…

PARAMETERS 指令
语法: PARAMETERS <p> [DEFAULT <f>] [LOWER CASE] [OBLIGATORY] [AS CHECKBOX] [RADIOBUTTON GROUP <rad>] 实例: PARAMETERS: NAME(8), AGE TYPE I, BIRTH TYPE D. OBLIGATORY:强制要求输入, 屏幕上会出現一个“√” , 使用者必须要输入才可。 AS C…

阿里发布AliGenie2.0系统,“百箱大战”用上视觉武器
天猫精灵X1的升级版X2没有预期出现,而人机交互系统AliGenie升级到最新的2.0版本,功能强大。 3月22日,阿里巴巴人工智能实验室总经理浅雪(陈丽娟)发布AliGenie2.0系统,它最大的改进是在1.0的基础上增加了视觉…

Centos5.6 VNC安装配置【无错版】
不严格按本步骤就会出现VNC桌面花屏,就是桌面分离为一层一层的。。。 ---------------------------------------- 先装X window http://blog.csdn.net/21aspnet/article/details/6997549 ---------------------------------------- Centos5.6 VNC安装配置 一、检查是…

关于IOS的屏幕适配(iPhone)——资源适配
IOS的屏幕适配几乎不需要大量的代码操作,更多的时间我们只是动动鼠标选择一下就搞定。可以苹果在这方面做的还是比较人性的,解放了开发者。 首先来说说Iphone这几种屏(由于最近做的是iPhone APP还未涉及到iPad,将来涉及到iPad时会…

Go modules基础精进,六大核心概念全解析(下)
Go 语言做开发时,路径是如何定义的?Go Mudules又为此带来了哪些改变?本文将会全面介绍Go Modules六大核心概念,包括了设计理念与兼容性原则等,掌握这些技术点对于管理和维护Go 模块有重要价值。 在上篇中,我…

京东区块链白皮书解读, 做“链接器”,一次技术宣言
前天,京东对外发布了《京东区块链技术白皮书(2018)》。 昨天,京东金融发布了旨在帮助中小银行提升零售信贷效率的产品“北斗”。目前,“北斗”已经接入包括江苏银行、南京银行、包商银行在内的近30家银行。京东金融还与近30家商业银行共同发起…

xauth: (stdin):1: bad display name LSPPC-Lenny:1 in add command
启动vnc4server之后出现如下错误提示:LSPPC-Lenny:~# vnc4serverxauth: (stdin):1: bad display name "LSPPC-Lenny:1" in "add" command New ‘LSPPC-Lenny:1 (root)’ desktop is LSPPC-Lenny:1 Starting applications specified in /root/…

使用 Python 和 OpenCV 构建 SET 求解器
作者 | 小白来源 | 小白学视觉小伙伴们玩过 SET 吗?SET 是一种游戏,玩家在指定的时间竞相识别出十二张独特纸牌中的三张纸牌(或 SET)的模式。每张 SET 卡都有四个属性:形状、阴影/填充、颜色和计数。下面是一个带有一些…

Delphi XE5 常用功具与下载
1.Delphi XE5 正式版http://altd.embarcadero.com/download/radstudio/xe5/delphicbuilder_xe5_win.isohttp://altd.embarcadero.com/download/radstudio/xe5/delphicbuilder_xe5_upd1_win.iso2. cnpack 助手工具http://www.cnpack.org/download/unstable/CnWizards_1.0.1.665_…

maven学习(4)-Maven 构建Web 项目
紧接着上一节(3),现在maven新建web项目,user-web。模拟一个用户登录的需求: 工程结构: pom.xml: <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance&qu…