PostgreSQL和DbLINQ:

  • PostgreSQL的名字也可以叫做Postgres,简写可以为PG
  • PG是一个功能全面的开源数据库(比那个连ACID都没有的MySQL强多了),性能也很不错,我把SQL Server 2008里面的8GB数据导入到PG里面后,发现查询性能和数据插入性能都差不多,但是SQL Server好像还是要快一点点(非常不严谨的测试,我这不超过10%,企业版)
  • PG的backup文件真是超级的省空间,SQL Server导出的bak文件有7G多,而PG导出的只有几百兆(这个数据库里面重复数据多有关系),PG在备份的时候应该是自动压缩了
  • PG的pgAdminIII虽然界面不是那么好看,但是很好用,能用SQL脚本干的事情它基本上都能干
  • PG在Windows上面也支持SSPI集成认证方式,这和SQL Server默认的认证方式是一样的,可以很大的提升安全性(不用明文密码了),但是我没能配成功.. 
  • 在PG里面unicode就是utf-8,这样英文占一个字节,中文占三个字节,不如ucs-2。当然ucs-2只能支持2^16个字符,不是真正的unicode。真正的unicode最好用ucs-4,可是这个字长又太大了。由于PG内部不用ucs-2,所以和windows程序的匹配不是那么理想(NT的unicode就是ucs-2),要么干脆都用DBCS。但是.net里面又只有unicode的string... 所以还是C++好
  • DbLINQ虽然已经开发了两年多了,但现在基本上还是没法用,简单的单表查询还行,query稍微复杂一点点就不行了,group by都时常出问题,完全没法用在实际的项目中(哪怕是纯娱乐的项目)
  • DbLINQ现在可下载的是0.18版本(一年前的),从SVN拖下来的是0.19,bug多多,比如PG里面表的主键必须命名为xxx_pkey的形式,不然就认不到。外键则只支持单列的外键,多列的话不能直接生成C#,只能生成一个错误的DBML,然后在VS里面修改DBML之后再生成C#,这样才能用。为这些bug真是浪费了好多时间(重建主键就花了几个小时)
  • DbLINQ的很多example里面都是一堆注释,看也看不懂,基本上没啥用处

总而言之,我对PostgreSQL这个数据库印象相当不错,而对DbLINQ比较失望。看来要在PG上面用LINQ,还是直接上ADO.NET Entity Framework比较好。