Postgres vs Firebird [关闭]

Posted

技术标签:

【中文标题】Postgres vs Firebird [关闭]【英文标题】:Postgres vs Firebird [closed] 【发布时间】:2010-12-10 18:05:00 【问题描述】:

我希望在我的下一个开发项目中使用 Firebird 或 Postgres ...主要是因为两者都可以在类似 BSD 的许可下使用。

我在http://web.archive.org/web/20100305134128/http://www.amsoftwaredesign.com/pg_vs_fb找到了两个数据库的很好的比较

但这种比较已经有 4 年多的历史了,而且这两个数据库都已经走了很长一段路。

有没有人介意更新比较表以与 Firebird 和 Postgres 的当前版本相关......或者有一个链接到可以在两个数据库之间进行良好最近比较的网站?

【问题讨论】:

查看***.com/questions/1331946/… 【参考方案1】:

您必须选择像 RDBMS 这样的技术,而不是(仅)比较功能列表,而是回答以下问题:

它的可靠性足以满足您的需求吗? 它满足您的所有需求吗? 什么是观点/支持/开发/文档?

对我来说FB不是一个好的选择。我可以指出两个故事:

我在表上写了约束。用户将一些字符串添加到表中。一段时间后,用户试图再添加一个字符串,但 FB 抱怨约束。怎么了?这个新字符串肯定受到约束。问题出在它之前添加的最后一个字符串中!该字符串是前段时间添加的,它是错误的,到目前为止它在数据库中,谁知道现在数据库中有多少错误数据。很坏。 FB 以错误的方式实现约束。 我编写了一个存储过程 (SP)。 FB将其存储在DB中,FB可以运行它,并且可以正常工作-按预期选择数据。没有人警告。然后备份完成,没有错误。并且只有在恢复 FB 时才会抱怨 SP 出了点问题......什么......你现在没有可恢复的备份副本。

我可以再指出两三个,但这些足以让我说:不,FB不是我的选择,它不是RDBMS,它是一个玩具。

而且他们的文档很糟糕。事实上,每个版本都没有实际的参考。当人们在论坛上问:版本 XX 中的完整功能列表是什么?标准答案是:从上一个官方 Interbase 版本中获取列表,并从所有后续版本的“发行说明”中添加(删除)功能。

而且他们有奇怪的支持/发展策略。他们正在研究对他们来说感兴趣的、深层次的技术问题,而不是对用户真正关键或烦人的问题。

【讨论】:

【参考方案2】:

我已经使用 Firebird 很长时间了,建议不要以任何方式使用它。他们有许多 Postgres 没有的基本问题。不是说很多,只是说他们还没有“更改视图”命令。要更改视图,您必须删除并重新创建它以及依赖于它的所有视图。这是 FB 的许多错误功能之一。比较这些数据库引擎是不正确的。我遇到过很多情况,即使在没有断电的情况下,在正常工作负载等情况下,Firebird 数据库也已损坏。如果您仍然决定,请不要使用 Firebird!如果你已经选择了FB,过段时间你会记得我的话:)

【讨论】:

Firebird 将拥有 ALTER VIEW firebirdsql.org/rlsnotesh/rlsnotes25.html#rnfb25-new。我对您的数据库损坏感到非常惊讶! alter view 将在 2.5 中,目前处于 beta 阶段,但我从 1.5 开始使用 firebird 并对这个错误功能感到非常愤怒。 2.0没有解决这个问题。在我的 1500 次安装中,每天都会发生 Db 损坏。 这很令人惊讶:您是否在 firebird tracker 中提交您的问题? 2Hugues:我为 POS 终端编写了一个软件,现在我安装了大约 1500 个该软件。所有这些安装都在我公司之外,所以我不能直接访问他们的硬件,也不能花很多时间进行详细的调试。只有我每天从我的客户那里接到 2-3 个烦人的电话。 gfix 做他们的工作,但这是不对的,所以我将迁移到 mysql。为了正义,我从 5.5 开始使用 Interbase,然后是 6.0,然后是 yaffil,之前没有看到这个问题。但现在它只是噩梦,我需要向现在所有选择数据库引擎的人说这个糟糕的经历。 这样的答案很容易过时。 FireBird 2.5 及更高版本支持ALTER VIEW 声明。答案应该是:“目前(FireBird v2.0),FireBird 不适合生产使用......”【参考方案3】:

我可以评论 Firebird。自第一次比较以来发生了以下变化:

多线程架构可用吗? 是(超级服务器)

实际上,Classic Server 是可扩展性的首选服务器类型。从 Firebird 2.5 开始,还有一种称为 SuperClassic 的架构。我写了一篇关于差异的小帖子:SuperServer, ClassicServer or SuperClassic?

