周五参加了WAIC后又和一家上海本地的数据库厂商交流了一下午。等我要买高铁票回南京的时候已经买不到票了。好不容易刷到一张到苏州北的高铁票,我就上了车。上车后突然想起还不如就回苏州老家住一晚算了。到家后洗漱完毕已经快10点了,发现刚才我开了半天空调的房间里温度还是很高,仔细一看空调的工作状态似乎不太正常。于是试了试书房的空调,显然是能制冷的,不管怎么样先对付一宿,明早再找维修人员过来看看吧。

第二天,修空调的师傅看了看,说这台有问题的空调运行状态是正常的,空调没毛病,不过今年天热,乡下电网的电压不稳定,你这台变频空调在这种情况下,很可能因为电压不稳而导致压缩机无法正常工作,影响制冷效率。你书房那台老式的空调反而是比较皮实的,所以这几天你还是睡书房吧。老师傅最后说最近这几天遇到多起这种情况了,村里已经有些人家把变频空调折旧换了普通空调了。
这个结果倒是有点出乎我的意外了,技术更好的变频空调反而适应不了相对不稳定的电网,普通空调反而更皮实。在乡下这样的应用场景中,技术相对落后的普通空调居然完胜先进的变频空调。仔细想想,在数据库领域,似乎也是如此。30多年前,当时技术上相对简单或者说简陋的Oracle在与一系列架构水平更高的产品PK中完胜了几乎所有对手,获得了全面的胜利,而一些技术上颇有特色的数据库产品反而都折戟沉沙了,这种胜利在早期大多数是来自于其使用门槛较低。数据库最终还是要拿来用的,而不是为了PK技术的先进性或者某些领域的领先性的。
我和很多搞数据库的朋友聊天的时候,总是听到他们谈数据库的架构如何先进,使用了什么先进的技术,有哪些方面的独创技术。但是很少听到他们谈自己的数据库产品和客户应用场景适配方面的优势,似乎这些问题都是和应用层接近的,没啥技术难度,不太值得他们关注。实际上这样的数据库开发者与用户完全脱节了,用户和数据库厂商对数据库的需求完全是不同的,数据库厂商眼中的先进性与用户所需要的方便省心地使用数据库的需求出现了维度偏差,用户其实不关心,甚至不懂数据库厂商自己觉得很HIGH的先进性。一个仅仅知道写SQL的用户是不会去关注SQL执行引擎里是否使用了向量计算,他们只会关心自己的SQL是不是能够又快又准确的获得结果。在最近这两年的数据库产品的发布会上,我很少看到某个数据库厂商宣称更好的支撑了某些用户应用场景,而都是介绍一些用户都不大明白的高大上的技术。我不太清楚他们请来的最终用户GET到了这些新特性没有,搞了多年数据库的我,也需要边看边翻百度才能完全搞清楚这些对我而言还有点“新”的名词。
前阵子在帮一个用户测试一个数据库国产化改造项目,某数据库不说最后如何,光是把数据从Oracle迁移到目标国产数据库中就经历了十分痛苦的过程。测试时迁移的数据量不过几个TB,而用户的目标数据库有近百TB,对于今后利用厂家提供的迁移完整的数据库,基本上已经把用户劝退了。实际上以这家企业的规模与技术能力,写出一个高水平的数据库迁移工具来并不困难,只是他们并没有把业务重点放到这种体现不出技术水平的地方而已。还有一些新锐数据库公司,推出了架构设计与理念都十分新颖,创意满满的产品出来,各项技术指标都十分亮眼。不过如果某些用户真的选择了这些产品,那么随之而来的,一定不会是很好的使用体验。因为除了所谓的创新满满的核心,其辅助工具简陋得令人发指。这也难怪,因为企业规模本来就不大,根本没有资源往这些不太重要的地方投入宝贵的研发资源。
这些技术含量很低,但是个性化需求十分复杂的“小”工具就如此不重要吗?答案肯定是否定的,今年年初我和一个数据库厂商交流的时候,问他们目前研发主要投入在哪些方面。我以为我听到的回答应该是SQL引擎、CBO优化器、存储引擎、Oracle兼容性等比较核心的地方。没想到他们的回答令我十分意外,他们的研发负责人说,目前为了尽快改进用户现场反馈回来小的需求,他们接近一半的研发人员都投入到了周边小工具和小功能的新需求上去了。今年信创需求十分强烈,为了让用户把数据库用爽了,他们的主要研发力量在不断地优化这些看上去技术含量不高,但是十分重要的小功能。
我想只有数据库产品真正的被用户认认真真的用起来了,我们的数据库研发人员才会感受到他们以前无意中的一些偷懒和简化处理,就变成了用户使用时的痛苦不堪。数据库是要拿来用的,只有真的有大量的用户在认认真真的用你的数据库产品了,你才会知道用户需要的到底是什么样的功能吧。

