sqlite - 用 nom 解析 SQLite B-Tree-Page
问题描述
我正在尝试使用 nom 解析 SQLite BTree 页面(https://www.sqlite.org/fileformat2.html#btree)。
Nom 可以很好地解析两个标题(数据库文件标题和 btree 标题)以及单元格指针数组。我现在被困在如何解析单个单元格上。
据我了解, nom 只是线性遍历输入,但我更需要的是随机访问:从单元格指针数组中获取一个值,跳转到页面中的那个位置,然后解析它。
这是一种有效的方法吗?我是否应该将剩余的输入包装在光标中的标题之后并随机访问单元格指针位置?
我的另一个想法是按升序对单元格指针数组进行排序,并且只占用尽可能多的字节,直到下一个单元格开始。这里的问题是每个单元格的有效负载长度 varint 都包含溢出。我在如何识别该页面上单元有效负载的确切长度方面遇到问题,因为一个空闲块可以跟随一个单元。为此,我需要首先解析所有空闲块页面的链接列表,以便检索所有空闲块的位置和长度,然后才能开始解析单元块。但后来我又回到了随机访问。
解决方案
推荐阅读
- python - Python csv writer 在每个字母后输出逗号
- javascript - 我的标头在 http post 错误中为 null angular 6
- regex - 用于匹配第二个引号和文件名的正则表达式?
- r - 为不同平台开发R包
- ab-testing - Firebase 实验未将自定义事件显示为目标指标
- php - 当请求来自其他一些重定向时,从 php 重定向到非 php
- opencv - openCV 中是否有优化功能来使用两个引导图像应用联合双边滤波?
- android - 我可以在没有模拟器的情况下在 android studio 中运行 java 吗?
- rally - 如何在 Rally 工具中查找所有“孤立”用户故事
- vba - 如何在所有新的和现有的 Microsoft Word 文档中加载 VBA 脚本?