Oracle
為多種數據庫類型維護一組 DDL 和 DML 的最佳方法
在我們的應用程序中,我們支持多種類型的數據庫,即、
Oracle
等。目前,我們正在為每個不同的數據庫維護單獨的 DDL 和 DML。IBM DB2 (both UDB and ZOS)``postgresql
很難維護這些多組 DDL/DML,而且將來我們的應用程序可能支持更多的數據庫類型。
如果我們想維護一組 DDL/DML,最好的方法是什麼?
支持多種數據庫類型的最佳方法是優化每種數據庫類型的 sql 語句。否則有一天你會在一種或另一種數據庫類型上遇到巨大的性能問題。
此外,對於您的客戶來說,告訴他們“我支持 Oracle、DB2、MSSQL 等)而不為它們中的每一個優化 SQL 是不公平的。為什麼?因為您的客戶為數據庫支付了很多費用,而您的應用程序卻沒有使用數據庫提供的優勢和功能。
我將在這裡列出一個不同的選項,來自開發背景。有一次,我們開發了一個客戶端/伺服器應用程序,我們希望 DDL(在大多數情況下)在客戶端和伺服器之間是相同的。挑戰在於客戶端和伺服器使用不同的數據庫引擎。
所以我們所做的就是使用 XML。我們定義了所有的表(甚至在 XML 中進行了升級)。然後使用不同的 XSL 樣式表創建特定的創建(或升級)腳本(使用正確的數據庫引擎 DDL 方言)以針對客戶端或伺服器執行。所以他們從 XML 轉向 SQL。而且我們不必維護不同的 SQL 定義。只有一個 XML 文件。
現在,我知道這個選項可能會引起一些注意,但它確實有效。我並不是說你應該追求這個選擇。只是它是一種選擇。