Oracle 的哪些特性使其成为小型项目的有吸引力的选择?

Mar*_*tin 13 oracle database-recommendation feature-comparison

鉴于 Oracle 的许可处理[a](以及在较小程度上的成本),我一直想知道选择 Oracle 而不是 PostgreSQL 或 MySQL 的决定因素是什么。

我的公司几乎总是选择 Oracle(在可能的情况下使用 XE),即使对于只有一个简单的 Windows 服务器盒运行数据库而没有任何专门的数据库管理的小型项目也是如此。(请注意,小的并不意味着数据将总是适合的Oracle XE的相当小尺寸的限制。)

我一直质疑这个选择,但它的好处是我们至少只接触一种数据库产品。

尽管如此,对于一个新项目,您需要一个 RDBMS,但数据库的项目和范围非常小,基于在简单的 Windows 服务器上运行的 Oracle 的哪些独特特性(没有太多的专用管理),您会选择 Oracle 而不是另一个关系数据库?

附加上下文:我们的许多数据库部署都在客户站点运行,我们称之为“低管理”模式。也就是说,数据库设置一次。在现场对其正确行为和性能进行了一些初步测试。在此之后,数据库就在其上运行。没有进行常规管理。只有当出现问题时,技术人员(不是专门的 DBA)才会检查数据库,试图找出发生了什么。备份主要是作为离线备份完成的。在某些项目中,客户甚至不关心是否涉及 RDBMS。他们只是将他们的应用程序视为一个有效(或无效)的黑匣子。

[a] :在我工作的地方,几个项目经理需要反复几个月才能为小项目获得适当的许可,因为如果收入很小,当地的 Oracle 代表对销售他们的产品并不十分感兴趣。

Jac*_*las 12

我只能尝试回答 Oracle 和 postgres。在专门使用 Oracle 多年,并且只使用最近两年左右的postgres 之后,我喜欢postgres。它有很多比 Oracle 更方便使用的小方法,并且它共享许多关键的好处(例如 MVCC)。它更易于管理、可靠、具有出色的文档,当然,它是免费的。

但是 postgres 在某些方面无法与 Oracle 匹敌,例如:

  • RAC - 据我所知,没有比任何数据库更好的集群技术
  • RMAN - 远优于 postgres 的基本备份和恢复功能,尤其是块更改跟踪和增量备份(您可以将其应用于其他备份以保持最新的完整备份)
  • Oracle 支持 - 存在。postgres 支持吗?没那么多
  • 许多其他功能,如物联网、“安全文件”和压缩技术,在 postgres 世界中没有类似物

有趣的是,几乎所有这些功能在 XE 中都不存在或瘫痪。我想我会选择 postgres 而不是 XE,其他条件都一样,但是......

...这些都没有解决选择 Oracle 的两个最大原因:

  1. 您已经在使用 Oracle 并且在其中投入了大量资金(数据库独立是一个愚蠢的神话)
  2. 您的开发人员和 DBA 了解 Oracle 并充分利用其功能(为什么他们不认为数据库独立性是一个愚蠢的神话呢?)

编辑:

我每次都选择 postgres 而不是 XE 的一种情况是,是否需要考虑安全性。如果您的数据库或其任何应用程序暴露在公共互联网上,我不确定 XE 是否是一个好主意。


Gar*_*ary 9

甲骨文顶点。直接内置于数据库中的方便、易于使用的 Web 应用程序环境。很简单,它使得在单个集成包中部署带有 web ui/应用程序逻辑/数据库的“单盒”应用程序变得非常简单。

附注。11g XE(目前处于测试阶段)将存储扩展到 10GB 以上。


Lei*_*fel 5

尽管 Oracle 的其他闪回选项在 Express Edition 中不可用,但闪回查询可用。根据上面的问题,没有其他数据库具有此功能,允许选择语句查询过去某个时间点的数据。闪回数据可以与当前数据连接并插入到当前表中,这使得它对于撤销类型操作、临时更改以及在一个地方比较由方法所做的更改非常有用。

一些其他数据库没有的其他一些东西 Oracle Express Edition 没有。

  • postgres 勾选“AuthID 当前用户与定义者”、“检查约束”、“可延迟约束”、“日期加减”、“分层查询”、非模式触发器、大多数“分析函数”、一些“收集函数” 、“XML 函数”、最多 1Gb、“创建或替换”和“多平台”框(至少) (5认同)

小智 2

Oracle 的一项出色功能是 Oracle 资源管理器等功能,它使将应用程序整合到一个数据库中比为每个应用程序使用一个单独的数据库要容易得多。您的组织中似乎没有使用此功能。我过去曾为您提到的项目设计过统一数据库。

  • 每个项目都有自己的硬件
  • 每个项目都有自己的许可证
  • 每个项目都有自己的存储空间

这导致即使是最简单的项目也需要几个月的时间才能启动,在上市时间极其重要的时代,这简直是致命的。由于某种原因,许多人都错过了这一点,甚至常常因为政治原因而被忽视。

这个问题的解决方案非常简单。创建一个严肃的数据库,为每个项目/应用程序提供自己的架构和访问用户,并在数小时(而不是数月)内运行。如果您打算做这样的事情,那么将具有类似正常运行时间要求的应用程序组合起来可能是有益的。Oracle 获得越来越多的在线维护选项,但有时,几个小时的停机时间要容易得多。预先定义这个时间窗口可以防止很多问题。您将需要一些停机时间。

不允许应用程序连接到数据库,让它们使用自己的 tns 别名连接到专用于该应用程序的服务。这样做使您可以将应用程序移动到其他数据库,而无需重新配置应用程序。

顺便说一句:使用这种整合方式的公司每年节省大量现金,比开始滚动所需的许可证还要多。