最近的“好消息” 是一个接一个,有点让人体会到,人间不值得,平安是福才是千古名训。

数据库里面传统的老四样,POMS,具体这四样在设计上有什么根本上的不同,想来分析分析,但如果写的太正式估计也没人爱看,数据库本身也是软件,对比一下完成同种功能的软件了解其中的不同,有利于针对项目针对应用来选择适合的东西。(基于个人的能力,以及认知,下面的文字必然会存在很多漏洞,所以放在周五,大家就当周末放松,另外周围的牛人都潜伏着,还希望多多帮助,下面如果有根本性的错误,还请指出,不吝赐教,在此表示感谢)

Round One

四种数据库,存储格式 PG ORACLE ,典型的堆表(Heap table)存储数据的方式,SQL SERVER  MYSQL  典型的 Cluster index table ( 如果你读过SQL SERVER 2000 到 SQL SERVER 2005 的方面的书籍,你就会知道早期的SQL SERVER 十分强调要建立聚簇索引,并且有序的是最好的,而新版本的SQL SERVER 目前很少有table scan 如果你有cluster index 则一般会扫描主键来替代TABLE SCAN)。

ROUND ONE  分为两个阵营, PG ORACLE 为代表的堆表存储方式,以及 SQL SERVER  MYSQL 为阵营的 有序主键的表的存储方式。

PK :堆表显然在大数据量的情况下,占有优势,插入数据的速度会很快,而在顺序读,Range  扫描,有序主键索引表占有优势。

SQL SERVER , MYSQL :我们选择建立有序主键表,对我们的查询尤其是范围查询以及和主键有关的排序查询时非常有利的,哪像你们堆表的存储方式,那都不挨着哪里,查询与主键有关的顺序型的排序查询,你们和我们怎么比。并且我们在数据插入的时候,比你们都少一个I/O操作 呵呵

PG, ORACLE 反击:你们才有毛病呢,要是开发给你们一个 UUID的主键,每行和每行都那不挨着哪,你们要去哪里哭去,HEAP 表天生对分布式存储友好的支持,我们支持超大的数据量,哪像你们一个表就是一个索引,数据量一大,你们无序插入慢不说,数据主键变化的时候还要因为B+ 树原理叶子节点要变动存储位置,你说变态不变态。

反水:SQL SERVER 弱弱的小声说,我也能存HEAP 表,MYSQL 大骂叛徒,存HEAP表你replication 怎么做,真要脸。

Round Two   数据能回滚 undo   功能

有些数据库是没有 UNDO 的设计,例如 PG  SQL SERVER ,而这次ORACLE 和MYSQL 站在一个阵营,至少都有  UNDO  这个名字

PK :在MVCC 多版本控制中,对事务可见性,隔离性,以及事务的回滚等等有的数据库是通过UNDO 表空间来完成的,而有些数据库通过其他的设计来完成的。

ORACLE  MYSQL 攻击:你说说现在还有数据库根本就么有UNDO 表空间,多奇葩,你说要是事务回滚你可怎么办,扳着手指头往回算呀,可笑。

SQL SERVER  PostgreSQL 反击:奇葩年年有,你俩好意思说 ORA-01555,不知道是谁的报错,我们可没有,还有那个主线程还要不断清理undo 表空间的奇葩设计也不知道是哪个脑残设计出来的。SQL SERVER 我可是全部通过LDF 文件来进行事务的回滚的。PostgreSQL 我主要是通过我本身基础设计的好,我每行都有详细的事务及事务执行的详情,并且我还有clog 来进行事务的commit,哪里还需要UNDO 那么奇葩的东西。

反水:PG 反水 SQL SERVER ,你还是别说你那个LDF了,尤其你提交事务中和我们三都不一样的那个默认设置,事务回滚都那么奇葩,你少说点吧, SQL SERVER 反击,就你好,vacuum 就给你一个人准备的,好意思笑我。

画外音:MYSQL 其实我每行也有和事务有关的记录。

Round Three :  存储过程在传统的应用中都是存在的,那存储过程和函数等等在这几个数据库有什么不同。

PK:存储过程方面大部分是在传统的应用程序中应用,而互联网等应用中很少有(其实就是没有)存储过程的存在

