数据库概述 #
一、数据库选择 #
1.1 常用数据库 #
| 数据库 | 类型 | 适用场景 |
|---|---|---|
| PostgreSQL | 关系型 | 复杂业务 |
| MySQL | 关系型 | Web应用 |
| MongoDB | 文档型 | 灵活数据 |
| Redis | 缓存 | 高性能缓存 |
1.2 ORM选择 #
| ORM | 说明 |
|---|---|
| GORM | 功能强大的ORM |
| sqlx | 轻量级SQL扩展 |
| ent | Facebook ORM |
| mongo-driver | MongoDB官方驱动 |
二、GORM集成 #
2.1 安装 #
bash
go get -u gorm.io/gorm
go get -u gorm.io/driver/postgres
go get -u gorm.io/driver/mysql
2.2 PostgreSQL连接 #
go
package database
import (
"gorm.io/driver/postgres"
"gorm.io/gorm"
)
func ConnectPostgres(dsn string) (*gorm.DB, error) {
return gorm.Open(postgres.Open(dsn), &gorm.Config{})
}
// 使用
dsn := "host=localhost user=postgres password=secret dbname=myapp port=5432"
db, err := ConnectPostgres(dsn)
2.3 MySQL连接 #
go
import (
"gorm.io/driver/mysql"
"gorm.io/gorm"
)
func ConnectMySQL(dsn string) (*gorm.DB, error) {
return gorm.Open(mysql.Open(dsn), &gorm.Config{})
}
// 使用
dsn := "user:password@tcp(localhost:3306)/myapp?charset=utf8mb4&parseTime=True"
db, err := ConnectMySQL(dsn)
三、Redis集成 #
3.1 安装 #
bash
go get github.com/redis/go-redis/v9
3.2 连接Redis #
go
package database
import (
"github.com/redis/go-redis/v9"
)
func ConnectRedis(addr string) *redis.Client {
return redis.NewClient(&redis.Options{
Addr: addr,
Password: "",
DB: 0,
})
}
// 使用
rdb := ConnectRedis("localhost:6379")
四、MongoDB集成 #
4.1 安装 #
bash
go get go.mongodb.org/mongo-driver/mongo
4.2 连接MongoDB #
go
package database
import (
"context"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
)
func ConnectMongo(uri string) (*mongo.Client, error) {
return mongo.Connect(context.Background(), options.Client().ApplyURI(uri))
}
// 使用
client, err := ConnectMongo("mongodb://localhost:27017")
五、数据库配置 #
5.1 配置结构 #
go
type DatabaseConfig struct {
Host string
Port int
User string
Password string
DBName string
SSLMode string
}
func Connect(cfg DatabaseConfig) (*gorm.DB, error) {
dsn := fmt.Sprintf(
"host=%s port=%d user=%s password=%s dbname=%s sslmode=%s",
cfg.Host, cfg.Port, cfg.User, cfg.Password, cfg.DBName, cfg.SSLMode,
)
return gorm.Open(postgres.Open(dsn), &gorm.Config{})
}
六、总结 #
6.1 数据库选择建议 #
| 场景 | 推荐 |
|---|---|
| 复杂业务 | PostgreSQL + GORM |
| 简单Web应用 | MySQL + GORM |
| 灵活数据 | MongoDB |
| 高性能缓存 | Redis |
6.2 下一步 #
现在你已经了解了数据库概述,接下来让我们学习 GORM集成,深入了解GORM的使用!
最后更新:2026-03-28