手动数据库分片
// 手动分片逻辑示例 func getShardDB(userID int) *gorm.DB {dbIndex := userID % 4dsn := fmt.Sprintf("user:pwd@tcp(db-%d:3306)/user_db_%d", dbIndex, dbIndex)db, _ := gorm.Open(mysql.Open(dsn), &gorm.Config{})return db.Table(fmt.Sprintf("users_%d", userID/4%4)) }
插入操作使用集中式生成分片ID处理,如SNOWFLAKE雪片算法,生成非集中不自增ID