SuperAPI AI 工具集

golang-scylladb

编程与开发

查看项目

更新于 10-15 20:31

技能介绍

用途:指导在 Go 项目中通过 gocql/gocqlx 集成 ScyllaDB,把驱动配置视为性能契约的一部分,强调单例 Session、预处理查询、显式分页与按查询优先的建模。

主要能力:使用 github.com/scylladb/gocql 驱动(Scylla 分支,token/shard-aware),可选 gocqlx 做结构体映射与 builder;Session 作为进程内共享连接池;Repository 封装 CQL,handler 不直接拼查询。

使用方式:用 gocql.NewCluster 配置 hosts、Keyspace、Consistency(如 LocalQuorum)、TokenAwareHostPolicy 与 RoundRobinHostPolicy、Timeout、ConnectTimeout,再 CreateSession 并 defer Close;每进程一个 Session,通过依赖注入,不按请求创建。查询用预处理语句配合 WithContext、PageSize 与 paging state;写入用参数绑定,避免拼接 CQL;重试需有明确策略,写入应幂等或使用稳定 ID;LWT 仅在需要 compare-and-set 时使用;batch 优先单分区,多分区 batch 不具 SQL 事务原子性;TTL 用 USING TTL。目录上按 access pattern 或聚合拆分 repository,不向 HTTP handler 暴露 *gocql.Session,并把驱动错误映射为领域错误。

适用场景:Go 服务连接 ScyllaDB 的读写路径、分页列表、幂等写入与仓储层设计。

限制与注意:资料未提供具体版本、性能数据或部署细节;需区分 timeout、unavailable、overloaded 并映射到 503/504;指标关注 p99、超时与重试;tracing 仅调试用,不记录敏感负载;测试可用 Testcontainers/本地 Scylla 或仓储 fake。反模式包括按请求建 Session、fmt.Sprintf 拼 CQL、隐藏 ALLOW FILTERING、忽略 context 与分页、默认 Consistency All、把多分区 batch 当 ACID 事务。