客户有一个基于 Oracle DB 的旧系统。使用当前(2013)版本的 MySQL 或 PostGreSQL(还考虑存储过程、触发器等),将 Oracle DB 数据传输到哪个更容易(需要更少的工日/小时)?
还是无关紧要?
客户有一个基于 Oracle DB 的旧系统。使用当前(2013)版本的 MySQL 或 PostGreSQL(还考虑存储过程、触发器等),将 Oracle DB 数据传输到哪个更容易(需要更少的工日/小时)?
还是无关紧要?
如果它是一个相当简单的数据库(没有复杂的用户函数或类型等),您可以尝试ora2pg。过去我在这方面取得了成功。显然,移植后需要进行测试。
替代选项 - 如果您具有相同的数据库结构(表命名相同,相同的列等),您可以创建一个仅模式的 postgres 数据库,将 Oracle 表一一转储到 csv,然后使用将它们加载到 postgres复制。
另一种选择是创建 postgres db(无数据,仅模式),并使用oracle_fdw Foreign Data Wrapper 将数据从 Oracle 直接拉入您的 postgres db(从 postgres db 中执行)
我以前使用过 oracle,现在正在使用 postgresql。
在结构方面,它们非常相似。但是......将一个应用程序从一个数据库移植到另一个数据库不是一天、一周或一个月的工作。
准备好:
1.测试每条SQL
2.测试每一个存储过程、触发器、函数等
3.测试每个应用模块
4.找出oracle特定功能的替代方案,例如模型子句、快照等
总之,没有灵丹妙药。但是根据我对两者的经验,您会发现移植它们更容易。
没有人能回答这类问题,除了真正真正移植过它的人:即使它可以编译,并且你可以安装它,这并不意味着它会运行得很快(或足够快)。
这取决于应用程序中使用的 SQL 功能,以及这些功能如何映射到新数据库。
因此,对于 95% 的应用程序,您的移植可能非常容易,但如果您必须找到 Oracle 物化视图的快速替代品,例如,在 PostgreSql 上可能会很麻烦。
所以移植真正开始于应用程序的设计阶段,否则你可能会遇到很多问题,看看这个。
在您的情况下,您必须识别所有 SQL 特性,以及这些特性在 PostgreSql 和 MySQL 上的映射有多容易。
例如,您可以在此处查看 PostgreSql 和 MySQL 之间的差异。我会选择 PostgreSql,因为我在开发在 Oracle 和 PostgreSql 上运行的应用程序时没有遇到重大问题:窗口聚合、递归 CTE、Java 中的存储过程等功能在两个系统中都可用。