我在我的应用程序服务器中使用golang,并将gorm用作ORM。我正在使用postgresql作为Google Cloud sql中的数据库。
我为应用程序服务器正在使用的postgres创建了2个只读副本。
以前,我使用了node.js并进行了序列化,在那里,我可以将只读副本定义为
library(data.table)
dt <- data.table(matrix(rnorm(1000), ncol = 100))
melt(dt, measure.vars = 1:ncol(dt))
#> variable value
#> 1: V1 -0.636795202
#> 2: V1 0.726632131
#> 3: V1 -1.657745472
#> 4: V1 -0.011510918
#> 5: V1 0.005966138
#> ---
#> 996: V100 0.698911628
#> 997: V100 -0.612117248
#> 998: V100 -0.738224511
#> 999: V100 1.616901156
#> 1000: V100 -1.673199333
但是对于gorm,我看不到有任何方法可以做到(在文档中)。
因此,有没有一种方法可以定义只读副本,而gorm会处理它。如果没有,此用例的最佳实践是什么?
答案 0 :(得分:0)
现在Gorm V2已经淘汰了,您可以仅针对此用例使用dbresolver
插件。复制您作为示例给出的内容:
import (
"gorm.io/gorm"
"gorm.io/plugin/dbresolver"
"gorm.io/driver/postgres"
)
db, err := gorm.Open(postgres.Open("host=localhost user=root"), &gorm.Config{})
db.Use(dbresolver.Register(dbresolver.Config{
Replicas: []gorm.Dialector{
postgres.Open("host=8.8.8.8 user=anotherusernamethanroot password=lolcats!"),
postgres.Open("host=localhost user=root"),
},
Policy: dbresolver.RandomPolicy{},
})
查看文档:{{3}}