有没有办法在运行另一个数据库引擎时模拟它?

时间:2009-08-21 09:32:07

标签: sql-server database oracle

在今天的编程工作中,我希望看到这一点,但我还没有见过这样的应用程序。您的意见非常感谢。

假设我们有一个需要MSSQL服务器作为DBMS的应用程序。假设你只需要安装它并做一些事情。 (即你不会在生产服务器等中贬低它。)

在这种情况下,首先安装MSSQL可能是一个开销。我建议像软件桥,可以使用另一个DBMS来存储数据。换句话说,应用程序“看到”一个MSSQL实例,但在其下面它可能是Access。桥梁sholud做某种转换。

另一个例子:你有MSSQL但某个应用程序需要Oracle。那你必须购买Oracle。但是有了类似桥梁的东西,您可以将信息放入MSSQL DBMS中。网桥像Oracle一样监听端口1521所以应用程序“Thinks”有一个oracle安装。

  1. 这是一个无法实现的想法吗?

  2. 有没有这样的申请?

  3. 若然,他们是什么?

  4. 谢谢...:)

    添加澄清:应用程序可能来自第三方。您对内部架构没有任何了解。你只知道它使用某个DBMS。我正在尝试使用不同于第三方软件需求的其他DBMS。

6 个答案:

答案 0 :(得分:4)

应用程序通常不依赖于特定的数据库服务器,或者出于某种原因它们依赖于它。

如果应用程序要求使用oracle或sql server,或者其他什么,那是因为它依赖于这个特定供应商的实现细节来运行它的SQL,它的存储过程等等。你无法通过访问来模拟它数据库,例如......

如果您的应用程序只需要运行一些非常简单的SQL(即基本插入/选择语句),它可能使用标准驱动程序(odbc,ado等),并且这些驱动程序可以容纳每个主要的SQL数据库引擎。根据我的经验,“简单的应用程序”不要求特定的数据库供应商。

答案 1 :(得分:3)

这是ODBC应该解决的问题:-)。

但回答你的问题:

  

这是一个无法实现的想法吗?

可以实施。

这将是乏味而且吃力不讨好的工作,你的听力会非常有限。在我看来,这不值得做。

  

有没有这样的申请?

我不知道。

  

如果是这样,他们是什么?

我不知道。

...

在评论部分引入Chandrasekar的说明:

  

以超级用户的角度来看......他有一个很好的应用程序,但没有一些DBMS他就无法使用它。但他仍然不是一个做某事的程序员。所以他们需要这样的产品

我同意它有应用程序,但它的审核非常有限:)。

你提出的是类似firefox插件'ietab',只有你不会安装ie ...所以不需要嵌入ie,你需要完全重新实现,即使用firefox的渲染窗口。 / p>

只是我的意见:这太费劲了...只安装第二个数据库更简单。

答案 2 :(得分:0)

如果此应用程序使用ADO连接到SQL Server并且您可以修改连接字符串,那么使用其他数据库非常容易:更改连接字符串!但是,其他数据库必须能够支持SQL Server的所有功能。此外,该软件从未在另一个数据库上进行过测试,因此该应用程序可能会崩溃和损坏。燃烧。

如果您无法更改连接字符串,或者应用程序不使用ADO,则事情会更复杂,而且几乎不可能。

我过去曾在一个需要合理数据库独立的项目上工作过。数据库必须支持存储过程,但没有任何其他限制。默认情况下,我们尝试同时支持SQL Server和Oracle。 (我们也支持Interbase但从未公布过这个。)虽然我们确实设法保持它主要与数据库无关,但我们确实必须解决一些小问题。特别是我们的查询中的连接有一些令人讨厌的问题,我们通过向存储过程添加更多逻辑来解决这些问题。

答案 3 :(得分:0)

“这是ODBC应该解决的问题:-)。”

这也是SQL打算解决的问题。

在我看来,存在这个问题的原因是,世界似乎未能就数据操作语言/界面应该是什么样的足够达成一致。

我怀疑如果这是可以解决的,那就已经完成了。

答案 4 :(得分:0)

我听到的最接近的是EnterpriseDB,他们在Postgres上构建了一个层,所以看起来更像是Oracle。

但请记住,这些数据库具有专利和版权所涵盖的功能,因此竞争对手产品可以模仿真实产品的程度有限。

模仿“向下”而不是模仿可能更容易。例如,MS-Access无法模仿Oracle或SQL Server的大部分功能,而SQL Server模仿像Access这样的更简单的数据库的可能性要大得多。

答案 5 :(得分:0)

应用程序通常依赖于特定的数据库服务器。每个数据库实现的方式都略有不同 - 甚至是MSSQL和Sybase,它们都有一个共同的祖先。

任何桥梁,无论它试图抽象差异,都会留下一些暴露。这些可能会在应用程序中产生微妙的错误,这些错误最初可能会起作用,但随后会失败,或者更糟糕的是,会损坏数据。

此外,在这种情况下,应用程序供应商不会支持您 - 他们只是说他们不支持该用例,您应该删除该桥并安装适合其所针对的数据库的实例。

简而言之,即使应用程序不是特别重要,我也不认为应用程序出现故障的风险是微不足道的,并且没有支持。如果您不喜欢应用程序使用的底层数据库,请选择其他应用程序。

相关问题