2017-02-28 125 views
0

我正在創建一個應該能夠使用不同數據庫來保存數據的項目。我已經實現了DAO模式,但是在使用結構中的ID時遇到問題,例如MongoDB使用BSON,而SQL數據庫使用uint。使用多個數據庫(DAO模式)

你推薦什麼解決方案來實現結構中的ID字段。

我能想到的是創建一個ID對象,其中包含BSBS和uint ID與GetBSON,GetUint方法和一個GetID方法,將BSON或uint編碼爲MD5(或其他編碼)的​​字段,我將使用GetBSON和GetUint方法可以與數據庫和GetID方法協同工作,並通過REST API發送。

回答

0

像這樣的情況最好的辦法是使用通用標識符(UID)有很多方法可以做到這一點,儘管我個人的最愛只是UUID v4。您可以在這裏閱讀完整的UUID規範https://tools.ietf.org/html/rfc4122

只需配置您的SQL表和代碼以確保使用此標識符的唯一性,並且可以使用您希望實現的任何訪問模式輕鬆地在數據庫之間進行查找。

例如

SQL 

ID(Primary Key) | UID (unique) 
     0  | xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx 

MONGO 

{ 
    _id: ObjectID(), 
    uid: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" 
} 

現在只需在uid上查找,您可以在較高級別對數據庫不可知。

+0

這種技術將如何影響不同數據庫的性能?謝謝。 –