从DBA是“擦车的”谈起

前段时间有网友在群里讨论,把数据库代码工作者比做是造车的,业务应用开发人员是开车的,而数据库管理员(DBA)则是擦车的。有网友评论这句话,“伤害性不大,侮辱性极强”。说实在的,个人觉得这个说法虽然有些偏激(DBA起码也能算个修车的),但在当前XC背景下来看还算是中肯。

但是这是一件值得称道或者说值得自豪的事情吗?个人觉得未必。我们从市场和技术这两个维度来看这件事。

首先是市场生态

Oracle之所以能够称霸数据库领域40年,最核心的本质是构建了良好的生态环境。在这个环境中大家都能获取到自己想要的,直白的说,从事Oracle相关的工作,能让大家都赚到钱。早期Oracle数据库技术并不是最好的,但是因为没有硬性的License授权限制,只要是想用想学的,都可以下载到没有任何功能限制的介质,官网上还提供了非常详细的安装管理和优化文档,生怕你学不会用不好。正式凭借着开放的市场策略,让Oracle数据库赢得了大量的忠实用户,产品在众多场景中得到了广泛的使用。开发商基于Oracle数据库开发的应用软件运行稳定、性能良好,获得用户的好评;而Oracle则充分利用这些机会快速发展和完善自己的产品。

由此构建了一个良好的市场生态系统,集成商通过出售产品赚取到渠道利润,开发商通过开发满足客户个性化需求的功能软件赚到应用开发的钱,而DBA则也能够通过自己对数据库的了解,让数据库能够更快更好的运行,也能赚取到自己的那份“辛苦钱”。

其次是技术生态

Oracle提供了丰富的性能观测体系和故障诊断手段,从运行统计指标维度看,在Oracle 11g数据库中有600+,到了19c大幅跃升到2000+;而等待事件模型,在11g中多达1300+,到了19c上升到1900+。通过这些指标体系可以快速对数据库运行状态和所发生的问题进行精确定位。同时,Oracle也非常注重运维知识的积累,其官方支持知识库(My Oracle Support)中包含了各种故障场景的Case处理步骤,以及对相关概念和数据库核心运作机制的详细说明文档。正是有了这些扎实的技术支持基础,让运维人员并不需要去翻阅源码就能比较清晰的了解数据库的底层运行逻辑,结合统计指标、等待事件、运行日志和后台知识库中的案例,绝大多数问题都能在运维层面得到解决,而不需要动不动就“召回返厂”去麻烦研发人员。

正是基于这些技术基础,催生了一个新的岗位 – 数据库管理员,专门负责数据库的管理和运维,也就是前文所说的“修车人” 。在这个体系中,运维管理等“脏活累活”可以交给数据库管理员来负责,研发可以专注在数据库产品功能开发等“高大上”的工作上。

尴尬的DBA

但在国产数据库的生态中,传统DBA角色处在一个非常尴尬的地位。

首先,DBA的技能主要来自于实战经验的积累。比如结合操作系统、内存、存储及网络等多个维度的最佳实践,让数据库稳定高效的运行。但是这些最佳实践是需要各种案例和场景的打磨,国产数据库的使用案例和技术积累和Oracle相比差距还不小,因此专业的运维人员得到锻炼的机会也少,在不掌握源码的情况下,DBA没有太多可发挥的空间;

其次,大多数传统DBA写代码的能力并不占优,他们的工作性质也比较难接触到源码。除了实战经验,DBA另外的主要技能来源就是阅读文档,但绝大多数国产数据库厂商提供的文档都非常有限,即使提供了文档也仅限于概念,安装和配置类的,深入介绍原理实现和相关的资料很少。至于故障案例知识库更是绝无仅有,能保持社区的问题能及时得到回复就算是非常优秀的。更有一部分厂商,不仅没有对外发布官方文档,连测试介质都不提供,更别提什么生态建设。这种情况下,DBA怎么能快速成长?

写在最后

昨天已经发布了新一期的安全可信评测入围产品,意味着国产数据库的竞争已经到了下半场,没有进入名单的数据库,基本已经被排除在国央企的采购清单之外,未来的发展空间基本被定格。但是即使进入了名单并不意味着能够高枕无忧,下半场比拼的将会是生态建设的持久战。

