2017-02-28 120 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

这种技术将如何影响不同数据库的性能?谢谢。 –