Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Go 使用多个数据库(DAO模式)_Go_Dao - Fatal编程技术网

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

Go 使用多个数据库(DAO模式),go,dao,Go,Dao,我正在创建一个项目,它应该能够使用不同的数据库来持久化数据。我已经实现了一个DAO模式,但在处理结构中的ID时遇到了一个问题,因为例如MongoDB使用BSON,而SQL数据库使用uint 您建议在结构中实现ID字段的解决方案是什么 我能想到的是创建一个ID对象,该对象包含BSON和uint ID的字段,其中包含GetBSON、GetUint方法和将BSON或uint编码为MD5(或其他编码)的GetID方法我会使用GetBSON和GetUint方法来处理数据库,使用GetID方法来处理应用程序

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

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


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

在这种情况下,最好使用通用标识符(UID)。有很多方法可以做到这一点,尽管我个人最喜欢的是UUID v4。您可以在这里阅读完整的UUID规范

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

e、 g


现在只需查找uid,您就可以在更高的级别上不依赖数据库。

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

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

MONGO

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