derby的三大缺陷

derby数据库的嵌入式特性让人很流口水。但是,我刚打算将其用进我的项目中,却发现它没有好的分页查询方式,每次都返回所有符合条件的记录。oracle有rownum,mysql有limit,sqlserver好歹也有个top,汗啊汗,看来不爽的人还不止我一人。

转自:http://whx.name/?p=51

derby的好处就不用我多说了吧,正因为如此,某个项目使用了derby,并从中发现了3个很让人无奈的缺陷。

最傻的缺陷:没有boolean数据类型

这个让人很无语,derby是我发现的第一个不支持boolean的数据库,在这个年代,很难想象还有数据库需要让人建立其他类型来顶替boolean,对应JDBC的boolean,derby使用的是SMALLINT,虽然这不是数据库致命的缺点,但这让数据库设计者产生很不爽的感觉。前些天Sun Tech Days上,SUN的Miss Lu告诉我,事实上derby的小组老早就已经完成了boolean类型,只是IBM到现在仍不让boolean出现在derby上,其中原因我只能说~!@#$%^&*…

最痛苦的缺陷:没有LIMIT和OFFSET子句(或相同功能的子句)

同样让人很无奈,derby测试小组声称derby的性能已经达到能容纳700G的数据,并向TB级别进发,但是这么大的数据量却没有办法让人实现数据库这一层的查询限制,每次查询的结果必定返回你的查询语句的所有结果。而且结果集也只能统统接收这些数据,然后由我们的代码在业务层实现对数据的分页。
不过值得庆幸的是,Miss Lu说他们已经在开发该功能,预计下一版本会实现,还有两个月时间,到时候大家准备数据大搬迁吧,for performance!

最搞不懂的缺陷:外键关联 ON UPDATE 只支持 NO ACTION 和 REDIRECT

三个之中这个缺陷最能让人接受,幸好 ON DELETE 还支持CASCADE,不然真的要 jump 了。但这始终还是对derby的功能上造成了影响,触发器,存储结构和业务层逻辑都能搞定,所以问题不是很大。
最后,希望其他derby用户有什么看法或见解也能告诉我,大家多多交流下。

---------------------------------------

感谢网友 的通知:

Derby db 在10.5版本后有重要更新
含分页的排序语句如:

select * FROM (select ROW_NUMBER() OVER() AS R, customer_id, zip from CUSTOMER) AS T where R>0 and R<5 order by customer_id desc;

分页查询是比较有用的特性。

derby的三大缺陷的更多相关文章

  1. GCD实现多个定时器,完美避过NSTimer的三大缺陷(RunLoop、Thread、Leaks)

    定时器在我们每个人做的iOS项目里面必不可少,如登录页面倒计时.支付期限倒计时等等,一般来说使用NSTimer创建定时器: + (NSTimer *)timerWithTimeInterval:(NS ...

  2. hbase0.96与hive0.12整合高可靠文档及问题总结

    本文链接:http://www.aboutyun.com/thread-7881-1-1.html 问题导读:1.hive安装是否需要安装mysql?2.hive是否分为客户端和服务器端?3.hive ...

  3. Apache Hive 基本理论与安装指南

    一.Hive的基本理论 Hive是在HDFS之上的架构,Hive中含有其自身的组件,解释器.编译器.执行器.优化器.解释器用于对脚本进行解释,编译器是对高级语言代码进行编译,执行器是对java代码的执 ...

  4. RedHat Enterprise Linux 6.4使用Centos 6的yum源问题

    RedHat Enterprise Linux 6.4使用Centos 6的yum源问题 作为一名新手,学习Linux已经一个月了,其间遇到了不少问题,而今天笔者遇到的问题是 #yum install ...

  5. 【转帖】H5 手机 App 开发入门:概念篇

    H5 手机 App 开发入门:概念篇 http://www.ruanyifeng.com/blog/2019/12/hybrid-app-concepts.html 作者: 阮一峰 日期: 2019年 ...

  6. ThinkPHP3.2.3中三大自动中的缺陷问题

    我们在使用Thinkphp3.2.3框架时在对数据表进行模型化后就可以使用自动完成功能. 自动完成可以帮助我们更简便的完成对表单内容对数据表(集合)的填充,自动完成是基于: 当实例化数据库user后, ...

  7. SSH三大框架笔面试总结

    Java工程师(程序员)面题 Struts,Spring,Hibernate三大框架 1.Hibernate工作原理及为什么要用? 原理: 1.读取并解析配置文件 2.读取并解析映射信息,创建Sess ...

  8. java提高篇(二)-----理解java的三大特性之继承

    在<Think in java>中有这样一句话:复用代码是Java众多引人注目的功能之一.但要想成为极具革命性的语言,仅仅能够复制代码并对加以改变是不够的,它还必须能够做更多的事情.在这句 ...

  9. Java 抽象类与oop三大特征

    面向对象主要有三大特性:继承和多态.封装. 一.抽象类 在了解抽象类之前,先来了解一下抽象方法.抽象方法是一种特殊的方法:它只有声明,而没有具体的实现.抽象方法的声明格式为: abstract voi ...

随机推荐

  1. 使用JQuery能做什么(zz)

    jQuery库为Web脚本编程提供了通用(跨浏览器)的抽象层,使得它几乎适用于任何脚本编程的情形.jQuery通常能为我们提供以下功能: 1.方便快捷获取DOM元素 如果使用纯JavaScript的方 ...

  2. ios —— UIViewAdditions 布局坐标类库

    方便大家计算视图的高度,宽度,上下左右坐标,简化代码操作,更加直观 下载地址:http://download.csdn.net/detail/humingtao2013/7511657

  3. ANSI,UTF8等等这些格式

    之前一直在纠结这些格式到底有什么区别,有时候因为格式的问题会让人抓狂. 下面通过实战来分析下: 下面在windows上建立一个txt文档.txt的优势是没有文件头,这样比较好分析. ANSI格式: 可 ...

  4. 通过词法分析实现的指出C程序中包含的头文件

    在阅读有些程序的源码时,很希望能够马上弄清楚源码中到底包含了哪些头文件,以确定是否需要为了特殊的函数而手动加入#include.借助flex的词法分析实现了这一功能,本质上就是对正则表达式的匹配.注意 ...

  5. Android--手持PDA读取SD卡中文件

    近两年市场上很多Wince设备都开始转向Android操作系统,最近被迫使用Android开发PDA手持设备.主要功能是扫描登录,拣货,包装,发货几个功能.其中涉及到商品档的时候大概有700左右商品要 ...

  6. SQL Server 2008 过期

    最近SQL Serve 2008 过期,不能正常运行,通过如下方式解决此问题: (1) 修改注册表 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQ ...

  7. node判断文件目录是否存在

    'use strict'; //这是一个简单的应用 var path = require('path'); var fs = require("fs") ; global.l = ...

  8. android之对话、单复框的使用

    对话框 通过builder来构建一个单选框 package xidian.dy.com.chujia; import android.content.DialogInterface; import a ...

  9. php发送get、post请求的6种方法简明总结

    方法1: 用file_get_contents 以get方式获取内容: ? 1 2 3 4 5 <?php $url='http://www.jb51.net/'; $html = file_g ...

  10. 每天一个linux命令(37):free 命令

    free命令可以显示Linux系统中空闲的.已用的物理内存及swap内存,及被内核使用的buffer.在Linux系统监控的工具中,free命令是最经常使用的命令之一. 1.命令格式: free [参 ...