PostgreSQL和DbLINQ:
- PostgreSQL的名字也可以叫做Postgres,簡(jiǎn)寫可以為PG
- PG是一個(gè)功能全面的開源數(shù)據(jù)庫(kù)(比那個(gè)連ACID都沒(méi)有的MySQL強(qiáng)多了),性能也很不錯(cuò),我把SQL Server 2008里面的8GB數(shù)據(jù)導(dǎo)入到PG里面后,發(fā)現(xiàn)查詢性能和數(shù)據(jù)插入性能都差不多,但是SQL Server好像還是要快一點(diǎn)點(diǎn)(非常不嚴(yán)謹(jǐn)?shù)臏y(cè)試,我這不超過(guò)10%,企業(yè)版)
- PG的backup文件真是超級(jí)的省空間,SQL Server導(dǎo)出的bak文件有7G多,而PG導(dǎo)出的只有幾百兆(這個(gè)數(shù)據(jù)庫(kù)里面重復(fù)數(shù)據(jù)多有關(guān)系),PG在備份的時(shí)候應(yīng)該是自動(dòng)壓縮了
- PG的pgAdminIII雖然界面不是那么好看,但是很好用,能用SQL腳本干的事情它基本上都能干
- PG在Windows上面也支持SSPI集成認(rèn)證方式,這和SQL Server默認(rèn)的認(rèn)證方式是一樣的,可以很大的提升安全性(不用明文密碼了),但是我沒(méi)能配成功..
- 在PG里面unicode就是utf-8,這樣英文占一個(gè)字節(jié),中文占三個(gè)字節(jié),不如ucs-2。當(dāng)然ucs-2只能支持2^16個(gè)字符,不是真正的unicode。真正的unicode最好用ucs-4,可是這個(gè)字長(zhǎng)又太大了。由于PG內(nèi)部不用ucs-2,所以和windows程序的匹配不是那么理想(NT的unicode就是ucs-2),要么干脆都用DBCS。但是.net里面又只有unicode的string... 所以還是C++好
- DbLINQ雖然已經(jīng)開發(fā)了兩年多了,但現(xiàn)在基本上還是沒(méi)法用,簡(jiǎn)單的單表查詢還行,query稍微復(fù)雜一點(diǎn)點(diǎn)就不行了,group by都時(shí)常出問(wèn)題,完全沒(méi)法用在實(shí)際的項(xiàng)目中(哪怕是純娛樂(lè)的項(xiàng)目)
- DbLINQ現(xiàn)在可下載的是0.18版本(一年前的),從SVN拖下來(lái)的是0.19,bug多多,比如PG里面表的主鍵必須命名為xxx_pkey的形式,不然就認(rèn)不到。外鍵則只支持單列的外鍵,多列的話不能直接生成C#,只能生成一個(gè)錯(cuò)誤的DBML,然后在VS里面修改DBML之后再生成C#,這樣才能用。為這些bug真是浪費(fèi)了好多時(shí)間(重建主鍵就花了幾個(gè)小時(shí))
- DbLINQ的很多example里面都是一堆注釋,看也看不懂,基本上沒(méi)啥用處
總而言之,我對(duì)PostgreSQL這個(gè)數(shù)據(jù)庫(kù)印象相當(dāng)不錯(cuò),而對(duì)DbLINQ比較失望。看來(lái)要在PG上面用LINQ,還是直接上ADO.NET Entity Framework比較好。