选择 PostgreSQL 的理由(整理)

王朝java/jsp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

选择 PostgreSQL 的理由

原来用 MySQL 给中小企业做管理软件,在使用的过程中发现,很多功能没有,做起来很难过. 现在有意转用 PostgreSQL, 小弟对 PostgreSQL 一点都不了解,请你帮忙列出 PostgreSql 的优点,或是MySQL 没有,而PostgreSQL有的,我先来把我知道的写出来,不对的请您指正。

PostgreSQL 的功能:

1) 完整的 transaction Support (mysql有,但不完整)

2) trigger (mysql 无)

3) function(mysql5.0 有加上, 以前的版本要用 C 来写,很麻烦,到现在我们还没有用过)

4) store procedure(mysql5.0 有加上)

5) foreign key (mysql3.23 以后的版本如果用 innodb 就可以支持,但不好用有限制)

6) sequence(mysql 无)

7) view(mysql 无)

8) 支持多种语言来写 trigger,function,procedure,据我知道有如下:

8.1> pl/pgsql (为了从 Oracle 转过来的 Programmers)

8.2> PL/PHP

8.3> PL/Python

8.4> PL/Tcl

8.5> PL/Perl

8.6> PL/Java (这个我不确定,应该可以的)

9) Cursor

10) 繼承

11) 支持SQL99

12) 支持面向对象的数据库

13) 支持上TB的数据库

PostgreSQL的缺点:

1、不支持可更新视图。不过你可以用规则来替代。要是应用依赖于可更新视图,这样做要冒一定的风险。

2、事务中遇到出错的语句,会导致整个事务处于回滚状态。这个可能会引起诸多麻烦。

3、没有真正的备份和恢复工具,只能导入导出。

4、存储过程/函数的语法不标准,和ORACLE的不一样,也和MSSQL的不同。

5. 没有类似MYSQL中BINLOG, 无法RECOVER.

6. VARCHAR字段也保存TRAIL BLANK, 比较字符时不忽略TRAIL BLANK(这是SQL标准,但未必是好事),所以最好不要用VARCHAR做主键或外键, 否则不小心后面加个空格,会让你伤透脑筋.

7. 超过字段长度的字符串存入数据库时,将出错,而不是自动截取.

8. 要经常VACUMM整理数据库,否则将优化出错,不过7.4版本有了自动优化工具.

9. 中文字符集为EUC_CN,相对应的LOCALE COLLATE只有LOCALE C,所以在初始数据库化时,LOCALE一定要选择C, 否则无法正常排序.

10. 强类型比较导致某些语句无法优化, 如SELECT * FROM TABLE WHERE INT8_KEY=1无法使用索引,一定要转化为SELECT * FROM TABLE WHERE INT8_KEY=CAST(1 AS INT8)

11. PSQLODBC有时会CRASH你的CLIENT APPLICATION.

同步引擎:

比较著名的PostgreSQL同步引擎有Slony-I和erServer,都是BSD授权项目。

其中Slony比较新,最新版本1.02支持到PostgreSQL8.0 beta1

你可以看看http://www.slony.org

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航