编程语言

img liampli

选择 PostgreSQL 的理由(整理)

发表于2004/9/27 12:06:00  1350人阅读

选择 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

阅读全文
0 0

相关文章推荐

img
取 消
img