这个世界都是很现实的,当其他人没办法通过你的产品赚到钱的时候,还会有人用你的产品吗?

最后再回到开头的话题,研发抛头露面是一件值得骄傲的事情吗?这恰恰说明产品还远未成熟,市场生态仍然亟待完善,从整个产品生态上来说,需要做的工作还很多很多。

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

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

相关文章

gdb 调试 linux 应用程序的技巧介绍

使用 gdb 来调试 Linux 应用程序时,可以显著提高开发和调试的效率。gdb(GNU 调试器)是一款功能强大的调试工具,适用于调试各类 C、C 程序。它允许我们在运行程序时检查其状态,设置断点,跟踪变量值的变化&am…

指针 (5)

目录 1. 字符指针变量 2. 数组指针变量 3. ⼆维数组传参的本质 4. 函数指针变量 5.typedef 关键字 6 函数指针数组 7.转移表 计算器的⼀般实现 1. 字符指针变量 在指针的类型中我们知道有⼀种指针类型为字符指针 char* #include <stdio.h> int main() {char* ch …

VB.net读写NDEF标签URI智能海报WIFI蓝牙连接

本示例使用的发卡器&#xff1a;https://item.taobao.com/item.htm?ftt&id615391857885 Public Class Form1Dim oldpicckey(0 To 5) As Byte 卡片旧密码Dim newpicckey(0 To 5) As Byte 卡片新密码Function GetTagUID() As StringDim status As ByteDim myctrlword As …

矩阵系统源码搭建的具体步骤,支持oem,源码搭建

一、前期准备 明确需求 确定矩阵系统的具体用途&#xff0c;例如是用于社交媒体管理、电商营销还是其他领域。梳理所需的功能模块&#xff0c;如多账号管理、内容发布、数据分析等。 技术选型 选择适合的编程语言&#xff0c;如 Python、Java、Node.js 等。确定数据库类型&…

Activiti7 工作流引擎学习

目录 一. 什么是 Activiti 工作流引擎 二. Activiti 流程创建步骤 三. Activiti 数据库表含义 四. BPMN 建模语言 五. Activiti 使用步骤 六. 流程定义与流程实例 一. 什么是 Activiti 工作流引擎 Activiti 是一个开源的工作流引擎&#xff0c;用于业务流程管理&#xf…

Linux开发讲课45--- 链表

Linux内核代码中广泛使用了数据结构和算法,其中最常用的有链表、队列kfifo、红黑树、基数树和位图。 链表 Linux内核代码大量使用了链表这种数据结构。链表是在解决数组不能动态扩展这个缺陷而产生的一种数据结构。 链表所包含的元素可以动态创建并插入和删除。链表的每个元素…

【经典机器学习算法】谱聚类算法及其实现(python)

&#x1f308; 个人主页&#xff1a;十二月的猫-CSDN博客 &#x1f525; 系列专栏&#xff1a; &#x1f3c0;深度学习_十二月的猫的博客-CSDN博客 &#x1f4aa;&#x1f3fb; 十二月的寒冬阻挡不了春天的脚步&#xff0c;十二点的黑夜遮蔽不住黎明的曙光 目录 1. 前言 2. 前…

躺平成长:微信小程序运营日记第二天

在进行属于生活的开源之后&#xff0c;自己更加感受到自己存在的渺茫&#xff0c;同时更加开始深刻领会&#xff0c;开源的重要性&#xff0c;在开源&#xff0c;开放&#xff0c;创造&#xff0c;再创新的思维模式下&#xff0c;不发布八部金刚功相关的训练视频&#xff0c;自…

每日一题|983. 最低票价|动态规划、记忆化递归

本题求解最小值&#xff0c;思路是动态规划&#xff0c;但是遇到的问题是&#xff1a;动态规划更新的顺序和步长&#xff0c;以及可能存在的递归溢出问题。 1、确定dp数组含义 dp[i]表示第i天到最后一天&#xff08;可能不在需要出行的天数里&#xff09;&#xff0c;需要花费…

Suricata:开源网络分析和威胁检测

Suricata 是一款高性能、开源网络分析和威胁检测软件&#xff0c;被大多数私人和公共组织使用&#xff0c;并被主要供应商嵌入以保护他们的资产。 Suricata 功能 Suricata 提供全面的网络安全监控 (NSM) 功能&#xff0c;包括记录 HTTP 请求、捕获和存储 TLS 证书以及从网络流…

