DEX概述及实现

简介

IPFS数据导入规范描述了IPFS使用的几种数据导入的机制,这些机制也可以被其他系统使用。 一个导入机制由一个或者多个chunkers和数据格式组成。

介绍

将数据导入到IPFS可以通过几种方式来完成。 对于不同的用例,可以生成不同的数据结构,不同的图拓扑等等。 这些在IPFS的实现中,并不是严格要求的,但绝对可以让其更有用。

这些数据导入原语实际上只是IPLD之上的工具,这意味着可以是通用的,与IPFS本身分开。

实际上,数据导入被分为两部分:

  • Layouts ——数据组织和表示的图拓扑结构,其中包括
  • 平衡图,更易实现
  • trickledag, 为搜索优化的自定义图
  • 实时流
  • 数据库索引
  • 等等

  • 分配器 —— 应用与每个文件的分配算法,可以是:

  • 固定大小的分块
  • rabin 指纹识别
  • 专用格式分块,需要知道文件格式,并且通常只适用特定的文件(视频、音频、图片等)
  • 特殊数据结构分块,像tar,pdf,doc,容器或者虚拟镜像。

目标

有一组基元来消化、分块以及解析文件,所以不同的块可以被替代或者添加不会出现任何问题。

要求

为了实现布局和分配器,需要满足以下要求:

  • layout应该暴露编码/解码API,目的是为了转化数据格式为其需要的格式或者转化为原始格式。
  • layout 应该包含转换为其格式的清晰的无模式表达
  • layout可以利用一个或者多个分配器策略,根据数据格式应用最佳策略
  • 分配器
  • 无模式 —— 以相同的方式组块任何格式
  • 专用 —— 仅适用与特定的格式

  • 分配器也应该暴露编码/解码API

  • 分配器,一旦输入数据,就应该能生成自己的layout以及要添加块的layout
  • 导入器是layout和分配器的结合。

架构

1
2
3
4
5
6
7
8
            ┌───────────┐        ┌──────────┐
┌──────┐ │ │ │ │ ┌───────────────┐
│ DATA │━━━━━▶│ chunker │━━━━━━━▶│ layout │━━━━━━━▶│ DATA formated │
└──────┘ │ │ │ │ └───────────────┘
└───────────┘ └──────────┘
▲ ▲
└─────────────────────────────────┘
Importer

接口

Splitters
layout
importer

实现

chunker

layout
importer

参考