开发可以使用多种类型数据库的应用程序的最简单方法是什么?

时间:2011-02-23 19:36:19

标签: database web-applications

我有一个类的项目,要求如果使用数据库,则用户可以选择要使用的数据库,这些数据库可以是不同的类型。所以虽然我可以使用例如MySQL用于开发,在项目的最终版本中,用户必须能够在安装时选择数据库(Oracle,MySQL,SQLite等)。如果有一个简单的方法,最简单的方法是什么?

只要得到部门Linux机器的支持,使用的语言就由我决定,因此它可能是Java,PHP,Perl等。我一直在研究并找到有关ODBC,JDBC和SQLJ的信息(例如作为this),但我对数据库很陌生,所以我很难找出最符合我需求的东西。也有可能没有一种简单的方法可以做到这一点;教授承认他也不是数据库人,他似乎认为如果不清楚它会采取什么措施会很容易。

这适用于Web应用程序,但它应该是相当直接的,例如在客户端使用HTML和Javascript,在服务器端使用带有MySQL数据库的Java。没有提到框架,所以我认为它们太多了。我可以选择在必要时使用Tomcat或Apache,但总体思路是保持简单,所有使用的东西都应该能够通过用户级访问来安装/更改/配置。因此,我认为必须重新编译PHP才能使用ODBC就好了。

在这些限制中,能够与任意数据库交互的最佳方式(如果有的话)是什么?

6 个答案:

答案 0 :(得分:1)

嗯,你可以采用两种方式(用Java):

  1. 您可以开发自己的类来处理不同的数据库并在JDBC中加载它们的驱动程序。这样您就可以为自己创建一个数据访问层,这需要一些时间。

  2. 您可以使用Hibernate(或其他ORM)。这样Hibernate会为你处理一些事情,你只需要知道如何使用Hibernate。学习Hibernate可能需要一些时间,但是当你习惯它时,它对你未来的项目非常有用。

答案 1 :(得分:1)

我认为你将在这里遇到的问题是SQL并不是真正的标准。我的意思是供应商(Oracle,MySQL等)包含非SQL标准的类型和功能,以便“绑定”到他们的数据库,例如Oracle的VARCHAR2等。

当我在大学时,我的最后一年项目是创建一个应用程序,允许用户使用带有Java前端的JDBC创建关系数据库。

JDBC的使用非常简单,但问题是找到了所有供应商共有的足够的SQL功能/类型。所以他们可以毫无问题地在它们之间切换。解决这个问题的方法是实现模块来处理特定于供应商的问题,并编写在它们之间进行转换的方法。因此,例如,您可以为MySQL开发一个包含许多MySQL特定代码的数据库,但是您可能希望使用Oracle,然后存在需要解决的问题。

我会花一些时间查看所有供应商实施的核心SQL标准,然后编写这些功能的代码。但我认为您使用的技术不是问题,而是您创建的SQL。

希望这有帮助,如果它没有帮助就道歉!

答案 2 :(得分:1)

如果你想在那里坚持使用Hibernate(不需要框架)。 Hibernate相当容易使用。您编写的HQL将转换为您正在使用的数据库所需的SQL。

答案 3 :(得分:1)

也许使用object relational mapper(ORM)或database abstraction layer(DAL)。它们旨在为多个数据库后端提供标准API,从而可以在不同的后端之间切换,只需对代码进行最少的更改或不进行更改。例如,在Python中,流行的ORM是SQLAlchemy,而优秀的DAL是web2py DAL(它是web2py framework的一部分,但也可以在框架之外用作独立的DAL。 )。其他语言还有很多其他选项。

答案 4 :(得分:0)

使用带有数据库抽象层和orm的框架。试试symfonyrails

答案 5 :(得分:0)

除非您更喜欢jdbc,否则有很多Object关系数据库框架。对于简单/小型应用程序,这应该工作正常。