使用多个数据库(DAO模式)

时间:2017-02-28 17:27:18

标签: go dao

我正在创建一个项目,该项目应该能够使用不同的数据库来保持数据的持久性。我已经实现了DAO模式,但是在结构中使用ID时遇到问题,因为例如MongoDB使用BSON而SQL数据库使用uint。

您建议在结构中实现ID字段的解决方案。

我能想到的是创建一个ID对象,其中包含BSON和uint ID的字段,包括GetBSON,GetUint方法和一个GetID方法,它编码BSON或uint到MD5(或其他一些编码)我会使用GetBSON和GetUint方法一起使用数据库和GetID方法来处理应用程序以及通过REST API发送它。

1 个答案:

答案 0 :(得分:0)

像这样的情况你最好的选择是使用通用标识符(UID)有很多方法可以做到这一点,虽然我个人最喜欢的只是UUID v4。您可以在此处阅读完整的UUID规范https://tools.ietf.org/html/rfc4122

只需配置您的SQL表和代码,以确保使用此标识符的唯一性,您可以使用您希望实现的任何访问模式轻松地在数据库之间进行查找。

e.g。

SQL

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

MONGO

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

现在只在uid上查找,你可以在更高级别与数据库无关。