DB2 vs PostgreSQL vs SQL Server

dan*_*ine 16 sql-server db2 postgresql

有没有人使用过这三个数据库?你对他们有什么经历?PostgreSQL对于一个项目看起来很诱人,但我很想知道它的更多信息(我们是一个.NET商店).我也听说过很多人对DB2感到满意.

Rob*_*ear 16

我在一个非常大的组织工作,主要在Linux(Red Hat)上使用DB2.我们有许多大型数据库,并已调查转向其他RDBMS解决方案,例如Oracle和SQL Server.我在SQL服务器端做了很多工作.

我们发现SQL服务器执行得更好,并且需要的调优比DB2少,特别是当表格大于1M记录时.至少可以说,HADR也是困难和笨重的.

我们发现DB2和SQL Server之间存在许多差异,并且在此处列出的内容太多了.我负责完成从一个平台到另一个平台的代码转换背后的许多工程,并且不能说我发现DB2中的任何东西都优于SQL服务器,但确实发现了许多我更喜欢SQL服务器的东西.这里有一些我的头脑:

  • SQL Server中更好的选择数据类型,例如MONEY和SMALL MONEY.
  • SQL Server中的混合字符编码.某些列可以是ANSI,其他列可以是UNICODE(分别为char和nchar).在DB2中进行此设置既不简单也不容易.
  • SQL服务器中更好的工具,主要是用于ETL的SSIS(与价格极其昂贵的IBM Data Stage相反).
  • SQL Server具有更宽容的语法.例如,您不需要在任何地方使用分号.也许只是个人偏好,但我发现在T-SQL中编码更容易.
  • 许多高级功能似乎在SQL Server中运行得更好.例如,SQL Server允许您进行页面级压缩,其中DB2仅限于行级压缩.
  • 使用SQL Server IDE调整SQL Server查询更容易

还有更多,但老实说,我建议任何正在考虑一个而不是另一个的人应该同时考虑并花两些时间使用这两个系统.现在看起来SQL服务器是一个更好的整体解决方案,但DB2有朝一日可能会占据上风.

最后,在处理数据仓库时,SQL,SSIS和SSAS比InfoSphere,DataStage和DB2提供了更好的解决方案.我可以在上面写一份白皮书,但我的建议是自己设置并花一周时间或者玩每个解决方案.微软的解决方案比IBM更快,更便宜.我不知道有任何其他依据可以作出决定.

平台应该不是问题,因为数据库通常在他们自己的机器上运行,但总有那些"没有微软!" 和"没有Linux!" 商店周围.真的很遗憾.我推荐SQL服务器.


Fre*_*tka 9

作为DB2人员,我可以提供一些有关运行DB2 for Windows以及为其开发.NET应用程序的内容的详细信息.以下详细信息是2009年6月发布的版本9.7的最新信息.

  • 几乎所有Windows编程语言和IDE的驱动程序和API支持,包括.NET和Visual Studio扩展
  • 免费的,可生产就绪的数据库引擎(Express-C),没有数据库大小限制,与Oracle Express和SQL Server Express相比受限制最少
  • 适用于Windows的自调整数据库引擎,可自动处理对良好性能至关重要的多个内存缓冲区的大小
  • 坚如磐石地支持XML作为本机数据类型,由其自己的专用查询引擎处理,该引擎针对XML的分层特性进行了优化.查询可以使用SQL和XQuery表达式的任意组合访问XML和表格数据的任意组合


Bee*_*eep 6

如果您是.NET商店,并且要么使用小型数据库(即Sql Server Express),要么有足够的资金用于完整的SQL Server,请使用它.对于大多数操作,SQL Server的性能优于PostgreSQL,与DB2相同.

如果你需要多平台支持,基于Linux,或者需要一个不是微软的免费产品,PostgreSQL就太棒了.

我已经超过10年没有使用过DB2了,除了运行内部性能测试而不是其他数据库(对于像Oracle/SQL Server这样的事务数据库来说,它比MySQL,PostgreSQL等更好) ).


Ric*_*odd 5

避免像瘟疫一样出现微软。即使在Windows上,也始终要求使用PostgreSql,以便更好地支持开发Java / Python等应用程序,并且在.NET中仍然具有良好的支持。当然,它也是完全免费的,即使您是一家拥有数百万美元的公司,鉴于SQL Server的当前许可费用也不容小at。

对于1个SQL Server许可证的费用,您将节省30,000英镑(例如40,000美元)或更多-购买更好的硬件来运行Postgres,仍然有净收益。

至于性能,实际上,如果这是一个很大的问题,我们无论如何都不应使用DB2,SQL Server或Postgres。出于设计目的,这三者之间的差异可以忽略不计。

编辑:在.NET集成上,实际上这在SQL Server中确实很差,尽管它确实具有比Postgres / DB2更多的功能,但是相对于SSIS或存储过程并没有太大的优势。我可以看到我的工作中的主要用例是从CLR .dll访问类和函数,但是随后您正在数据库中实现逻辑,这可能对您不是一个好主意。