2013-06-03 91 views
0

我正在升級將使用兩種不同數據庫類型的web應用程序。現有的數據庫是一個MySQL數據庫,並且與當前系統緊密集成,並且具有擴展功能的MongoDB數據庫。新功能還將很大程度上依賴於MySQL數據庫中的環境變量,例如當前用戶的信息,內容等。數據庫類型不可知選擇查詢封裝類

儘管我知道我可以獨立組裝查詢,但它讓我想到了一種方法這可能使查詢更簡單的結構(僅適用於容易易讀性,同時建立,一旦它的完成,轉換回硬編碼查詢),這將意味着一個封裝對象,包含:

  • 正在選擇什麼樣的數據(包括功能派生的數據)
  • 源代碼(包括加入的數據,我知道連接的不好非關係型數據庫的想法,但它是很好的,有設施以防萬一,可以重新寫入兩個查詢以後的性能時間)
  • 其中和有條件(存儲爲他們自己的對象類型,所以他們可在以後處理時,可能包括其他的選擇查詢可以由任何分貝來解釋在使用它)
  • 訂單
  • 分組
  • 限制

該數據然後可以被傳遞到一個接口適配器可以構建並執行查詢,將其返回到數組或o中對象或任何想要的。

雖然這聽起來不錯,但我不知道這樣的代碼是否存在。如果是這樣,任何人都可以向我指出,如果沒有,是否有任何類似項目的資源可以讓我繼續工作,並建立一個基本版本?

我知道這是一個複雜的庫,但我一直在這個更新的最後幾天,不斷來回切換已讓我糊塗,有時並允許錯誤發生

回答

0

我會研究諸如SQL語法之類的東西:http://www.h2database.com/html/grammar.html

讓您瞭解如何查詢應構建

你可以學習現有的庫周圍LINQ(C#):https://code.google.com/p/linqbridge/

甚至檢查出約FQL(Facebook的查詢語言)此鏈接:https://code.google.com/p/mockfacebook/issues/list?q=label:fql

就像你已經知道了,這是一個很難的問題。讓它高效運行將是一個巨大的挑戰。也許可以考慮將所有數據從MySQL和Mongo移動到第三個數據存儲,其中包含所有數據的副本,然後針對這些數據運行查詢?將所有寫入複製到Redis或Elastic Search之類的東西上,然後在其中寫入您的查詢?

無論哪種方式,祝你好運!