我必须开始为数据库项目构建架构,但我真的不知道引擎之间的区别。
谁能解释一下这三种引擎各自的优缺点?我们必须选择其中一个,而我真正了解的唯一一件事是:
- Mysql & Postgres:
- 是免费的,但不如 oracle
- Mysql 作为安全问题(这是真的吗?)
- 甲骨文:
- 世界上最好的数据库引擎
- 昂贵的
有人可以清除它们之间的其他差异吗?这是一个预算较低的中/大型(我们正在考虑大约 100 到 200 张桌子)项目,您会选择什么?并且预算更高?
我必须开始为数据库项目构建架构,但我真的不知道引擎之间的区别。
谁能解释一下这三种引擎各自的优缺点?我们必须选择其中一个,而我真正了解的唯一一件事是:
有人可以清除它们之间的其他差异吗?这是一个预算较低的中/大型(我们正在考虑大约 100 到 200 张桌子)项目,您会选择什么?并且预算更高?
几年前我不得不写一个翻译引擎;你给它输入一组 sql,它会翻译成当前连接的引擎的方言。我的引擎适用于 Postgres (AKA PostgreSql)、Ingres、DB2、Informix、Sybase 和 Oracle - 哦,还有 ANTS。坦率地说,Oracle 是我最不喜欢的(更多内容见下文)......不幸的是,mySql 和 SQL Server 不在列表中(当时两者都被认为是严重的 RDBMS - 但时代确实会发生变化)。
不考虑引擎的质量或性能 - 以及制作和恢复备份的难易程度 - 以下是主要的区别领域:
无需对所有转换数据感到厌烦,这里有一个数据类型 lvarchar 的示例:
oracle=varchar(%x) sybase=text db2="long varchar" informix=lvarchar postgres=varchar(%x) ants=varchar(%x) ingres=varchar(%x,%y)
在我看来,最重要的是 null 处理。Oracle 静默地将空白输入字符串转换为空值。...很久以前的某个地方,我读到有人写的关于“空的十七个含义”或类似的文章,真正的一点是空值非常有价值,空字符串和空字符串之间的区别是有用且不平凡!我认为甲骨文在这一点上犯了一个巨大的错误。其他人都没有这种行为(我见过)。
我最不喜欢的第二个是 ANTS,因为与所有其他人不同,他们执行了绝对没有其他人做的完美语法的愚蠢规则,虽然他们可能是唯一一家提供完美遵守标准的 DB 公司,但他们也是皇家的痛苦写代码的屁股。
我最喜欢的是 Postgres。它在 _real_world_ 情况下非常快,有很好的支持,并且是开源/免费的。
不同 SQL 实现之间的差异很大,至少在底层是这样。这块板不足以将它们全部计算在内。
如果你不得不问,你也必须问自己是否能够就此事做出有效和有根据的决定。
请注意,Oracle 还提供了Express (XE) 版本,其功能有所减少,但可以免费使用。另外,如果你一开始的知识很少,你就得自己去学习,我随便选一个,用它开始学习。
请参阅维基百科上的比较表: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 吗?赛贝斯?太数据?微软 SQL?
我认为对于低预算情况,Oracle 是不可能的。100-200 个表并不大,通常模式中的表数量不是一个规模衡量标准。数据集和吞吐量是。
你可以看看http://www.mysqlperformanceblog.com/(以及他们的极品书籍)了解 MySQL 如何处理大型部署。
通常,现在大多数 RDBMS 几乎可以完成您在非常严肃的应用程序中需要的任何事情。