Я взял основную идею о DHT из вики:
Данные хранилища:
В сети DHT каждый узел отвечает за определенный диапазон key-space
.Чтобы сохранить файл в DHT, сначала hash the file's name to get the file's key
;во-вторых, send a message put(key, file-content) to any node of the DHT
, сообщение будет передано на узел, который отвечает за key
, и этот узел будет хранить пару (key, file-content)
.
Получить данные:
При получении файла из DHT, сначала, хэшируйте имя файла, чтобы получить key
;второй отправить сообщение get(key)
на любой узел, ретранслировать сообщение до ...
Вопросы:
- Чтобы сохранить файл, мы можем хэшироватьимя файла, чтобы получить его
key
, но вики говорит:
В реальном мире ключ k может быть хешем содержимого файла, а не хешем имени файла, чтобы обеспечитьадресно-ориентированное хранилище, чтобы переименование файла не мешало пользователям его найти.
Хэш-содержимое файла?Как мне узнать содержимое файла ?Если я уже знаю содержимое файла, то ПОЧЕМУ я буду искать его в DHT?
Согласно вики, каждый участвующий узел сэкономит место для хранения файлов.Значит ли это, что, если я участвую в DHT, мне нужно spare 10G disk space
, чтобы сохранить те файлы, за которые я key falls into the specific key-space
отвечаю?
Если действительно я должен сэкономитьместа на диске для хранения этих файлов, тогда как мне хранить эти (key, file-content)
на диске?Я имею в виду, должен ли файл быть вписан в B-tree
или что-то на моем диске?
Когда происходит запрос, как отвечает мой компьютер?Я предполагаю, во-первых, проверить queried key
, если в моем key-space
, а затем найти corresponding file
на моем диске.верно?