简介
IPFS数据导入规范描述了IPFS使用的几种数据导入的机制,这些机制也可以被其他系统使用。 一个导入机制由一个或者多个chunkers和数据格式组成。
介绍
将数据导入到IPFS可以通过几种方式来完成。 对于不同的用例,可以生成不同的数据结构,不同的图拓扑等等。 这些在IPFS的实现中,并不是严格要求的,但绝对可以让其更有用。
这些数据导入原语实际上只是IPLD之上的工具,这意味着可以是通用的,与IPFS本身分开。
实际上,数据导入被分为两部分:
- Layouts ——数据组织和表示的图拓扑结构,其中包括
- 平衡图,更易实现
- trickledag, 为搜索优化的自定义图
- 实时流
- 数据库索引
等等
分配器 —— 应用与每个文件的分配算法,可以是:
- 固定大小的分块
- rabin 指纹识别
- 专用格式分块,需要知道文件格式,并且通常只适用特定的文件(视频、音频、图片等)
- 特殊数据结构分块,像tar,pdf,doc,容器或者虚拟镜像。
目标
有一组基元来消化、分块以及解析文件,所以不同的块可以被替代或者添加不会出现任何问题。
要求
为了实现布局和分配器,需要满足以下要求:
- layout应该暴露编码/解码API,目的是为了转化数据格式为其需要的格式或者转化为原始格式。
- layout 应该包含转换为其格式的清晰的无模式表达
- layout可以利用一个或者多个分配器策略,根据数据格式应用最佳策略
- 分配器
- 无模式 —— 以相同的方式组块任何格式
专用 —— 仅适用与特定的格式
分配器也应该暴露编码/解码API
- 分配器,一旦输入数据,就应该能生成自己的layout以及要添加块的layout
- 导入器是layout和分配器的结合。
架构
1 | ┌───────────┐ ┌──────────┐ |
接口
Splitters
layout
importer
实现
chunker
- go-chunker https://github.com/jbenet/go-chunk
layout
importer