Каков наилучший способ импортировать данные в голочайн из другого источника, например, монго? - PullRequest
0 голосов
/ 23 ноября 2018

MongoDB => Holochain Rust DHT

Как импортировать, если возможно

Если я использую другой бэкэнд приложения, например, mongo, и я правильно настроил и настроил свой holochain,Есть ли способ получить данные из Монго в Holochain?Как бы я это сделал?

Вот вопрос в контексте

1 Ответ

0 голосов
/ 23 ноября 2018

Определенно технологически возможно;Вы можете написать скрипт nodejs, запустить контейнер Holochain с библиотекой holochain-nodejs и импортировать все данные как один агент.Затем, когда пользователи присоединяются к сети на основе HC, они каким-то образом ручаются за свою идентичность и «заявляют» все данные как свои.Вот пример того, как это может выглядеть:

  • Вы (давайте назовем вас 'агент 0') импортируете все данные.
  • Для каждого пользователя вы создаете «привязку» с идентификатором пользователя (я объясню привязки через секунду) и привязываете каждый фрагмент данных к привязке.
  • Вы также записываете хэш пароля этого пользователя как личную запись в своей собственной цепочке источников.Пользователь присоединяется к сети и обязан доказать непрерывность личности.
  • Они делают это с помощью обмена сообщениями между узлами для частной отправки своего идентификатора пользователя и пароля.Вы разрешаете им требовать свою личность, публикуя запись, в которой говорится, что «открытый ключ агента x = идентификатор пользователя».(Вы, вероятно, захотите связать свою запись авторизации с привязкой своего идентификатора пользователя и своим открытым ключом для удобства.)
  • Пользователь собирает все свои данные, запрашивая все ссылки на свою привязку идентификатора пользователя.,
  • Затем пользователь публикует каждый фрагмент своих данных в своей собственной цепочке источников, чтобы «претендовать» на владение ими.
  • Теперь у каждой избыточной копии данных в DHT есть два автора в своих полях метаданных - вы и пользователь, которому фактически принадлежат данные.Одноранговые узлы проверяют эту часть данных, говоря: «Является ли агент 0 уже автором этой части данных?
  • Если да, имеет ли агент 0 опубликованную запись авторизации, в которой говорится, что новому автору этих данных разрешенозаявить / переиздать? "

Проблемы с этим подходом (не непреодолимые):

  • Агент 0 должен быть в сети все время, потому что он никогда не знает, когдановый пользователь собирается зарегистрироваться и попытаться получить свои данные.Агент 0 должен импортировать тонну данных.(Я не думаю, что это было бы слишком сложно по времени)

  • Для реляционных данных, есть проблема "курица и яйцо", как создавать ссылки, если данные не 'не существует.Я имею в виду не связывание данных с данными - это можно сделать при первоначальном импорте - но связывание данных с людьми, у которых сейчас есть открытый ключ, которого еще нет в DHT, потому что они еще не присоединились к сети.Это всегда должно происходить для каждого пользователя после присоединения, и это может создать некоторые проблемы циклической зависимости.

Якоря

Re: якоря, якорь - это просто шаблон, который состоит из базы и ссылки - база - это простая строка, поэтому ее легколюбой, кто знает строку, найдет ее по хешу.Это действует как якорь, чтобы повесить ссылки.Вот почему я рекомендую использовать его для подключения устаревших идентификаторов пользователей к частям контента.Вы можете получить образец исходного кода для реализации шаблона привязки в https://github.com/holochain/mixins/tree/master/anchors (обратите внимание, что это для устаревшей версии Holochain, поэтому она написана на JavaScript).

(ответ предоставлен pauldaoust)

...