2008-11-14 111 views
1

有沒有人有從一個DBMS遷移到另一個的經驗?如果你這樣做了,你爲什麼這樣做?特徵?成本?公司指令?從一個DBMS遷移到另一個

有時,我與DBA一起工作過,他們堅持不使用特定於DBMS的功能(例如,SQL Server中的CLR存儲過程)。DBA的觀點是,如果我們使用這些功能,它會使如果必須的話,切換到另一個DBMS會更困難。但到目前爲止,我從未被要求切換。

回答

4

在我看來,它愚蠢的是不利用你使用的分貝的所有功能。無論您使用多少功能都會變得困難,更改DBMS將會很困難。系統之間存在細微差別(如某些記錄日期和一些記錄日期和時間),這將導致巨大的頭痛改變。沒有這樣的東西只是切換到一個新的DBMS。

從業務角度來看,還有很多工作要做。分析新的dbs改變爲。弄清楚改變dbs對新系統的影響。通過開發改變現有系統,測試變化等等。這個列表繼續下去。如果在企業系統上進行這種轉換,則需要幾個月甚至幾年的時間。我工作的最後一個地方不得不改變dbs,我們花了11個月的時間來完成這項工作,並花費了200萬美元用於諮詢顧問,硬件,軟件和員工工資。這是一件大事。如果有人說不使用功能,因爲有一天「可能」會發生,並且會更容易做到,很可能,這個人不在他們的搖桿中。與其他任何事情(最可能)相比,轉換這些功能花費的額外時間和金錢是微不足道的。國際海事組織如果現在購買使用這些功能可以節省時間和金錢,那麼這是最佳的行動方案。

我們這樣做是因爲我們在舊的dbms上運行的系統太大了。數據太多,我們需要更強大的功能。另外,它不再支持。

3

切換很多次。主要是因爲「非自願轉換」 - 舊產品不再被支持或不再適合。

  • DB2到Oracle。 Pre-UDB數據保存並移入Oracle。
  • MS訪問Oracle。繼續在Oracle表上使用Access前端。甲骨文向甲骨文提供的產品有:
  • 。 6至8,我想...

「你爲什麼這樣做?沒有功能。不是成本。在所有情況下,有些事情已經破裂。

  • 舊產品不再有效。操作系統升級或其他任何操作都會導致舊產品中斷。
  • 舊產品沒有擴展。

切換很少是您選擇做的事情。當供應商停業時(Ingres曾經這樣做過一次)或停止支持你的版本(微軟經常這樣做),這是強迫你的。

然後,當然,這是一場危機。由觸發器和存儲過程變化的技術複雜性所複雜化。如果只是數據,那不會是一場危機。轉儲到某種標準格式(例如CSV),重新加載,然後啓動並運行。

更重要的是,更多的「東西」(存儲過程,觸發器等))在數據庫中越多,你的應用程序軟件就越容易變成一堆難以理解(難以維護)的問題。沒有什麼讓人感到沮喪的是等待某個人查找存儲過程名稱。如果是VB代碼,每個人都可以訪問它。但是由於它在數據庫中,它變得反常地不那麼明顯。代碼是代碼,應該遠離數據。

有關此主題的更多信息,請參見Where to put your code - Database vs. Application?

2

我參與過幾個項目,將數據從一個數據庫遷移到另一個數據庫。在任何情況下,都是正在遷移的數據 - 而不是RDMBS。如果應用程序正在工作,那麼爲了切換而切換數據庫不會有任何壓力。遷移的動力通常是因爲舊系統的數據不是過時的,不兼容的,或者兩者兼而有之,這也爲切換RDBMS提供了機會。

最有可能的變化是將參考數據(員工,客戶等)整合到現有的主數據庫中(爲了一致性和易用性),然後修改所有其他表,以便鍵指向新的參考數據。這需要在堆棧上下架構和相應的代碼更改。這是數據遷移 - 不是數據庫遷移。並且很有可能你會想利用這個機會來添加數據,或者標準化名稱,或者(去) - 標準化表格等。

結果是這些項目幾乎總是對數據,模式和代碼,以及將T-SQL轉換爲PL-SQL所需的任何工作將只是該項目的一小部分。因此,如果您要爲一個不錯的RDBMS付費,請全部使用它。否則就像不使用新車的後備箱或手套箱,以便在購買新車時更換汽車更容易。

3

我在一家公司工作了很多年,其產品支持Oracle或SQL Server。我們在Erwin中維護模型,並從中生成模式腳本,觸發器和Oracle包。這些包被用於使Oracle觸發器與SQL Server類似地工作(具有邏輯「插入」和「刪除」表)我們保存了兩套存儲過程腳本。

隨着這個混亂,我建議你可以遷移大型項目,只要你能夠成功地讓你的數據層完全脫離任何邏輯代碼。如果你能做到這一點,那麼你可以實現任何數據庫特性將加快數據層中的應用程序,而不會影響你的核心應用程序。

1

另一點(支持S.洛特)。根據您的開發環境,您的開發人員可能無法輕鬆開發甚至查看存儲過程。將應用程序代碼拆分爲兩套不同的開發工具和執行環境可能會變得複雜,並且可能會使找到技術熟練的員工變得更加困難。

我不認爲這是針對存儲過程的爭論,但當決定應用程序的給定組件駐留在代碼的哪個位置時,這當然需要考慮。

0

我們是通過HP3000遷移到Oracle的。它花費了我們2500萬美元,還增加了損失2億美元數據的成本,因爲他們沒有考慮到他們在做什麼。我還發現很多地方只是把它看作是一個舉動。他們稍後會找出其餘的......。

相關問題