【Go实战】Gin-Vue-Admin对db-list的疑惑

Gin-Vue-Admin在线demo展示页面截图

背景

Gin-Vue-Admin是开源的全栈开发平台,可以担任企业内部后台管理的职责。官网地址是:gin-vue-admin | GVA 文档站。上图为在线demo展示页面。

它的后台使用Golang(The Go Programming Language (google.cn)),基于开源的Web框架Gin(Gin Web Framework (gin-gonic.com))。

它的前台使用渐进式JavaScript框架Vue(Introduction | Vue.js (vuejs.org))。

正文

使用Gin-Vue-Admin一段时间了,对于用户配置中数据库的配置充满了疑惑。看图说话:

config.yaml的一部分

如图所示,config.yaml配置给出pgsql(也有mysql等其它数据库配置段),又给出了db-list来配置数据库,我很奇怪为啥数据库要配置在多个地方?在互联网找不到相关资料之后,我打算还是从代码的层面来了解。

首先看看Gin-Vue-Admin的后台main函数,第一行调用了core.Viper()。Viper即是第三方Go配置管理的解决方案GitHub – spf13/viper: Go configuration with fangs,支持JSON, TOML, YAML, HCL, envfile 和 Java 属性配置文件。

上图所示,Viper内部,会使用internal.ConfigDefaultFile,也就是config.yaml文件作为配置文件。后面会通过Viper的方法将config.yaml中的信息读入全局的变量GVA_CONFIG中,也即是config.Server结构体。

config.Server结构体为:

可以看到该后台服务支持mysql、pgsql、oracle、sqlite等数据库,也支持DBList,也就是一个数据库列表。

其中,指定的几个数据库只是一个GeneralDB包装,如Mysql、Pgsql。它们只是Dsn函数的实现不同。

而SpecializedDB,在GeneralDB的基础上,还加上了Disable、Type、AliasName三个变量。用于区分是什么数据库。

从中,我们就能得知,这些数据库结构,都是GeneralDB,也对应于config.yaml中数据库的配置。

也就是说,它们的作用没什么不同,都是用于和数据库进行连接。通常我们做开发,指定一个数据库就够用了,配置指定数据库的结构体即可。那么,为什么要设置多个数据库连接呢?

我考虑到有时,我们对安全性有更高的要求。

比如,Gin-Vue-Admin使用某个数据库,对该数据库进行CRUD。在此基础上,可能还有读取其它数据库的需求,但只需要查询,不需要修改。为了防止这样的数据库被更改,导致异常,我们就需要使用具有不同权限的角色访问数据库,这样在一定程度上可以起到安全的作用。

相关推荐

  1. Go to do list

    2024-07-23 06:06:02       50 阅读
  2. gin-vue-admin整合 ElasticSearch

    2024-07-23 06:06:02       26 阅读
  3. go-gin中session实现redis前缀和db库选择+单点登录

    2024-07-23 06:06:02       21 阅读
  4. go Gin项目实战

    2024-07-23 06:06:02       29 阅读
  5. go-zero配置DBredis缓存

    2024-07-23 06:06:02       54 阅读
  6. node实现git仓库管理

    2024-07-23 06:06:02       49 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-23 06:06:02       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-23 06:06:02       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-23 06:06:02       45 阅读
  4. Python语言-面向对象

    2024-07-23 06:06:02       55 阅读

热门阅读

  1. 动态内存管理

    2024-07-23 06:06:02       11 阅读
  2. linux协议栈之FDB表

    2024-07-23 06:06:02       14 阅读
  3. 记录贴-VUE相关

    2024-07-23 06:06:02       17 阅读
  4. ios CCUIImage.m

    2024-07-23 06:06:02       16 阅读
  5. unity和安卓的so文件联合使用

    2024-07-23 06:06:02       16 阅读
  6. 智能马桶的工作原理

    2024-07-23 06:06:02       15 阅读
  7. gitlab查询分支API显示不全,只有20个问题

    2024-07-23 06:06:02       14 阅读
  8. Linux Vim教程(四):文本编辑与修改技巧

    2024-07-23 06:06:02       14 阅读
  9. Esxi 上的 CentOS 7.6 系统中搭建本地 Yum 源

    2024-07-23 06:06:02       16 阅读
  10. Android 多用户问题

    2024-07-23 06:06:02       18 阅读
  11. QT 4.8版本的Ubuntu2004编译错误的解决方案

    2024-07-23 06:06:02       15 阅读
  12. 算法1--双指针

    2024-07-23 06:06:02       14 阅读