数据库是要拿来用的,不是用来PK先进性的
周五参加了WAIC后又和一家上海本地的数据库厂商交流了一下午。等我要买高铁票回南京的时候已经买不到票了。好不容易刷到一张到苏州北的高铁票,我就上了车。上车后突然想起还不如就回苏州老家住一晚算了。到家后洗漱完毕已经快10点了,发现刚才我开了半天空调的房间里温度还是很高,仔细一看空调的工作状态似乎不太正常。于是试了试书房的空调,显然是能制冷的,不管怎么样先对付一宿,明早再找维修人员过来看看吧。
第二天,修空调的师傅看了看,说这台有问题的空调运行状态是正常的,空调没毛病,不过今年天热,乡下电网的电压不稳定,你这台变频空调在这种情况下,很可能因为电压不稳而导致压缩机无法正常工作,影响制冷效率。你书房那台老式的空调反而是比较皮实的,所以这几天你还是睡书房吧。老师傅最后说最近这几天遇到多起这种情况了,村里已经有些人家把变频空调折旧换了普通空调了。
这个结果倒是有点出乎我的意外了,技术更好的变频空调反而适应不了相对不稳定的电网,普通空调反而更皮实。在乡下这样的应用场景中,技术相对落后的普通空调居然完胜先进的变频空调。仔细想想,在数据库领域,似乎也是如此。30多年前,当时技术上相对简单或者说简陋的Oracle在与一系列架构水平更高的产品PK中完胜了几乎所有对手,获得了全面的胜利,而一些技术上颇有特色的数据库产品反而都折戟沉沙了,这种胜利在早期大多数是来自于其使用门槛较低。数据库最终还是要拿来用的,而不是为了PK技术的先进性或者某些领域的领先性的。
我和很多搞数据库的朋友聊天的时候,总是听到他们谈数据库的架构如何先进,使用了什么先进的技术,有哪些方面的独创技术。但是很少听到他们谈自己的数据库产品和客户应用场景适配方面的优势,似乎这些问题都是和应用层接近的,没啥技术难度,不太值得他们关注。实际上这样的数据库开发者与用户完全脱节了,用户和数据库厂商对数据库的需求完全是不同的,数据库厂商眼中的先进性与用户所需要的方便省心地使用数据库的需求出现了维度偏差,用户其实不关心,甚至不懂数据库厂商自己觉得很HIGH的先进性。一个仅仅知道写SQL的用户是不会去关注SQL执行引擎里是否使用了向量计算,他们只会关心自己的SQL是不是能够又快又准确的获得结果。在最近这两年的数据库产品的发布会上,我很少看到某个数据库厂商宣称更好的支撑了某些用户应用场景,而都是介绍一些用户都不大明白的高大上的技术。我不太清楚他们请来的最终用户GET到了这些新特性没有,搞了多年数据库的我,也需要边看边翻百度才能完全搞清楚这些对我而言还有点“新”的名词。
前阵子在帮一个用户测试一个数据库国产化改造项目,某数据库不说最后如何,光是把数据从Oracle迁移到目标国产数据库中就经历了十分痛苦的过程。测试时迁移的数据量不过几个TB,而用户的目标数据库有近百TB,对于今后利用厂家提供的迁移完整的数据库,基本上已经把用户劝退了。实际上以这家企业的规模与技术能力,写出一个高水平的数据库迁移工具来并不困难,只是他们并没有把业务重点放到这种体现不出技术水平的地方而已。还有一些新锐数据库公司,推出了架构设计与理念都十分新颖,创意满满的产品出来,各项技术指标都十分亮眼。不过如果某些用户真的选择了这些产品,那么随之而来的,一定不会是很好的使用体验。因为除了所谓的创新满满的核心,其辅助工具简陋得令人发指。这也难怪,因为企业规模本来就不大,根本没有资源往这些不太重要的地方投入宝贵的研发资源。
这些技术含量很低,但是个性化需求十分复杂的“小”工具就如此不重要吗?答案肯定是否定的,今年年初我和一个数据库厂商交流的时候,问他们目前研发主要投入在哪些方面。我以为我听到的回答应该是SQL引擎、CBO优化器、存储引擎、Oracle兼容性等比较核心的地方。没想到他们的回答令我十分意外,他们的研发负责人说,目前为了尽快改进用户现场反馈回来小的需求,他们接近一半的研发人员都投入到了周边小工具和小功能的新需求上去了。今年信创需求十分强烈,为了让用户把数据库用爽了,他们的主要研发力量在不断地优化这些看上去技术含量不高,但是十分重要的小功能。
我想只有数据库产品真正的被用户认认真真的用起来了,我们的数据库研发人员才会感受到他们以前无意中的一些偷懒和简化处理,就变成了用户使用时的痛苦不堪。数据库是要拿来用的,只有真的有大量的用户在认认真真的用你的数据库产品了,你才会知道用户需要的到底是什么样的功能吧。
数据库是要拿来用的,不是用来PK先进性的的更多相关文章
- 深入理解Spring Redis的使用 (九)、通过Redis 实现 分布式锁 的 BUG,以及和数据库加锁的性能测试
在多节点的项目中,经常要涉及到某些方法加锁的控制.而这个时候,简单易用的synchronized已经不能满足多节点的部署结构. 之前在项目中,用的比较多的是数据库的更新锁:for udpate.但是这 ...
- solr连接数据库配置
一般要搜索的信息都是被存储在数据库里面的,但是我们不能直接搜数据库,所以只有借助Solr将要搜索的信息在搜索服务器上进行索引,然后在客户端供客户使用. 一.链接数据库 1. SQL配置 拿SQL Se ...
- 转:HIBERNATE一些_方法_@注解_代码示例---写的非常好
HIBERNATE一些_方法_@注解_代码示例操作数据库7步骤 : 1 创建一个SessionFactory对象 2 创建Session对象 3 开启事务Transaction : hibernate ...
- 关于MySQL的在线扩容
原文地址:http://bucketli.iteye.com/blog/1294032 主要简单总结下,mysql在线扩容和缩容一般涉及到的内容,主要包括三个方面,1.在线也就意味着需要把增量的数据重 ...
- Hibernate持久化对象
持久化类应遵循的规则: 有无参构造器,构造器的修饰符>=默认访问控制符 有标识属性,映射数据库表的主键,建议使用基本类型的包装类 每个成员有setter和getter 非final修饰的类 重写 ...
- form表单公用
<?php /** * 后台总控制器 */ namespace app\common\controller; use think\Controller; use app\common\servi ...
- 5 -- Hibernate的基本用法 --5 3 改变持久对象状态的方法
1. 持久化实体 Serializable save(Object obj) : 将obj对象变为持久化状态,该对象的属性将被保存到数据库. void persist(Object obj) : 将o ...
- JSP应用开发 -------- 电纸书(未完待续)
http://www.educity.cn/jiaocheng/j9415.html JSP程序员常用的技术 第1章 JSP及其相关技术导航 [本章专家知识导学] JSP是一种编程语言,也是一种动 ...
- EF Code-First 学习之旅 配置一对一的关系
1对1.1对0 的关系 例如:Entity1与零个或一个Entity2的实例有关系 public class Student { public Student() { } public int Stu ...
- django之多表查询
一.创建模型 在Models创建如下模型: from django.db import models # Create your models here. # 用了OneToOneField和Fore ...
随机推荐
- [Python图像处理] 一.图像处理基础知识及OpenCV入门函数
该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门.OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子.图像增强技术.图像分割等,后期结合深度学习研究图像识别 ...
- 群论中的 Lagrange 定理
今天跟 hym 打球时讲到了这个东西,突然发现证明拉格朗日定理的思想有许多跟轨道-稳定集定理很像,所以这里又记录一下. 为了证明 Lagrange 定理,我们需要了解一些关于子群和陪集的性质. 首先给 ...
- UDP内核发包流程
背景 工作中遇到客户反馈,上层应用UDP固定间隔100ms发包,但本地tcpdump抓包存在波动,有的数据包之间间隔107ms甚至更多,以此重新梳理了下udp的发送流程. udp发包流程 udp_se ...
- 2022-11-28:给定两个数组A和B,比如 A = { 0, 1, 1 } B = { 1, 2, 3 } A[0] = 0, B[0] = 1,表示0到1有双向道路 A[1] = 1, B[1]
2022-11-28:给定两个数组A和B,比如 A = { 0, 1, 1 } B = { 1, 2, 3 } A[0] = 0, B[0] = 1,表示0到1有双向道路 A[1] = 1, B[1] ...
- 2020-12-10:i++是原子操作吗?为什么?
福哥答案2020-12-10: 不是原子操作.i++分为三个阶段:1.内存到寄存器.2.寄存器自增.3.写回内存.这三个阶段中间都可以被中断分离开.***[评论](https://user.qzone ...
- 2022-05-27:现在有N条鱼,每条鱼的体积为Ai,从左到右排列,数组arr给出。 每一轮,左边的大鱼一定会吃掉右边比自己小的第一条鱼, 并且每条鱼吃比自己小的鱼的事件是同时发生的。 返回多少轮之
2022-05-27:现在有N条鱼,每条鱼的体积为Ai,从左到右排列,数组arr给出. 每一轮,左边的大鱼一定会吃掉右边比自己小的第一条鱼, 并且每条鱼吃比自己小的鱼的事件是同时发生的. 返回多少轮之 ...
- 2021-08-14:给定两个字符串S和T,返回S的所有子序列中有多少个子序列的字面值等于T。
2021-08-14:给定两个字符串S和T,返回S的所有子序列中有多少个子序列的字面值等于T. 福大大 答案2021-08-14: 样本对应模型. 时间复杂度:O(N^2). 空间复杂度:O(N^2) ...
- 2021-09-18:给定一个只包括 ‘(‘,‘)‘,‘{‘,‘}‘,‘[‘,‘]‘ 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合
2021-09-18:给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效.有效字符串需满足:左括号必须用相同类型的右括号闭合.左括号必须以正确的顺序闭合 ...
- [vuex] unknown action type:***
vuex 分模块后使用mapActions调用action老是提示 [vuex] unknown action type:*** 异常 目录 index.js是这样的 import Vue from ...
- react中useRef的应用
何为useRef useRef是随着react函数式组件发展而来的,是react众多官方hook中的一个,调用useRef可以返回一个伴随这组件整个声明周期不发生改变的对象,这个对象常见的用途有两个: ...