This commit is contained in:
Dmitry Zuikov 2023-04-06 19:53:27 +03:00
parent 1c8f6b978b
commit c47c6dee87
1 changed files with 59 additions and 0 deletions

View File

@ -0,0 +1,59 @@
TODO: hbs2-merkle-export
Нужен быстрый импорт/экспорт больших merkle-деревьев.
Делается таким образом:
Экспорт
~~~~~~~
1. Обходим дерево как обычно
2. Пишем блоки в бинарный файл в формате обхода:
|size|data|size|data|...|size|data
3. Первым элементом является корень дерева
(обсуждаемо, возможно, последним)
Импорт
~~~~~~
1. Читаем размер
2. Читаем блок
3. Считаем хэш
4. Пишем блок в сторейдж
5. Возвращаем хэш головы
Быстрая заливка через сокет
~~~~~~~~~~~~~~~~~~~~~~~~~~~
Пир держит специальный локальный сокет
(возможно, MessagingTCP / возможно UNIX)
Клиент заливает этот поток -- пир читает размер,
читает данные, считает хэш, пишет в сторейдж
Всё это даст возможность быстро заливать данные
в сторейдж / ускорит экспорт-импорт больших
репозиториев.
Заливка через hbs2 (через пайп)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
hbs2 export [hash] > ...
cat file | hbs2 import
```
Заливка через hbs2-peer
~~~~~~~~~~~~~~~~~~~~~~~
1. В настройке разрешаем сокет для импорта
2. в hbs2-peer poke hbs2-peer говорит нам этот сокет
3. Пишем файл в данный сокет - хоть неткатом