我需要帮助才能选择。我想为我的.NET网站选择一个database_management_system。 我目前的变种是:
- MariaDB
- PostgreSQL
- Firebird
我使用的是MS SQL,没有经验,无法比较它们。
我需要的是:.NET的稳定性,速度,自由和良好的ORM,帮助我选择其中一个。
有一会儿我更喜欢Postgres,但不知道为什么。
补充:而且我认为我需要一个真正的杀手级功能来改变我的观点。
答案 0 :(得分:5)
我随时更喜欢PostgreSQL而不是MySQL。 PostgreSQL在SQL语句(窗口函数,递归公用表表达式)方面具有更多功能,可以更好地支持约束和索引(例如,基于部分和函数的索引)。
我仍然不确定GPL许可证何时强迫我购买商业许可证 - 尤其是商业应用程序。这是我避免使用MySQL的另一个原因 - 许可证情况对我来说太不清楚和模糊。
在需要具有负载平衡读取和写入语句的真正集群的环境中设置PostgreSQL更加复杂。
高可用性(即主服务器死机时接管的备用服务器)是 - 尤其是使用9.x - 就像使用MySQL一样简单。
就速度而言,它们之间可能没有太大区别。它们中的任何一个都可以很快,其中任何一个都可能很慢。这取决于你如何使用它以及工作负载的特性(PostgreSQL似乎更快,高并发读取和写入 - 但这可能已经改变了MySQL 5.5和改进的InnoDB引擎)。
Firebird在SQL功能方面也非常强大(AFAIK它是第一个支持递归公用表表达式的开源DBMS)。
我对Firebird的最大担忧是杂乱的文档。由于许可问题,没有单一的大型手册,但它是原始Interbase手册的集合以及每个版本的发行说明。因此,如果您需要检查某种语法,请从Interbase手册开始,然后查看FB 1.5的发行说明,然后查看FB 2.0,然后查看FB 2.1。有点笨拙,但团队正在努力,文档正在改进(仍然无法匹配PostgreSQL或MySQL手册)。
无论如何,我不是ORM的忠实粉丝,我从未使用过PostgreSQL和.Net,因为我只使用Java。所以我不能对此发表评论
答案 1 :(得分:2)
NHibernate是我推荐的流行ORM,虽然它起初的学习曲线相当陡峭。它支持许多DBMS,包括列表中的PostgreSQL和Firebird,当然还有MySQL - 这不在你的列表中吗? - 它与.Net很好用。
如果稳定性和速度是您唯一的要求那么您可以使用MySQL(社区版)或PostgreSQL - 当您必须考虑高可用性或高可扩展性方案时,辩论才真正开始,但这不是如果它是一个小应用程序的问题。
我没有使用Firebird(nee InterBase)或MariaDB的经验,因此无法发表评论。
答案 2 :(得分:1)