SQL SERVER  ORACLE :  在存储过程和函数,我们是很有发言权的,各种功能,并且开发可以在数据库上编写大量的存储过程,对于执行的性能,以及程序的灵活性,存储过程,都有很大的用武之地,PLSQL  TSQL 等等都有很长的使用的历史,哪像有的数据库 要不就是 什么铁律,军规上明确写着,不能使用存储过程,不能JOIN 超过三次,这么弱鸡,还有那个什么一直拿函数当存储过程的二等残废,最近刚治好病吧

PG MYSQL 反击:就你们好,也不看看现在什么天,互联网的天下,基于分布式的中间件的方式使用,那有什么存储过程,我们的开发都牛逼着呢,我们的逻辑都在程序里面,都那年那月了,存储过程真有脸说。还有说我之前用存储过程和函数都一个命令,但我功能样样都有,碍得着你们,现在新版本也分开了别揪着过去,反过头看看你们一个个存储过程写的,根本没有并发性,调试不好调,找问题不好找,搞得开发就一个个写存储过程的,切,老土

反水:PG 反水,你MYSQL 本身支持的查询方式例如窗口函数,复杂的查询就差劲,少说两句,不知道公司因为你请了不少贵的开发,来应付你,少说点没人不知道那点毛病,另外还有你的那个因为临时表造成的函数问题,到 8 都没解决,没人把你当哑巴。MYSQL 反击 ,你好,你好,写个存储过程想返回值都不行,新版本还建议用 create function ,你说你的create procedure 到底什么鬼,你也闭嘴吧。

ROUND N (混战).......   ---你加个字段还不能加到随意的位置,还天天牛逼的厉害,---你大表加字段,改数据库名,要死了一样,大家都知道,谁说的,8 VERSION 我这毛病都改了,反倒是你 19C 字段还是不能加到任意位置,还有你到12 version 了和那个 19C 一样,字段不能加到任意位置,还通过什么插件骗人,真不要脸。还有在WINDOWS 上装的那个,大家都可以在LINUX 上装,你的就业面真窄,---谁说的,我已经可以在2017 以后就装到 LINUX ,我也支持了LINUX ,---哎真好意思说,你问问大家,谁还关心你装不装到LINUX ,都快把你忘了吧,,---滚,我2019 都支持大数据功能了,---shut up ,我们家堂兄 greenplum 早就是大数据里面的座上宾,谁用你做大数据, 还有你,现在都是分布式了,RAC 不知道要用到那年,一个歌唱家一辈子就唱一首歌,现在大家都 烦你,都倒你, ---是是是,大家都dig我, 说自己分布式的那个 MGR 有几个地方用,不还是MHA 借着别人活的高可用,连个物理复制都没有,---谁说没有的 8 我已经有了物理复制,哎看看他不做声,新版本越做越差,镜像都要没有了,就一个 ALWALYS ON 不知道要吃到哪辈子,还不稳定,---谁说我不稳定了,我还有 replicaiton , ---你就别提你那个 replicaiton , 还双向复制,笑死个人,来来来表里面加个trigger 试试,我这是 物理复制,逻辑复制,逻辑复制输出各种格式任君挑选,我才最好,---是呀,到现在还有人在群里问,到底哪个高可用靠谱的也是你吧  哈哈哈哈, ---呸,说没有自我就是你,越来越和那个 衰鬼 一样一样的不就是你,也不是亲生的,舔着脸住在别人家里,在家一个样(企业版),出门就跟裸奔一样,挡上点露点了(社区版),真是脸大,---我可是有extension 我可以模糊查询走索引,你们谁行,---行行行 就你牛逼,安装麻烦死了,没个水平可装不了你,---你好,之前你安装各种毛病,比我好得到那里去一个安装文件4个多G ,---说的也是那么大的安装文件也没见有什么特异功能,25000百万行的代码有一半都是没用的把,哈哈哈, --你好,原来几十MB就可以安装,现在到我家,你自己看看你自己,也快要突破 1G的安装文件了,还不是学我, .................  ---我不要钱, ---我也不要吧,---假的吧,---你贵死了,---你不好用.....................

(以上文字使用---作为不同角色切换)

愿能博您一笑,瑾祝您有一个愉快的周末 !

