Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

配置文件

推荐使用配置文件及单例对象来管理和使用数据库操作。

...

数据库配置管理功能使用的是配置管理模块实现,因此同样支持多种数据格式如:toml, yaml, json, xml。默认并且推荐的配置文件数据格式为toml

完整配置

完整的config.toml数据库配置项的数据格式形如下:

...

篇幅有限,这里仅展示了推荐的toml格式的文件示例格式,其他配置文件的数据格式请自行研究。

简化配置(推荐)

为兼容不同的数据库类型,gdb将数据库的各个字段拆分出来单独配置,这样对于各种数据库的对接来说兼容性会很好。但是对于开发者来说看起来配置比较多。针对于项目中使用的已确定的数据库类型的配置,我们可以使用linkinfo属性(名称也可以简化为link)进行配置。如:

...

[database]
    link = "mysql:root:12345678@tcp(127.0.0.1:3306)/test"

不同数据类型对应的linkinfo如下:

数据库类型Linkinfo配置更多参数
mysqlmysql: 账号:密码@tcp(地址:端口)/数据库名称mysql
pgsqlpgsql: user=账号 password=密码 host=地址 port=端口 dbname=数据库名称pq
mssqlmssql: user id=账号;password=密码;server=地址;port=端口;database=数据库名称;encrypt=disablego-mssqldb
sqlitesqlite: 文件绝对路径 (如: /var/lib/db.sqlite3)go-sqlite3
oracleoracle: 账号/密码@地址:端口/数据库名称go-oci8

各数据库类型更详细的linkinfo参数信息请查看对应引擎官网,参考【ORM数据库类型】章节

日志输出配置

gdb支持日志输出,内部使用的是glog.Logger对象实现日志管理,并且可以通过配置文件对日志对象进行配置。默认情况下gdb关闭了DEBUG日志输出,如果需要打开DEBUG信息需要将数据库的debug参数设置为true。以下是为一个配置文件示例:

...

其中database.logger即为gdb的日志配置,当该配置不存在时,将会使用日志组件的默认配置,具体请参考【日志管理】章节。

原生配置(高阶,可选)

以下为数据库底层管理配置介绍,如果您对数据库的底层配置管理比较感兴趣,可继续阅读后续章节。

数据结构

gdb数据库管理模块的内部配置管理数据结构如下:

type Config      map[string]ConfigGroup // 数据库配置对象
type ConfigGroup []ConfigNode           // 数据库分组配置
// 数据库配置项(一个分组配置对应多个配置项)
type ConfigNode  struct {
    Host             string   // 地址
    Port             string   // 端口
    User             string   // 账号
    Pass             string   // 密码
    Name             string   // 数据库名称
    Type             string   // 数据库类型:mysql, sqlite, mssql, pgsql, oracle
    Role             string   // (可选,默认为master)数据库的角色,用于主从操作分离,至少需要有一个master,参数值:master, slave
    Debug            bool     // (可选)开启调试模式
    Charset          string   // (可选,默认为 utf8)编码,默认为 utf8
    Prefix           string   // (可选)表名前缀
    Weight           int      // (可选)用于负载均衡的权重计算,当集群中只有一个节点时,权重没有任何意义
    Linkinfo         string   // (可选)自定义链接信息,当该字段被设置值时,以上链接字段(Host,Port,User,Pass,Name)将失效(该字段是一个扩展功能)
    MaxIdleConnCount int      // (可选)连接池最大闲置的连接数
    MaxOpenConnCount int      // (可选)连接池最大打开的连接数
    MaxConnLifetime  int      // (可选,单位秒)连接对象可重复使用的时间长度
}

...

特别说明,gdb的配置管理最大的特点是,(同一进程中)所有的数据库集群信息都使用同一个配置管理模块进行统一维护,不同业务的数据库集群配置使用不同的分组名称进行配置和获取。

配置方法

这是原生调用gdb模块来配置管理数据库。如果开发者想要自行控制数据库配置管理可以参考以下方法。若无需要可忽略该章节。

...