Postgres与Firebird

时间:2009-10-28 04:57:28

标签: database postgresql firebird

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

我在http://web.archive.org/web/20100305134128/http://www.amsoftwaredesign.com/pg_vs_fb

找到了两个数据库的比较

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

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

8 个答案:

答案 0 :(得分:28)

在比较功能列表时,您必须选择RDBMS之类的技术(仅限于),但要回答这些问题:

  • 是否足以满足您的需求?
  • 是否符合您的所有需求?
  • 什么是观点/支持/开发/文档?

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

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

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

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

他们有奇怪的支持/发展策略。他们正在研究对他们感兴趣的东西,深层技术问题,而不是对用户真正重要或烦恼的东西。

答案 1 :(得分:18)

我一直在与Firebird合作很长时间,并建议不要以任何方式使用它。他们有许多Postgres没有的基本问题。不是说很多,只是说他们还没有'改变视图'命令。要更改视图,您必须删除并重新创建它,并根据它重新创建所有视图。这是FB的许多错误之一。根本不比较这些数据库引擎是不正确的。我有很多案例,当Firebird数据库损坏时,即使没有断电,通常的工作负载,等等。如果您还在决定,请不要使用Firebird!如果你已经选择了FB,你会在一段时间后记住我的话:)

答案 2 :(得分:10)

我可以对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

答案 3 :(得分:3)

答案 4 :(得分:3)

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

  1. 窗口函数
  2. 公用表表达式和递归查询
  3. 函数的默认和可变参数
  4. 并行还原
  5. 列权限
  6. 每个数据库区域设置
  7. ...和some from 8.3

    1. 全文搜索已集成到核心数据库系统中
    2. 支持SQL / XML标准,包括新运算符和XML数据类型
    3. 枚举数据类型(ENUM)
    4. 复合类型阵列
    5. 通用唯一标识符(UUID)数据类型
    6. 添加对NULL排序第一个还是最后一个
    7. 的控制
    8. 可更新游标
    9. 现在可以基于每个功能设置服务器配置参数
    10. 用户定义的类型现在可以有类型修饰符
    11. ...... Firebird是否有这些,我不知道。

答案 5 :(得分:1)

  

基于文件系统的备份可能
    是(邮政局长必须停止)

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

答案 6 :(得分:1)

一个重要的事情是部署:

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

答案 7 :(得分:1)

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

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