选择 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) Cursor10) 繼承11) 支持SQL9912) 支持面向对象的数据库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 。
Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved. 闵涛 E_mail:admin@mintao.net(欢迎提供学习资源)
鄂公网安备 42011102001154号
站长:MinTao ICP备案号:鄂ICP备11006601号-18