2009-08-21 27 views
4

这是我希望在今天编程的时候看到的东西,但是我从来没有见过这样的应用程序。您的意见非常感谢。有没有办法在运行另一个模拟器时模拟特定的数据库引擎?

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

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

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

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

  2. 有没有这样的应用程序?

  3. 如果是这样他们是什么?

谢谢... :)

添加澄清:应用程序可能来自第三方。你对这个内部架构没有任何认识。你只知道它使用某个DBMS。我正尝试使用除第三方软件需求以外的其他DBMS。

+0

我编辑了标题以更好地反映您寻求的内容。 – 2009-08-21 09:37:03

+0

希望你有我的想法.. :)感谢哥们 – 2009-08-21 09:39:54

回答

4

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

如果一个应用程序要求的Oracle或SQL Server,或什么的,这是因为它依赖于这个特定供应商的实施细则来运行它的SQL,存储过程等有没有办法,你可以模拟与一个访问数据库,例如...

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

+0

这个想法是“如果应用程序很简单,为什么我们需要应用程序需要相同的DBMS。” – 2009-08-21 09:37:07

+0

你有没有具体的应用?如果它写得很好,它可能使用标准的驱动程序来访问sql数据库... – Brann 2009-08-21 09:39:58

+0

@ Brann - 有些应用程序可以做到这一点..但不是每个应用程序.. :( – 2009-08-21 09:41:10

3

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

但在回答你的问题:

它是一个想法,不能执行?

它可以实现。

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

有没有这样的应用程序?

没有我所知道的。

如果是这样他们是什么?

没有我所知道的。

......

在评论部分中Chandrasekar注瞻:

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

我同意它有应用程序,但它有一个非常有限的听众:)。

你的建议是像firefox插件'ietab',只有你不会有ie安装...所以,而不是嵌入,即你需要完全重新实现,即使用Firefox的渲染窗口。

只是我的意见:这是太多的努力......只是安装第二个数据库更简单。

+1

看看超级用户的角度..他有一个很好的应用程序,但是如果没有一些DBMS,他就不能使用它,但是他仍然不是一个程序员,所以他们需要这样的产品 – 2009-08-21 09:52:21

+0

“安装第二个数据库更简单”。还有一些其他问题。组织政策,成本因素,处理ETAs ..其他许多事情:) – 2009-08-21 10:44:16

0

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

如果您不能更改连接字符串,或者应用程序不使用ADO,那么事情就更加复杂和非常接近不可能。

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

0

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

这也是SQL想要解决的问题。

在我看来,这个问题存在的原因是,世界似乎不同意足够什么样的数据操纵语言/接口应该看起来像。

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

0

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

但请记住,这些数据库具有专利和版权所涵盖的功能,所以竞争对手的产品可以如何模仿真实的东西存在限制。

模仿“向下”可能比向上更容易。例如,MS-Access将无法模仿Oracle或SQL Server的大部分功能,而SQL Server模仿Access等更简单的数据库的机会更大。

0

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

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

此外,应用程序供应商不会支持你在这种情况下 - 他们会简单地说,他们不支持使用情况下,你应该删除的桥梁和安装任何数据库的目的是针对的正确实例。

总之,我不认为这是值得的应用程序的风险错误微妙,并且被抛不支持,即使应用程序是不是特别重要。如果您不喜欢应用程序使用的底层数据库,请选择其他应用程序。

相关问题