周五参加了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. [Pytorch框架] 2.1.1 PyTorch 基础 : 张量

    文章目录 PyTorch 基础 : 张量 张量(Tensor) 基本类型 Numpy转换 设备间转换 初始化 常用方法 PyTorch 基础 : 张量 在第一章中我们已经通过官方的入门教程对PyTor ...

  2. 2022年5月5日模拟赛题解与总结(ABC237)

    总结 初一第一,竞赛班第二 还可以,为了照顾提高班来的四个同学放了四个水题,可惜他们做的不是很理想,希望他们下次可以获得满意的成绩 这次做的其实是 AtCoder ABC237 A.Not Overf ...

  3. NFS共享存储实战

    NFS共享存储实战 目录 NFS共享存储实战 NFS基本概述 为什么要使用共享存储 企业中文件服务器(共享存储) NFS应用场景 集群没有共享存储时 集群有共享存储 NFS实现原理 NFS的函数 本地 ...

  4. 2022-02-13:k8s安装gitlab,yaml如何写?

    2022-02-13:k8s安装gitlab,yaml如何写? 答案2022-02-13: yaml如下: apiVersion: apps/v1 kind: Deployment metadata: ...

  5. 2021-12-02:给定一个字符串str,和一个正数k。 返回长度为k的所有子序列中,字典序最大的子序列。 来自腾讯。

    2021-12-02:给定一个字符串str,和一个正数k. 返回长度为k的所有子序列中,字典序最大的子序列. 来自腾讯. 答案2021-12-02: 单调栈.先进来的元素大,后进来的元素小. 时间复杂 ...

  6. 2021-11-27:给定一个数组arr,长度为N,做出一个结构,可以高效的做如下的查询: 1) int querySum(L,R) : 查询arr[L...R]上的累加和; 2) int query

    2021-11-27:给定一个数组arr,长度为N,做出一个结构,可以高效的做如下的查询: int querySum(L,R) : 查询arr[L-R]上的累加和; int queryAim(L,R) ...

  7. Django4全栈进阶之路16 项目实战(用户管理):user_list.html用户列表画面设计

    首先在template模板文件夹中新建account子文件夹,用于存放用户管理相关模块页面. 下面开始正式的设计: 1.模块代码设计 {% extends 'base.html' %} {% bloc ...

  8. ModuleNotFoundError: No module named 'pyecharts'

    ModuleNotFoundError: No module named 'pyecharts' 解决: pip install pyecharts

  9. lec-5-Policy Gradients

    直接策略微分 Goal: idea:求最大值:直接求导 tip:利用log导数等式进行变换 具体推导: 理解策略梯度 假定开始policy服从高斯分布,采样得到回报,计算梯度,根据reward增加动作 ...

  10. docker 部署 springboot项目和直接运行 jar 文件详细步骤

    目前docker发布springboot有两种方式,一种是制作镜像,另一种是直接运行jar 文件 第一种使用镜像来部署 一.创建项目目录 [root@dex ~]# mkdir /opt/backst ...