本文主要向大家介紹的是了DB2資料庫開發與PostgreSQL開發在實際操作中的一些相同之處,與不同之 處,最近用了用DB2,寫了點區別。不一定完全正確。不過可以看看兩者區別。
1,資料定義語言 (Data Definition Language)(DDL)以及外圍工具:db2與postgresql的區別幾乎為0,具體區別是:
a、db2 varchar 在沒有設定特殊資料表空間的話,上限為32K,postgresql的varchar沒有這個限制;
b、db2的二進位大物件類型blob,在postgresql裡用bytea類型代替;
c、db2的文本大物件類型clob、long varchar,在postgresql裡用text類型代替;
d、db2中generated by default 或者 generated always 類型鍵字在postgresql中用serial或者 bigserial代替;(這個區別是最大的)
e、db2中沒有序列(sequence對象),postgresql中有,因而更加靈活;
f、db2中的自增主鍵的值重設需要alter table,而postgresql裡可以用setval()系列函數設定序列, 更簡單;
g、db2中不支援空間資料類型(點、線、面),postgresql支援;
h、db2中交易隔離等級定義與SQL標準不夠相容,postgresql完全相容SQL標準;
i、db2中JDBC type4驅動不支援GBK的資料庫編碼,postgresql沒有這個問題;
j,db2的資料庫編碼轉換非常搞笑且複雜,postgresql很簡單,只需要 set client_encoding to xxx;
k,目前db2 8.1還不支援UNICODE後台編碼,postgresql支援,因此可以支援多內碼;
l,db2 8.1的觸發器無法讀取被觸發的資料表,postgresql沒有這個限制;
m,db2 8.1 的觸發器不能執行預存程序,postgresql沒有這個限制;
n,postgresql 中有bit(位)、bitstring(位串)類型,db2沒有;
o,db2的用戶端db2/db2cmd執行sql指令碼需要指定分隔字元,比如@;postgresql的用戶端預設就是分 號;
p,db2的用戶端db2/db2cmd沒有命令曆史功能,postgresql的用戶端有,可以編輯曆史命令;
q,db2無法在同一機器上安裝不同資料庫版本,postgresql可以;
r,db2有聯邦資料庫的概念,postgresql沒有;
s,db2 II可以進行異構資料庫複寫,postgresql需要自己開發軟體;
t,db2 8.1沒有很好的辦法將整個Database Backup成文本指令碼,postgresql很容易;
u,db2 8.1的java預存程序重載需要重啟資料庫,postgresql不需要;
v,db2 的用戶端db2/db2cmd中的SQL命令預設下無法使用折行,postgresql的可以;
w,db2沒有中文文檔,postgresql有,並且很完整;
x,db2有比較完整的錯誤碼,postgresql目前不夠完整;
y,db2中調用函數需要:select func() from sysibm.sysdummy1,postgresql 中只需要:select func(); 即可
z,db2中返回結果集的預存程序或者函數書寫非常複雜,需要使用額外的tablet儲存結果集, postgresql中只是增加了RETURN NEXT語句;
A,db2 中預存程序沒有ROWTYPE/RECORD類型的概念,postgresql中有;