2011-01-12 12 views
2

當在RDMS(MySQL)與圖形或文檔數據庫之間切換時,是否需要更改應用程序代碼或徹底重寫代碼?我正在使用MySQL,但計劃在大約5-6個月內切換到某些模塊的NoSQL實現,因此我希望向開發團隊提供有關開發的最佳實踐方面的建議,以便在切換髮生後儘量減少時間,並儘量減少代碼更改。目前的平臺是使用MySQL的PHP​​ codeignitor。網站是一個用戶內容網站。稍後從Mysql遷移到nosql。代碼要求?

計劃是將朋友組件和文檔數據庫的圖形數據庫用於存儲郵件,配置文件詳細信息和活動流。目前我們已經花了2個多月的時間在MYSQL中創建模式,因爲交換機將在幾個月內發生,這似乎是一種浪費,因此我希望稍後避免儘可能多的代碼更改。

對於我可能需要從這些模塊的代碼中刪除所有的SQL查詢?

+0

你使用ORM嗎?如果是這樣,你可能會好起來的。否則,你將不得不重寫大部分與模型相關的一切。 – 2011-01-12 21:48:54

+0

沒有,沒有ORM。甚至像函數/類的應用程序邏輯? – BrianJ 2011-01-12 21:55:44

+0

幾乎所有直接接觸數據的東西都必須重寫。我的建議是將邏輯從mysql中抽象出來,即使它像'function query($ query){return mysql_query($ query);}`一樣簡單,然後使用query()而不是mysql_query()腳本,然後爲所有基本的數據庫功能做到這一點。這樣,你可以稍後回來,基本上拔掉這些函數,並插入一個新的函數集,它具有相同的名稱,可以從任何源中獲取數據,並返回與MySQL相同格式的結果。 – Phoenix 2011-01-12 22:13:16

回答

0

您可以使用OQGraph,它是MySQL的可插入圖形引擎。可以爲你節省一些工作。

0

在你的代碼中創建一個數據訪問模塊。更改將本地化到該模塊。您只重新編譯數據訪問模塊。

當然,如果你的代碼沒有編譯成獨立的dll的開始,你將不得不重新編譯和重新編譯大部分的項目。

您必須認識到這是一個界面變化,而不是單純的實施變化。世界上沒有什麼神奇的最佳做法可以保護你免於界面變化。你所能做的只是依靠編譯好的代碼庫來分離DLL來本地化代碼更改和重新編譯。