derby的三大缺陷


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;

分頁查詢是比較有用的特性。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM