Documentation ¶
Index ¶
Constants ¶
View Source
const ( OPUpdate = `update` OPInsert = `insert` )
MongoDB 的操作
View Source
const ( StatusIdle = int32(0) StatusRunning = int32(1) StatusQuitting = int32(2) )
Variables ¶
This section is empty.
Functions ¶
Types ¶
type Act ¶
type Act struct { OP string StartTime time.Time // 开始的时间 PackTime time.Time // 完成打包时间 FinishTime time.Time // 完成更新时间 Count int // 更新的文档数量 UpdateKeys int // 更新的字段数量 DeleteKeys int // 删除的字段数量 Err error // 发生错误 }
Act MongoDB 数据库最近一次操作的统计数据
type Element ¶
type Element struct {
// contains filtered or unexported fields
}
数据实体加入更新后台任务后的元素对象,包含其在缓存链表中的节点元素
type Entity ¶
type Entity interface { // 数据对应的文档的筛选器,一般是数据对应文档在数据库中的唯一标识 Selector() interface{} // 数据实体的打包方法,用于生成回写数据库的更新数据 Pack() interface{} }
数据实体的抽象结构
type InsertTask ¶
type InsertTask struct {
*Task
}
批量插入后台任务 用于频繁生成且生成后不再发生改变的数据批量插入MongoDB,通常用于处理时序型数据(例如日志数据) 由于数据生成后不再发生改变,打包时只需要将数据实体直接传入,无需加锁也无需序列化
func NewInsertTask ¶
func NewInsertTask(coll *mongo.Collection, db, col string) *InsertTask
构造一个后台插入任务
type UpdateTask ¶
type UpdateTask struct {
*Task
}
批量更新后台任务 用于数据总个数不经常变化但每个数据的内容频繁发生改变的数据批量更新MongoDB 可以是全量更新也可以是增量更新 由于数据频繁发生改变,一般在打包同时将数据序列化,减少数据拷贝的次数及锁的竞争
func NewUpdateTask ¶
func NewUpdateTask(coll *mongo.Collection) *UpdateTask
构造一个数据库更新的后台任务,默认间隔时间 1 分钟
func (*UpdateTask) AddEntity ¶
func (task *UpdateTask) AddEntity(entity Entity) *Element
向后台任务的更新数据实体池中添加一个数据实体对象
func (*UpdateTask) RemoveEntity ¶
func (task *UpdateTask) RemoveEntity(ele *Element)
从后台任务的更新数据实体池中移除一个数据实体对象
Click to show internal directories.
Click to hide internal directories.