Documentation
¶
Overview ¶
Package dbtool 提供独立的数据库调试工具模式, 通过加载 .pb (FileDescriptorSet) 文件发现所有 database_table 消息, 连接 Redis 并以可读方式打印数据。
protobuf.go 不依赖任何具体的 proto 扩展定义(如 database_table_options), 所有表索引的提取逻辑由业务方通过 TableExtractor 接口注入。
Index ¶
- func RegisterDatabaseTableExtractor(extractor TableExtractor)
- func RegisterFlags(flagSet *flag.FlagSet)
- func Start(flagSet *flag.FlagSet)
- type IndexType
- type Querier
- func (q *Querier) BuildRedisKey(index *TableIndex, keyValues []string) string
- func (q *Querier) QueryKL(info *TableInfo, index *TableIndex, keyValues []string, listIndex int64) (string, error)
- func (q *Querier) QueryKV(info *TableInfo, index *TableIndex, keyValues []string) (string, error)
- func (q *Querier) QuerySortedSetByRank(index *TableIndex, keyValues []string, start, stop int64, reverse bool) (string, error)
- func (q *Querier) QuerySortedSetByScore(index *TableIndex, keyValues []string, min, max string, offset, count int64, ...) (string, error)
- func (q *Querier) QuerySortedSetCount(index *TableIndex, keyValues []string) (string, error)
- type Registry
- func (r *Registry) FindTableByShortName(shortName string) *TableInfo
- func (r *Registry) GetAllTables() []*TableInfo
- func (r *Registry) GetTable(fullName string) *TableInfo
- func (r *Registry) GetTableNames() []string
- func (r *Registry) LoadPBFile(pbFilePath string) error
- func (r *Registry) NewDynamicMessage(info *TableInfo) *dynamicpb.Message
- type Shell
- type TableExtractor
- type TableIndex
- type TableInfo
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func RegisterDatabaseTableExtractor ¶
func RegisterDatabaseTableExtractor(extractor TableExtractor)
Types ¶
type Querier ¶
type Querier struct {
// contains filtered or unexported fields
}
Querier 负责从 Redis 读取数据库表数据并格式化输出
func NewQuerier ¶
func NewQuerier(client redis_interface.RedisClient, registry *Registry, recordPrefix string) *Querier
NewQuerier 创建查询器
func (*Querier) BuildRedisKey ¶
func (q *Querier) BuildRedisKey(index *TableIndex, keyValues []string) string
BuildRedisKey 根据 table index 和 key values 构建 Redis key
func (*Querier) QueryKL ¶
func (q *Querier) QueryKL(info *TableInfo, index *TableIndex, keyValues []string, listIndex int64) (string, error)
QueryKL 查询 KL (Key-List) 类型表
func (*Querier) QuerySortedSetByRank ¶
func (q *Querier) QuerySortedSetByRank(index *TableIndex, keyValues []string, start, stop int64, reverse bool) (string, error)
QuerySortedSetByRank 按排名范围查询 SORTED_SET
func (*Querier) QuerySortedSetByScore ¶
func (q *Querier) QuerySortedSetByScore(index *TableIndex, keyValues []string, min, max string, offset, count int64, reverse bool) (string, error)
QuerySortedSetByScore 按分数范围查询 SORTED_SET
func (*Querier) QuerySortedSetCount ¶
func (q *Querier) QuerySortedSetCount(index *TableIndex, keyValues []string) (string, error)
QuerySortedSetCount 查询 SORTED_SET 数据量
type Registry ¶
type Registry struct {
// contains filtered or unexported fields
}
Registry 管理所有发现的数据库表消息
func NewRegistry ¶
func NewRegistry(extractor TableExtractor) *Registry
NewRegistry 创建注册表。extractor 不能为 nil,由业务方提供具体实现。
func (*Registry) FindTableByShortName ¶
FindTableByShortName 按 message 短名查找(不含包名)
func (*Registry) GetAllTables ¶
GetAllTables 返回所有已发现的表信息列表(按 message 名排序)
func (*Registry) GetTableNames ¶
GetTableNames 返回所有表的 message 名(短名,不含包名)
func (*Registry) LoadPBFile ¶
LoadPBFile 加载 .pb (FileDescriptorSet) 文件并发现所有 database_table 消息
type Shell ¶
type Shell struct {
// contains filtered or unexported fields
}
Shell 提供 dbtool 的交互式命令行界面
type TableExtractor ¶
type TableExtractor interface {
// ExtractTableIndexes 检查 message 是否包含数据库表配置,
// 如果有则返回索引列表,否则返回 nil。
ExtractTableIndexes(md protoreflect.MessageDescriptor) []TableIndex
}
TableExtractor 从 protobuf MessageDescriptor 中提取数据库表索引配置的抽象接口。 业务方实现此接口以支持不同的 proto 扩展约定。
type TableIndex ¶
type TableIndex struct {
Name string
Type IndexType
EnableCAS bool
MaxListLength uint32
KeyFields []string
}
TableIndex 描述一个数据库表索引
type TableInfo ¶
type TableInfo struct {
MessageFullName protoreflect.FullName
MessageDesc protoreflect.MessageDescriptor
Indexes []TableIndex
}
TableInfo 描述一个包含数据库表配置的 proto message