XML节点流压缩方法的评估与分析
1. 批量插入操作
在处理XML数据库时,插入整个XML文档(或多个文档)是一种常见操作。与逐个插入标签相比,将XML文档加载到索引中的速度要快得多。这是因为我们按照标签在流中的存储顺序创建标签。具体操作步骤如下:
1. 顺序读取输入的XML文档。
2. 创建标签。
3. 将标签存储在每个流的末尾。
与普通插入操作不同,在批量插入时无需在流中搜索新标签的确切位置。
2. 压缩流数组
2.1 压缩的优势
流数组压缩有两个主要优势:
1. 减小数据文件大小 :可以减少磁盘访问次数。虽然压缩和解压缩数据会花费额外时间,但只要这些时间小于减少磁盘访问所节省的时间,压缩算法就是可行的。因此,压缩算法应具备快速且高压缩比的特点。
2. 存储可变长度元组 :常规流块中的元组存储在具有固定项大小的数组中,这会浪费大量空间。而流数组的特定特性使其能够高效压缩。
2.2 压缩原理
在流读取过程中,我们不会随机访问一个块中的项。只有在打开流时才可能随机访问块中的元组,但这种操作并不频繁。因此,我们可以将块项编码在字节数组中,并仅记录字节数组中的实际光标位置。光标在打开流时创建,其中包含一个元组,用于存储当前光标位置的编码标签。每个标签在 advance(T)
操作期间仅编码一次, head(T)
操作仅返回分配给光标的编码元组。通过这种方式,我们即使在主内存中也能保持数据压缩,并且每个打开的流只