derby的三大缺陷
derby的三大缺陷
derby数据库的嵌入式特性让人很流口水。但是,我刚打算将其用进我的项目中,却发现它没有好的分页查询方式,每次都返回所有符合条件的记录。oracle有rownum,mysql有limit,sqlserver好歹也有个top,汗啊汗,看来不爽的人还不止我一人。
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的三大缺陷的更多相关文章
- GCD实现多个定时器,完美避过NSTimer的三大缺陷(RunLoop、Thread、Leaks)
定时器在我们每个人做的iOS项目里面必不可少,如登录页面倒计时.支付期限倒计时等等,一般来说使用NSTimer创建定时器: + (NSTimer *)timerWithTimeInterval:(NS ...
- hbase0.96与hive0.12整合高可靠文档及问题总结
本文链接:http://www.aboutyun.com/thread-7881-1-1.html 问题导读:1.hive安装是否需要安装mysql?2.hive是否分为客户端和服务器端?3.hive ...
- Apache Hive 基本理论与安装指南
一.Hive的基本理论 Hive是在HDFS之上的架构,Hive中含有其自身的组件,解释器.编译器.执行器.优化器.解释器用于对脚本进行解释,编译器是对高级语言代码进行编译,执行器是对java代码的执 ...
- RedHat Enterprise Linux 6.4使用Centos 6的yum源问题
RedHat Enterprise Linux 6.4使用Centos 6的yum源问题 作为一名新手,学习Linux已经一个月了,其间遇到了不少问题,而今天笔者遇到的问题是 #yum install ...
- 【转帖】H5 手机 App 开发入门:概念篇
H5 手机 App 开发入门:概念篇 http://www.ruanyifeng.com/blog/2019/12/hybrid-app-concepts.html 作者: 阮一峰 日期: 2019年 ...
- ThinkPHP3.2.3中三大自动中的缺陷问题
我们在使用Thinkphp3.2.3框架时在对数据表进行模型化后就可以使用自动完成功能. 自动完成可以帮助我们更简便的完成对表单内容对数据表(集合)的填充,自动完成是基于: 当实例化数据库user后, ...
- SSH三大框架笔面试总结
Java工程师(程序员)面题 Struts,Spring,Hibernate三大框架 1.Hibernate工作原理及为什么要用? 原理: 1.读取并解析配置文件 2.读取并解析映射信息,创建Sess ...
- java提高篇(二)-----理解java的三大特性之继承
在<Think in java>中有这样一句话:复用代码是Java众多引人注目的功能之一.但要想成为极具革命性的语言,仅仅能够复制代码并对加以改变是不够的,它还必须能够做更多的事情.在这句 ...
- Java 抽象类与oop三大特征
面向对象主要有三大特性:继承和多态.封装. 一.抽象类 在了解抽象类之前,先来了解一下抽象方法.抽象方法是一种特殊的方法:它只有声明,而没有具体的实现.抽象方法的声明格式为: abstract voi ...
随机推荐
- Nutch搜索引擎(第2期)_ Solr简介及安装
1.Solr简介 Solr是一个高性能,采用Java5开发,基于Lucene的全文搜索服务器.同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置.可扩展并对查询性能进行了优化 ...
- [MetaHook] Load TGA texture to OpenGL
This function load a *.tga texture file and convert to OpenGL pixel format, uncompress only. #pragma ...
- 轻松理解JS基本包装对象
今天来讨论一下JS中的基本包装对象(也叫基本包装类型),之前刚学到这里的时候,自己也是一头雾水,不明白这个基本包装对象到底是个什么鬼,后来找了很多资料,终于看清了它的真面目.首先呢,我们现在复习一下J ...
- 要期末了搞不了OI了额……
TAT~~~~~~期中完挂,求RP求期末逆袭
- [设计模式] Javascript 之 外观模式
外观模式说明 说明:外观模式是用于由于子系统或程序组成较复杂而提供的一个高层界面接口,使用客户端更容易访问底层的程序或系统接口; 外观模式是我们经常使用遇到的模式,我们经常涉及到的功能,可能需要涉及到 ...
- 解决 SQL Server Profiler 跟踪[不断]出现检索数据
问题简单回顾: 当我们使用SQL Server Profiler根据数据时,有时刚打开什么也没干呢,就显示很多数据了,当我们用橡皮擦清除,没过两秒就又有了,如图: 是不是很恼火!~不怕,解决方案如下: ...
- js对象中的回调函数
假设一个页面new多个同类型的对象,且该对象内部含异步请求的回调,很有可能回调函数中的this指向最后一次new的对象. 解决该问题的办法是,异步请求使用$.ajax并制定其context为this, ...
- Tomcat 在win7/win8 系统下tomcat-users.xml.new(拒绝访问)解决方法
tomcat启动报错No UserDatabase component found under key UserDatabase 也可以这样处理 Tomcat 在win7/win8 系统下tomcat ...
- TRUNC函数,ORA-01898 精度说明符过多
TRUNC(SYSDATE)即可默认当前日期(年月日),TRUNC(SYSDATE,'yyyy-mm-dd'),精度说明符过多
- SQLServer 开启远程访问,也可逆向思维进行关闭
为了可以通过TCP/IP协议远程访问SQLServer数据库,需要做以下几点: 在SQLServer所运行的服务器上,我们必须找到SQLServer所侦听的端口然后添加到WIndows防火墙的[允许入 ...