Note: File Recipe Compression in Data Deduplication Systems
Zero-Chunk Suppression
检测全0数据块,将其用预先计算的自身的指纹信息代替。
Detect zero chunks and replace them with a special code word by pre-calculating the fingerprint of the chunk filled with zeros。
Chunk Index Page-oriented Approach
通过数据块索引来分配编码,假设使用基于分页的磁盘的哈希表来实现块索引,并且指纹被散列到磁盘的页上。
编码由两部分组成:前缀和后缀。
- 前缀:页码。
- 后缀:每个后缀在该页中保持唯一性的前提下用最少的比特表示。
通过前缀与后缀的配合为每个指纹保存唯一的编号。
(编码与字节边界对齐以允许更快的处理。)

指纹被散列到索引页面,每个指纹将该页作为编码的前缀。
如图例子:完整的编码是\(17001||9\)。
Statistical Approaches
变长编码方法
先计算出每个chunk的指纹的熵,通过变长编码为每个chunk分配唯一的编码。(类似霍夫曼编码)
\[h=-log_2 \left(\frac{usage count of h}{total chunk usage}\right) \]
特殊之处:
- file recipe的大小是\(2^{160}\)而不是\(2^8\).因此在内存中无法创建完整霍夫曼树。
- 数据重删需要支持随机访问
使用数据块的偏移量来进行file recipe的压缩:如果数据块的熵低于某个阈值,则将一个固定大小的编码分配给其指纹。
由于熵无法预先确定,因此需要在进行一个或多个备份后才可以确定,第一个备份的指纹必须无修改的保存(没有编码可以分配)。
编码一旦分配则不撤销,当某时间点发现某个编码访问量低于阈值,则将该编码回收,然后新到的数据块再次保存完整指纹信息(除了数据块索引中的使用计数器之外,还可以维护单独的编码使用计数器)。对于大多数数据块,熵几乎与由面向页面的方法分配的编码的长度相同。因此,不应该将一个基于熵的编码分配给多个块的一小部分。
统计字典方法
重要的假设:有可能估计一个块的整体概率。
经常收集对数据块的使用次数以用于垃圾回收,通过将该使用计数与总参考数相关联,可以计算数据块的概率。
统计字典方法使用数据块指纹引用的概率,而不使用这些的内容信息(order-0统计量)构建编码。
order-1统计量查看前一个数据块,并根据该环境信息计算指纹的概率。
order-1模型的熵为我们提供了一个理论下限。在ENG数据集中,使用order-1统计模型的熵为0.13bit。其他数据集中的统计数据类似(HOME1中为0.14bit,HOME2为0.21bit)。
如果先前的数据块指纹已知,那么下一个指纹的不确定度很低。在File recipe的实际压缩方案中可以提供更显著的压缩。
然而,存储order-1模型的信息随数据块数量二次增长,因此在实际的重复数据删除系统中不可用。
Misra-Gries
使用数据流算法Misra-Gries来近似指纹对频率的检测。因此,我们将k指纹(或编码)存储在数据块索引条目中。参数k表明了指纹在内存中频繁交换的概率。
Note: File Recipe Compression in Data Deduplication Systems的更多相关文章
- 论文阅读 Prefetch-aware fingerprint cache management for data deduplication systems
论文链接 https://link.springer.com/article/10.1007/s11704-017-7119-0 这篇论文试图解决的问题是在cache 环节之前,prefetch-ca ...
- Data Deduplication Workflow Part 1
Data deduplication provides a new approach to store data and eliminate duplicate data in chunk level ...
- salt-stack "No Top file or external nodes data matches found"解决
salt-stack在配置分组时提示如下信息: No Top file or external nodes data matches found 后来在官网上找到如下提示,意思是需要重启master服 ...
- Could not load file or assembly 'MySql.Data.CF,
Could not load file or assembly 'MySql.Data.CF, Version=6.4.4.0, Culture=neutral, PublicKeyToken=c56 ...
- Could not load file or assembly 'System.Data.SQLite' or one of its dependencies
试图加载格式不正确的程 异常类型 异常消息Could not load file or assembly 'System.Data.SQLite' or one of its dependencies ...
- WebViewer报错Error loading document: Invalid XOD file: Zip end header data is wrong size!
错误:Error loading document: Invalid XOD file: Zip end header data is wrong size! 解决:https://groups.go ...
- SQLite 解决:Could not load file or assembly 'System.Data.SQLite ... 试图加载格式不正确的程序/or one of its dependencies. 找不到指定的模块。
Could not load file or assembly 'System.Data.SQLite.dll' or one of its dependencies. 找不到指定的模块. 错误提示 ...
- Eclipse的DDMS File Explorer无法进入data目录解决方案
进入data目录需要root权限.所以,你的手机要有root才可以.然后做以下步骤就可以了 1.cmd进入platform-tools目录 2.adb shell 3.su(这里要看手机有没有请求ro ...
- mysql的错误:The server quit without updating PID file /usr/local/mysql/data/door.pid).
mysql错误解决: 先 参考:http://www.jb51.net/article/48625.htm 参考第四条: mysql在启动时没有指定配置文件时会使用/etc/my.cnf配置文件,请打 ...
随机推荐
- CreateProcess 执行CMD命令,并重定向输出
1. 参考网址:http://www.cnblogs.com/cnarg/archive/2011/02/20/1959292.html function TfrmMain.ExecDosCmd :b ...
- NTFS文件系统的主要优点体现在以下三个方面
1.NFTS格式具有用户权限的控制管理功能 2.NTFS有更好的压缩率 3.NTFS具有日志功能,可以提高系统安全性
- C++(三)— 二维容器
1.二维bool向量 vector<vector<bool>> dp(len, vector<bool>(len, false));
- python 面试题(一)
1 Python的函数参数传递 看两个例子: Python 1 2 3 4 5 a = 1 def fun(a): a = 2 fun(a) print a # 1 Python ...
- 利用simhash计算文本相似度
摘自:http://www.programcreek.com/java-api-examples/index.php?source_dir=textmining-master/src/com/gta/ ...
- kylin_学习_00_资源帖
一.官方资料 1.官方文档 kylin官方文档(中文) 2.kylin的安装 Hadoop 环境搭建 kylin安装向导 二.参考资料 1.分布式大数据多维分析(OLAP)引擎Apache Kylin ...
- Python TCP通信网络编程
最近在看廖雪峰老师的基础教程(http://www.liaoxuefeng.com/),今天实现了一下简单Python的Socket的网络编程. 1. Socket网络编程 Socket是网络编程的一 ...
- RouterOS(ROS)简单限速/单IP限速脚
暂无评论 有时企业环境,或个人使用环境需要针对不同IP设置较多条不同限速,可以使用以下脚本批量处理后,再针对性的修改. *脚本说明:“2 to 254”定义要设置受限IP的起始,后面“192.168. ...
- do-while-zero 结构在宏定义中的应用
do while 语句在使用宏定义时是一个有用的技巧,说明如下: 假设有这样一个宏定义 #define macro(condition) / if(condition) dosomething() 现 ...
- ACM学习历程—HDU5423 Rikka with Tree(搜索)
Problem Description As we know, Rikka is poor at math. Yuta is worrying about this situation, so he ...