汽车3d动画渲染选择哪个?选择最佳云渲染解决方案

面临汽车3D动画渲染挑战&#xff1f;选择正确的云渲染服务至关重要。探索最佳解决方案&#xff0c;优化渲染效率&#xff0c;快速呈现逼真动画。 汽车3d动画渲染选择哪个&#xff1f; 对于汽车3D动画渲染&#xff0c;选择哪个渲染器取决于你的项目需求、预算和期望的效果。Ble…

yolov8/9/10模型在安全帽、安全衣检测中的应用【代码+数据集+python环境+GUI系统】

yolov8910模型安全帽、安全衣检测中的应用【代码数据集python环境GUI系统】 yolov8/9/10模型在安全帽、安全衣检测中的应用【代码数据集python环境GUI系统】 背景意义 安全帽和安全衣在工业生产、建筑施工等高风险作业环境中是保护工人免受意外伤害的重要装备。然而&#xff0…

Qt 学习第十一天:QTableWidget 的使用

一、创建QTableWidget对象&#xff0c;设置大小&#xff0c;在窗口的位置 //创建tablewidgetQTableWidget *table new QTableWidget(this);table->resize(550, 300);table->move(100, 100); //移动 二、设置表头 //设置表头QStringList headerList; //定义headerList…

web开发(1)-基础

这是对b站课程的总结&#xff0c;后续可能会继续更 01 前后端分离介绍_哔哩哔哩_bilibili01 前后端分离介绍是Web应用开发-后端基础-基于Springboot框架的第1集视频&#xff0c;该合集共计29集&#xff0c;视频收藏或关注UP主&#xff0c;及时了解更多相关视频内容。https://w…

GPG error golang 1.19

1. 问题描述及原因分析 在飞腾2000的服务器&#xff0c;OS为Kylin Linux Advanced Server release V10环境下&#xff0c;docker版本为18.09.0&#xff08;docker-engine-18.09.0-101.ky10.aarch64&#xff09;&#xff0c;基于容器镜像golang:1.19编译新的容器镜像&#xff0…

【C++篇】启航——初识C++(上篇)

下篇&#xff1a;【C篇】启航——初识C&#xff08;下篇&#xff09; 目录 引言 一、C的起源和发展史 1.起源 2.C版本更新 二、C在⼯作领域中的应⽤ 三、C入门建议 1.参考文档 2.推荐书籍 四、C的第一个程序 1.C语言写法 2.C写法 五、命名空间 1.为什么要有命名空…

AI 对话工具汇总

&#x1f423;个人主页 可惜已不在 &#x1f424;这篇在这个专栏AI_可惜已不在的博客-CSDN博客 &#x1f425;有用的话就留下一个三连吧&#x1f63c; 目录 前言: 正文: 前言: 在科技飞速发展的时代&#xff0c;AI 对话正逐渐成为我们获取信息、交流思想的新方式。它以强…

若无向图G(V,E)中含7个顶点,为保证图G在任何情况下都是连通的,则需要的边数最少是多少?

这乍一看是不是可抽象&#xff08;迷糊&#xff09;了&#xff0c;butttt待我小翻译一下。 先举少一点的例子&#xff0c;假如我们有三个点&#xff0c;我给你两条边&#xff0c;那是不是不管咋连都一定一定是连通的。 那我们再进一步&#xff0c;假如四个点呢&#xff1f;我给…

RabbitMQ 界面管理说明

1.RabbitMQ界面访问端口和后端代码连接端口不一样 界面端口是15672 http://localhost:15672/ 后端端口是 5672 默认账户密码登录 guest 2.总览图 3.RabbitMq数据存储位置 4.队列 4.客户端消费者连接状态 5.队列运行状态 6.整体运行状态

在Linux中将设备驱动的地址映射到用户空间

本期主题&#xff1a; MMU的简单介绍&#xff0c;以及如何实现设备地址映射到用户空间 往期链接&#xff1a; Linux内核链表零长度数组的使用inline的作用嵌入式C基础——ARRAY_SIZE使用以及踩坑分析Linux下如何操作寄存器&#xff08;用户空间、内核空间方法讲解&#xff09;…