用nom解析SQLite B-Tree-Page

问题描述

我试图用标称值解析sqlite BTree页面https://www.sqlite.org/fileformat2.html#btree)。

Nom可以很好地解析两个标头(数据库文件标头和btree标头)以及单元指针数组。我现在停留在如何解析单个单元格上。

据我所知,nom只是线性遍历输入,但是我更需要的是随机访问:从单元格指针数组中获取一个值,跳转页面中的该位置,然后解析它。

这是有效的方法吗?我是否应该将其余的输入内容包装在光标所在的标头之后,并随机访问单元格指针的位置?

我的另一个想法是按升序对单元指针数组进行排序,直到下一个单元开始之前,它只占用尽可能多的字节。这里的问题是每个单元的有效载荷长度变量都包含溢出。我在如何识别该页面上单元有效负载的确切长度方面遇到问题,因为一个空闲块可以跟随一个单元。为此,在开始解析单元块之前,我需要首先解析所有空闲块页面链接列表,以便检索所有空闲块的位置和长度。但是后来我又回到了随机访问的位置。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)