我不得不开始构建数据库项目的架构,但我真的不知道引擎之间的差异.
任何人都可以解释这三个引擎的优点和缺点是什么?我们必须选择其中一个,我唯一知道的就是:
Mysql和Postgres:
是免费但不如oracle那么好
Mysql作为安全问题(这是真的吗?)
甲骨文:
世界上最好的数据库引擎
昂贵
有人可以清除它们之间的其他差异吗?这是一个中/大(我们想约100到200个表)项目,预算很低,你会选择什么?而且预算更高?
几年前我不得不写一个翻译引擎; 你喂它一套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_情况下非常快,有很大的支持,并且是开源/免费的.