计划将PostgreSQL与ASP.NET一起使用:不好的主意吗?
我目前正在为我的未来Web项目计划基础架构。我想采用Joel的方式,即每个客户端只有一个DB,现在正在考虑哪种DB引擎对我来说是好的。最好的选择当然是SQL Server,但是目前我无法提供完整的版本,并且我认为SQL Server Express对于加载的服务不是一个好的选择。现在,我正在考虑使用PostgreSQL。考虑到我的开发环境将是带有NHibernate或者LINQ to SQL的ASP.NET 3.5,如果我使用PostgreSQL而不是SQL Server,将遇到多少麻烦?
谢谢!
解决方案
为什么不从SQL Server Express开始并在有钱的时候迁移呢?这样,我们就可以朝着自己认为理想的方向发展,并降低转换成本。
如果使用PostgreSQL,将无法使用LINQ to SQL。当前,LINQ仅适用于SQL Server(可能是Oracle)。我不确定NHibernate。另外,如果我们使用PostgreSQL,我上次检查时,他们已放弃Windows支持。因此,我们将寻找另一个为Linux运行Linux的机器。
[编辑]
事实证明Windows上支持PostgreSQL。我不记得在哪里看到支持被取消。无论如何,我听说它无论如何都可以在Linux上更好地运行,因此无论如何我们都可以考虑这样做。
我认为这不是一个坏主意,而是一个很好的经验。
顺便说一下,NHibernate是将Linq移植到Nhibernate的方式,并且正在大量开发中,并且可以在后备箱中使用,因此,如果我们确实关心Linq的"我不在乎",请不要害怕使用它。
NHibernate可以在PostgreSQL上正常运行(无论数据库是在Windows还是在类似UNIX的操作系统上),. NET都可以使用Npgsql db提供程序很好地与它一起工作。
我们唯一会遇到的"麻烦"当然是PostgreSQL不执行T-SQL。实际上,它的PL / pgSQL存储过程语言比MS SQL Server的T-SQL更接近Oracle的PL / SQL。因此,我们必须重新编码存储的proc,如果我们使用ADO.NET,将需要注意一些陷阱。如果我们使用NHibernate,我们可能不必为此担心。尽管没有LINQ to SQL,但对我们来说真是不幸。
PostgreSQL具有可伸缩性,并且现在可以在Windows上正常运行(早期版本不正式支持Windows),而pgAdmin是一个很好的管理工具,我们将能够使用SQL Server的GUI工具完成大多数工作它在很短的时间内。