将交易信息存储在同一个 文件作为数据?是(红色)

我不明白这怎么会是一个用红色写的问题。 Firebird 使用谨慎的写入 以确保数据库结构始终一致。

临时表?没有

在 Firebird 2.1 中可用。 Release Notes

丰富的内置功能?没有

Firebird 2.1 也改进了这一点。 Release Notes

多种身份验证方法(即 LDAP) 否

虽然不支持 LDAP,但 Firebird 2.1 允许 Windows 身份验证。 Release Notes

创建用户定义类型?没有

我不确定作者在这里的意思,但 Firebird 一直拥有域名。

需要备份/恢复压缩?是的 (红色)

有争议。数据库空间被重用。我发现很难想象在生产中需要缩减数据库。

在查询中使用 POSIX 正则表达式?没有

Firebird 2.5 支持正则表达式。 Release Notes

数据库监控?没有

是的,Firebird 2.1 支持通过系统表进行数据库监控。 Firebird 2.5 增加了对跟踪工具的支持。 我知道至少一位优秀的database monitoring tool for Firebird。 ;)

能够查询本地或远程其他服务器上的数据库。没有

Firebird 2.5 可以查询远程数据库。 Release Notes

【讨论】:

2.5 beta, 2.5 beta, 2.5 beta... 2.5 正在开发中超过一年,但是如果我现在需要 PRODUCTION db 引擎怎么办?我建议任何已经选择 Firebird 来满足他们需求的人使用 mysql 5.x。 @Alexey:当然是的:使用猎鹰!这是 MySQL AB 3 年前对我说的:P 所有这些与mysql的比较......难道不是因为公司许可成本吗?那为什么还要回到mysql呢?【参考方案4】:

最近的比较(2008 年):

http://nikolajlindberg.blogspot.com/2008/03/firebird-vs-postgresql.html

【讨论】:

【参考方案5】:

AFAIK 您引用的页面的 Postgres 列中的每个否仍然是否,尽管可以通过仅授予数据库中所有表的选择权限来有效地拥有只读数据库。但是,自 8.2 以来有许多新功能。一些from 8.4:

    窗口函数 常用表表达式和递归查询 函数的默认参数和可变参数 并行恢复 列权限 每个数据库的区域设置

...和some from 8.3:

    全文搜索已集成到核心数据库系统中 支持 SQL/XML 标准,包括新的运算符和 XML 数据类型 枚举数据类型 (ENUM) 复合类型数组 通用唯一标识符 (UUID) 数据类型 添加对 NULL 是先排序还是最后排序的控制 可更新游标 现在可以按功能设置服务器配置参数 用户定义的类型现在可以有类型修饰符

...Firebird 有没有这些,我不知道。

【讨论】:

【参考方案6】:

可以进行基于文件系统的备份 是(必须停止 Postmaster)

不正确。从 8.1 开始(如果我没记错的话)可以激活 WAL 归档,然后创建基于文件系统的备份,而无需关闭任何东西。在文档中查找 PITR(时间点恢复)以获取更多信息

【讨论】:

【参考方案7】:

一个重要的事情是部署:

Firebird 在 Linux 上使用 ext3 表现不佳,您应该使用 XFS 或类似的东西。 据我所知,PostgreSQL 仍然不能在 Windows 服务器上运行。

【讨论】:

实际上,自 8.2 (2006) 以来,PostgreSQL 是 Windows 上的本地公民(不再有丑陋的 IPC hack),即使使用本地安装程序 (.msi)。 我对 Linux ext3 一无所知,但看看这个ibphoenix.com/…【参考方案8】:

对于那些使用 Firebird 的人,我建议阅读 Firebird 2.1 Release Notes 以了解在 Linux 上运行的旧 Firebird 版本的数据库损坏问题。

简而言之,它与 Linux 中的错误有关。对于较旧的 Firebird,解决方法是使用 sync 选项挂载受影响的文件系统。该问题已在 FB2.1 中修复。

【讨论】:

在一个主要平台上,数据库的编码人员长时间没有发现问题(或没有采取任何措施)这一事实显示了他们所做的可靠性测试的数量。很公平,这是一个 Linux 错误,责任已经转移。但这是一个 100% 可靠的错误,它总是以同样的方式工作。应该是在可靠性测试中发现的。

以上是关于Postgres vs Firebird [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

原子计数器 - redis vs postgres或其他? [关闭]

Firebird - 数据库文件关闭错误消息

什么是最好的 Firebird IDE? [关闭]

使用 Firebird 的“SUBSTR”函数进行查询 [关闭]

谁做过sql数据库访问firebird数据库呀,怎么连接

实体框架将所有字段放在 Firebird 表的主键中