数据库“拣屎” (三)之 四大金刚 我们不一样相关推荐

  1. 三十二、数据库设计的三范式【完】

    数据库设计的三范式 第一范式 数据库表中不能出现重复记录,每个字段是原子性的不能再分 不符合第一范式的示例 学生编号 学生姓名 联系方式 1001 张三 zs@gmail.com,1359999999 ...

  2. Oracle数据库备份与恢复的三种方法

    Oracle数据库备份与恢复的三种方法 Oracle数据库有三种标准的备份方法,它们分别是导出/导入(EXP/IMP).热备份和冷备份.导出备件是一种逻辑备份,冷备份和热备份是物理备份. 一. 导出/ ...

  3. Qt数据库操作(三) -- 使用SQL模型类

    文章目录 Qt数据库操作(三) -- 使用SQL模型类 1.SQL查询模型 2.SQL表格模型 3.关系表格模型 Qt数据库操作(三) – 使用SQL模型类 Qt 提供了3个高级的类来访问数据库,分别 ...

  4. android sqlite使用之模糊查询数据库数据的三种方式

    android sqlite使用之模糊查询数据库数据的三种方式 android应用开发中常常需要记录一下数据,而在查询的时候如何实现模糊查询呢?很少有文章来做这样的介绍,所以这里简单的介绍下三种sql ...

  5. 【数据库】第三章 事务、索引和SQL优化

    [数据库]第三章 事务.索引和SQL优化 文章目录 [数据库]第三章 事务.索引和SQL优化 一.事务 1.原子性 2.持久性 3.隔离性 4.一致性 二.索引 1.介绍 2.分类 3.底层实现 4. ...

  6. python操作数据库的几种方法_python对mysql数据库操作的三种不同方式

    原标题:python对mysql数据库操作的三种不同方式 |转载自:博客园 |原文链接:http://www.cnblogs.com/mryrs/p/6951008.html 先要说一下,在这个暑期如 ...

  7. 【数据库】(三)-- mysql 数据库操作应用

    [数据库](三)-- mysql 数据库操作应用 操作说明 使用 navicat 针对 mysql 进行 sql 的使用,mysql 运行在本地的 docker 环境的应用容器中. 语法和关键字什么的 ...

  8. MySQL数据库程序设计(三)

    MySQL数据库程序设计(三) 前言 数据查询 SELECT语句 单表查询 选择字段 选择指定记录 分组聚合查询 查询结果排序 限制结果数量 链接查询 交叉连接 内连接 外连接 子查询 IN关键字的子 ...

  9. 数据库中的三种完整性

    数据库中的三种完整性 域完整性 域完整性是对数据表中字段属性的约束,通常指数据的有效性,它包括字段的值域.字段的类型及字段的有效规则等约束,它是由确定关系结构时所定义的字段的属性决定的.限制数据类型, ...

最新文章

  1. 第四次作业 结对编程-黄金点游戏
  2. 监测磁盘文件是否被修改程序
  3. videojs如何获取请求消息_中通消息平台 Kafka 顺序消费线程模型的实践与优化
  4. matlab的max与min函数
  5. mysql去掉小数点多余0_mysql数据库个性化需求:版本号排序
  6. wamp2 php配置,wamp安装后自定义配置的方法
  7. licode学习之erizo篇--Pipeline_service
  8. java性能测试jmh
  9. [笔记] 最大权闭合子图最大流最小割相关笔记
  10. 24.TCP/IP 详解卷1 --- TCP 的未来和性能
  11. 移植oprofile到海思
  12. HOWTO For iSCSI-SCST Gentoo HOWTO For iSCSI-SCST
  13. 小程序商城源码,很不错,推荐给开发者
  14. Ueditor编辑器修改字体和字号?
  15. Mysql计算同比环比(超详细)
  16. 使用spark计算IRR(内部收益率)
  17. 【转载】通过搜狗站长平台查看网站的搜狗流量及搜索关键字
  18. owncloud server replied : locked 故障处理
  19. Win10关闭登录面板毛玻璃效果
  20. 《云边协同关键技术态势研究报告》丨附下载

热门文章

  1. 基于八叉树的空间划分及搜索操作
  2. 光の行方 魔女猎人op
  3. Linux 4G模块通信
  4. 国考省考行测:数字推理题2
  5. 上网计算机管理原则,管理总则
  6. 【动态 | 哈希未来获得节点资本战略投资】
  7. Linux下的常用工具
  8. Win10怎么清理系统内的垃圾文件
  9. ubuntu jdk环境配置
  10. Python输入多行数据