Hypertable的automatic Counter
来源:互联网 发布:nginx能干什么 编辑:程序博客网 时间:2024/05/14 06:01
Hypertable的automatic Counter可以实现自动的原子计数器,即将一个Column Family定义为counter,例如:create table foo(f counter)。此时,此Column Family中所有Column Qualifier的Value将为一个64位的无符号整数,并且对其的插入,将自动按照key进行加减,即使前后两次写入的Cell的key和timestamp完全一致(普通才Cell将会产生覆盖操作)。即对于一个定义为counter的Cell,不管写入多少次,客户端查询时将只会看到一个合并之后的结果。
Hypertable写入时,首先将数据写入内存中的CellCache,待CellCache达到一个CellStore文件大小后,才会刷入磁盘形成一个持久化的CellStore文件。刷入之前,相同key的Cell将会在内存中累加,最终写入CellStore文件中只有一份。但是后续如果出现相同key的Cell的话,由于HDFS不能被重写,只能将其写入新的CellStore文件中。查询时,会将来自不同CellStore文件中相同key的Cell在内存中累加后显示为一条结果。但是磁盘上此时已经保存了一个Cell的多个版本,这时也会看到表磁盘空间增长较快。同一个Cell的不同版本将在Hypertable的major compaction之后被合并,即将累加的结果保留为最新版本,释放其余版本的磁盘空间。
我们一般会看到磁盘增长的过程,却看不到磁盘回收之后的效果,这是因为Hypertable并没有触发major compaction(Hypertable目前没有定时触发major compaction的机制)。通过手动触发major compaction,可以明显地看到所占用磁盘空间的下降,并且确定compaction之后多个版本已经合并为一个最新的版本。
最终结论:一个定义为Counter的Cell,不管入库程序写入多少次,在HDFS上存储时,“最终”将只占用一个Cell的存储空间。
- Hypertable的automatic Counter
- 让旧工程支持iOS5 新的Automatic Reference Counter 语法
- 让旧工程支持iOS5 新的Automatic Reference Counter 语法
- Hypertable的升级安装
- hypertable的cellcache
- Hypertable
- Hypertable
- Hypertable 简介 (Hypertable一个 C++ 的Bigtable开源实现)
- hypertable的配置与安装
- hypertable的application queue,非常好
- Hypertable中Hyperspace的Failover
- Hypertable运维中遇到的问题
- css的counter-increment和counter-reset
- Performance Counter的使用
- Performance Counter的使用
- Python Counter() 的实现
- counter
- counter
- Android中有关Handler的总结
- python satic method
- javascript中像.net中一样用StringBuilder
- sort()和qsort()
- Day 15 list(frequency 4)
- Hypertable的automatic Counter
- 变形
- ireport导出各种格式(pdf,excel,word,html,print)
- 春节或将成为短信唯一的救命稻草?
- Android 获取系统和SdCard空间信息
- 移动市场的下一战
- 类的const成员函数
- SendMessage
- PCI小结