数据库是要拿来用的,不是用来PK先进性的的更多相关文章

  1. 深入理解Spring Redis的使用 (九)、通过Redis 实现 分布式锁 的 BUG,以及和数据库加锁的性能测试

    在多节点的项目中,经常要涉及到某些方法加锁的控制.而这个时候,简单易用的synchronized已经不能满足多节点的部署结构. 之前在项目中,用的比较多的是数据库的更新锁:for udpate.但是这 ...

  2. solr连接数据库配置

    一般要搜索的信息都是被存储在数据库里面的,但是我们不能直接搜数据库,所以只有借助Solr将要搜索的信息在搜索服务器上进行索引,然后在客户端供客户使用. 一.链接数据库 1. SQL配置 拿SQL Se ...

  3. 转:HIBERNATE一些_方法_@注解_代码示例---写的非常好

    HIBERNATE一些_方法_@注解_代码示例操作数据库7步骤 : 1 创建一个SessionFactory对象 2 创建Session对象 3 开启事务Transaction : hibernate ...

  4. 关于MySQL的在线扩容

    原文地址:http://bucketli.iteye.com/blog/1294032 主要简单总结下,mysql在线扩容和缩容一般涉及到的内容,主要包括三个方面,1.在线也就意味着需要把增量的数据重 ...

  5. Hibernate持久化对象

    持久化类应遵循的规则: 有无参构造器,构造器的修饰符>=默认访问控制符 有标识属性,映射数据库表的主键,建议使用基本类型的包装类 每个成员有setter和getter 非final修饰的类 重写 ...

  6. form表单公用

    <?php /** * 后台总控制器 */ namespace app\common\controller; use think\Controller; use app\common\servi ...

  7. 5 -- Hibernate的基本用法 --5 3 改变持久对象状态的方法

    1. 持久化实体 Serializable save(Object obj) : 将obj对象变为持久化状态,该对象的属性将被保存到数据库. void persist(Object obj) : 将o ...

  8. JSP应用开发 -------- 电纸书(未完待续)

    http://www.educity.cn/jiaocheng/j9415.html JSP程序员常用的技术   第1章 JSP及其相关技术导航 [本章专家知识导学] JSP是一种编程语言,也是一种动 ...

  9. EF Code-First 学习之旅 配置一对一的关系

    1对1.1对0 的关系 例如:Entity1与零个或一个Entity2的实例有关系 public class Student { public Student() { } public int Stu ...

  10. django之多表查询

    一.创建模型 在Models创建如下模型: from django.db import models # Create your models here. # 用了OneToOneField和Fore ...

随机推荐

  1. VS 查看引用的DLL/Nuget包源码时,无法看到注释

    一.问题描述 在下面的截图中,我们发现,源码有添加一段注释. 然后通过Nuget包引用,在VS中用Reshaper反编译时,发现没有注释: 原来,DLL是默认不带注释的.即你生成一个DLL,给另一个项 ...

  2. Redis之消息队列实现

    文章目录 秒杀场景 采用消息队列实现 List实现消息队列 PubSub(发布订阅)实现消息队列 基于Stream实现消息队列 消费者组 实践 总结 秒杀问题是非常重要且比较难实现的,如果不进行架构的 ...

  3. nuxt下运行项目时内存溢出(out of memory)的一种情况

    话不多说直接上代码: 如图,点红点的三行引入了一个组件,内容是同意注册协议的弹窗.但是在run dev的时候提示说内存溢出了(out of memory)...经过多方排查,定位到这个组件,警察叔叔就 ...

  4. Linux 给用户赋予操作权限

    赋予local目录读写权限给keesail,别的用户对这个目录没有任何权限. chown -R keesail:keesail ./local chmod 777 文件夹名称,可以把文件夹设置成所有用 ...

  5. 2022-01-04:一个无序数组长度为n,所有数字都不一样,并且值都在[0...n-1]范围上。 返回让这个无序数组变成有序数组的最小交换次数。 来自小红书。

    2022-01-04:一个无序数组长度为n,所有数字都不一样,并且值都在[0-n-1]范围上. 返回让这个无序数组变成有序数组的最小交换次数. 来自小红书. 答案2022-01-04: 下标循环怼. ...

  6. 2023-05-18:有 n 名工人。 给定两个数组 quality 和 wage , 其中,quality[i] 表示第 i 名工人的工作质量,其最低期望工资为 wage[i] 。 现在我们想雇佣

    2023-05-18:有 n 名工人. 给定两个数组 quality 和 wage , 其中,quality[i] 表示第 i 名工人的工作质量,其最低期望工资为 wage[i] . 现在我们想雇佣 ...

  7. 未来之JavaScript做嵌入式

    只听说过汇编,c做嵌入式,从不曾想JAVAScript也牛到涉入硬件领域了,原本对他的思维定格就是一个浏览器脚本.看来真应了那句话'只有想不到,没有做不到' 话不多说看看这些大佬的帖子在嵌入式设备中使 ...

  8. MySQL-DQL

    准备测试表,先跟着执行下面的SQL #1.登录MySQL后 #2.创建test_database数据库,不存在则创建 create database if not exists test_databa ...

  9. 【VS Code+Qt6】拖放操作

    由于老周的示例代码都是用 VS Code + CMake + Qt 写的,为了不误导人,在标题中还是加上"VS Code"好一些. 上次咱们研究了剪贴板的基本用法,也了解了叫 QM ...

  10. java中单例模式 如何使用

    引用: 原文链接:https://blog.csdn.net/qq_41458550/article/details/109243456