返回 Skill 列表
extension
分类: 开发与工程无需 API Key

Database

Go语言中数据库交互、连接池和仓库模式的标准。

person作者: jakexiaohubgithub

Golang Database Standards

Priority: P0 (CRITICAL)

Principles

  • Prefer Raw SQL/Builders over ORMs: Go structs map well to SQL. ORMs (GORM) can obscure performance. Recommended: sqlc (type-safe SQL generation).
  • Repository Pattern: Abstract DB access behind interfaces in internal/port/ (e.g., UserRepository).
  • Connection Pooling: Always configure SetMaxOpenConns, SetMaxIdleConns, SetConnMaxLifetime.
  • Transactions: Logic requiring ACID MUST use transactions. Pass context.Context everywhere.

Drivers

  • PostgreSQL: jackc/pgx (Prefer pgx/v5 for performance and features).
  • MySQL: go-sql-driver/mysql.
  • SQLite: mattn/go-sqlite3 or modernc.org/sqlite (pure Go).

Anti-Patterns

  • Global DB Connection: Do not use global var db *sql.DB. Inject it.
  • Ignoring Context: Always use db.QueryContext or db.ExecContext to handle timeouts.
  • Leaking Rows: ALWAYS defer rows.Close() and check rows.Err().

References