gpt4 book ai didi

sql-server - 如何让我的 webApp 在不同的 DBMS 之间平滑切换(DB Independency)?

转载 作者:搜寻专家 更新时间:2023-10-30 19:43:53 24 4
gpt4 key购买 nike

我有一个以 Informix 作为后端数据库的 Java Web 应用程序。我的架构中的许多表都包含 CLOB、BLOB 和 SERIAL8 类型的列。现在我决定使用 SQL Server 而不是 Informix,但是我发现在将上述数据类型转换为相应的 SQL Server 数据类型时存在问题,并且当我转向使用 DB2 或 Oracle 时我也会遇到同样的问题我也发现匹配表之间关系的问题,因为每个数据库供应商都有自己的关系表示。

有没有一种方法可以设计我的应用程序和数据库架构,以便它可以与任何数据库服务器交互,而不管其类型如何并且无需更改列数据类型?我听说了 DDLUtils & jOOQ但不知道适不适合自己

最佳答案

好的,您可以在此处执行多个抽象级别:

首先,您需要将所有数据访问代码集中到独立的实现中,并且仅通过接口(interface)访问那些代码,这些接口(interface)以仅适用于您的应用程序且不受底层数据设计影响的格式为您提供所需的数据存储。

例如,如果您想从某个客户订单中获取零件,请确保您用来查找的方法是处理对象的“业务 ID”的方法,因为实际 ID 可能很长关系数据库,但 NoSQL 数据库中的 UUID。

通过应用它,您不受数据存储范例的束缚,您可以在平面文件、内存存储、NoSQL 和常规关系数据库实现之间自由切换。

其次,尝试使用像 Hibernate 这样的 ORM .这允许您使用通用查询语言编写,并且在大多数情况下仅将特定于数据库的更改限制为配置更改。

第三,如果您需要直接编写 SQL 查询,请确保您编写的是 ANSI 查询而不是特定于数据库的查询,即使您确实要确保这些查询不是代码的一部分,而是资源(即属性文件)的一部分这样您就可以根据需要调整和更改它,而无需重新编译您的二进制文件。

关于sql-server - 如何让我的 webApp 在不同的 DBMS 之间平滑切换(DB Independency)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11319674/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com