postgreSQL mysql oracle的区别

时间:2008-10-19 16:16:45

标签: mysql oracle postgresql

我不得不开始构建数据库项目的架构,但我真的不知道引擎之间的差异。

任何人都可以解释这三种引擎的优点和缺点是什么?我们必须选择其中一个,我唯一知道的就是:

  • Mysql& Postgres的:
    • 免费但不如oracle
    • Mysql作为安全问题(这是真的吗?)
  • 甲骨文:
    • 世界上最好的数据库引擎

有人可以清除他们之间的其他差异吗?这是一个中/大(我们想约100到200个表)项目,预算很低,你会选择什么?还有更高的预算?

4 个答案:

答案 0 :(得分:12)

几年前我不得不写一个翻译引擎;你喂它一套sql,它转换为当前连接的引擎的方言。我的引擎适用于Postgres(AKA PostgreSql),Ingres,DB2,Informix,Sybase和Oracle - 哦和ANTS。坦率地说,Oracle是我最不喜欢的(下面有更多内容)...不幸的是,mySql和SQL Server不在列表中(当时它们都不被认为是严重的RDBMS - 但时间确实有所改变)。

不考虑引擎的质量或性能 - 以及制作和恢复备份的便利性 - 以下是主要区别:

  • 数据类型
  • 限制
  • 致残
  • 保留字
  • null语义(见下文)
  • 引用语义(单引号',双引号“或其中之一)
  • 语句完成语义
  • 功能语义
  • 日期处理(包括常规关键字,如'now'和输入/输出函数格式)
  • 是否允许内联评论
  • 最大属性长度
  • 最大属性数
  • 连接语义/安全范例。

对所有转换数据不感兴趣,这里是一个数据类型的示例,lvarchar:

oracle = varchar(%x)sybase = text db2 =“long varchar”informix = lvarchar postgres = varchar(%x)ants = varchar(%x)ingres = varchar(%x,%y)

在我看来,最重要的是空处理; Oracle SILENTLY将空白输入字符串转换为空值。 ......在某个地方,很久以前,我读过一篇关于“The Seventeen of Null”或其他一些文章的文章。真正的一点是,空值非常有价值,空字符串和空字符串之间的区别是有用而且不平凡!我认为甲骨文在这个问题上犯了一个大错没有其他人有这种行为(我见过)。

我的第二个最不喜欢的是ANTS,因为与其他所有人一样,他们强制执行完全语法的愚蠢规则,绝对没有其他人这样做,虽然他们可能是唯一提供完全遵守标准的DB公司,但他们也是皇室痛苦的屁股写代码。

我最喜欢的是Postgres;它在_real_world_情况下非常快,有很大的支持,并且是开源/免费的。

答案 1 :(得分:4)

不同的SQL实现之间的差异很大,至少在幕后。这个板子不足以统计它们。

如果你不得不问,你还必须问问自己,你是否能够就此事做出有效和有根据的决定。

A comparison von MYSQL and Postgres can be found here

请注意,Oracle还提供Express (XE) edition功能减少,但可以免费使用。 此外,如果你开始时没什么知识,你将不得不自学,我会选择任何一个,并开始学习使用它。

答案 2 :(得分:3)

请参阅维基百科上的比较表:http://en.wikipedia.org/wiki/Comparison_of_object-relational_database_management_systems&& http://en.wikipedia.org/wiki/Comparison_of_relational_database_management_systems

Oracle可能是也可能不是最好的。它很贵,但这并不意味着最好。

你看过DB2了吗? SYBASE? Teradata的? MS SQL?

答案 3 :(得分:2)

我认为对于低预算的情况,Oracle是不可能的。 100-200个表并不大,通常架构中的表数量不是比例量度。数据集和吞吐量是。

您可以查看 http://www.mysqlperformanceblog.com/(及其精湛的书籍),了解MySQL如何处理大量部署。

现在一般来说,大多数RDBMS几乎可以在非常严肃的应用程序中执行任何操作。