database - 数据库之间的主要区别是什么?

标签 database comparison

我对任何数据库都不狂热,但我希望看到供应商之间的差异。

例如,我主要使用 Oracle,我发现其他人(MySQL、SQL Server、PostgreSQL 等)无法做到:

SQL Server也一样,别人做不到的:

最佳答案

Oracle 的 CONNECT BY 是标准 SQL 的递归 SQL 的有限版本。 DB2 和 MSSQL 的递归“公用表表达式”编码有点难,但提供的功能比 Oracle 的 CONNECT BY 更强大。 (不过,Oracle 数据库的下一个版本应该会获得真正的递归 SQL。)

闪回是一个真正独特的 Oracle 特性,它反射(reflect)了深度 MVCC内置于 Oracle 中。 MVCC 是 Oracle 处理并发的方式,而不是传统的悲观锁定;并发处理是数据库之间存在很多差异的地方之一(尽管大多数 DBMS 正在摆脱仅基于悲观锁定的并发)。在我看来,Oracle 坚定地建立在 MVCC 之上这一事实是一个显着的优势。

关于 TOP 结果:所有 DBMS 都有办法做到这一点。

除此之外:

SQL-wise:Oracle 拥有最先进且符合标准的日期时间处理。 Oracle 在 OLAP 相关功能方面很强大(但 DB2 和 MSSQL 也是如此;OLAP 功能是开源 DBMS 难以跟上的领域)。最近,Oracle 似乎基本上忽略了 SQL 标准,因为它的标准合规性停滞不前(例如,与 MSSQL 相比,它在这里有了很大改进);我将此归咎于 Oracle 巨大的市场份额导致的傲慢。

从概念上讲:Oracle 和 MySQL 是两种截然不同的数据库处理方式的示例。在 Oracle 中,创建数据库需要永远,而数据库是一个非常重量级的对象,因此在 Oracle 世界中,数据库往往包含很多表,可能处于不同的“模式”中。在 MySQL 中,数据库是一个非常轻量级的对象,因此 MySQLers 倾向于拥有许多数据库,每个数据库中的表相对较少(这可能就是为什么他们似乎不提示 MySQL 缺乏模式)。

Oracle(如 DB2)是几乎包括整个操作系统的 DBMS 的一个示例:它执行许多功能,而 MSSQL/MySQL/PostgreSQL 等 DBMS 让操作系统的文件系统和虚拟内存系统处理这些功能。就个人而言,我更喜欢后一种方法,但 Oracle 的方法使得无论使用哪种操作系统,Oracle 的性能都非常相似。

与 MSSQL 相比,Oracle 可在更多平台上运行(与大多数其他 DBMS 一样;MSSQL 可能是唯一在 Windows 上运行的重要 DBMS)。

与大多数其他 DBMS 相比,Oracle 提供了另一种集群方式:RAC。我听说过很多关于 RAC 的恐怖故事,但如果您能让它正常工作,那么可以说您拥有了一个非常强大(且昂贵)的集群解决方案。

关于管理,与大多数其他 DBMS 相比,我发现 Oracle 的管理异常复杂。

然后,当然存在严重的定价差异:Oracle 的定价非常并且还在上涨。

关于database - 数据库之间的主要区别是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/481879/

相关文章:

ruby - 检查多维数组中子数组大小是否相等的最优雅的方法?

java - 日期比较不起作用

comparison - 这个比较 float 的函数有什么问题吗?

mysql - 我的 sql 查询有些奇怪

mysql - 建议跟踪所有登录、更新登录表或两者?

c++ - 使用 C++ 从文件填充数据库

python - 我可以在 python 中以百分比精度执行 "string contains X"吗?

php - 如何更新其他相关表中的主键/外键?

mysql - 外键 mysql 错误

javascript - javascript 中的 2 个字符串之间的比较不起作用