Поиск в DHT

Тема в разделе "WASM.HEAP", создана пользователем grouzeene, 22 сен 2010.

  1. grouzeene

    grouzeene New Member

    Публикаций:
    0
    Регистрация:
    3 сен 2010
    Сообщения:
    20
    Народ.
    Молю, пните меня в сторону публикаций, статей по теме алгоритмов поиска в распределённой хеш-таблицы. Я уже весь мозг себе съел, а задачу решать как-то надо.
    Велосипед изобретать тоже не хочется.

    Хотя, нет: применительно к моей задаче лучше построить велосипедный завод.


    Задача такая:
    Создать DHT для N узлов, где N >=255
    Создать быстрый механизм поиска N узла.

    фикс
     
  2. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    grouzeene
    Во втором издании распределённых систем Таненбаума имеется глава.
     
  3. grouzeene

    grouzeene New Member

    Публикаций:
    0
    Регистрация:
    3 сен 2010
    Сообщения:
    20
    Взял книгу, пролистал.
    Обиделся на себя, что раньше не внимательно ее читал, но тем не менее про Distributed хеш таблицы там полезного для меня нету.
    Буду думать дальше.
     
  4. grouzeene

    grouzeene New Member

    Публикаций:
    0
    Регистрация:
    3 сен 2010
    Сообщения:
    20
    Я нарисовал картинку, которая показывает структуру.

    Как найти синий ключ с красным значением?

    Красными линиями показано, что узлы могут знать, как быстрее найти соседа.
     
  5. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    http://en.wikipedia.org/wiki/Distributed_hash_table
     
  6. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    grouzeene
    Сформулируй задачу получше:
    что такое узлы в твоей задче?
    что о них изначально известно ищущему?
    приведи пример их любого (пусть неоптимального) опроса.
    поведение узлов можно менять или оно задано кем-то другим?
    если задано другим, то поподробнее - на какие вопросы может ответить узел?
    критерий окончания поиска - "в узле найдено требуемое значение" или какой-то другой?
     
  7. grouzeene

    grouzeene New Member

    Публикаций:
    0
    Регистрация:
    3 сен 2010
    Сообщения:
    20
    Отошёл временно от задачи. Вернулся.
    Y_Mur

    Узел - некоторая сущность с набором данных, имеющая уникальный идентификатор. Среди этих данных могут быть указатели на следующую сущность, причем не на одну, а может и на несколько, в которых целесообразнее искать.

    Ищущему изначально известен UID одного узла. От него и начинаем искать.
    Поведение узлов статично, то есть они тупо содержат данные и знают о своих соседях.

    Критерий - false/true: Найден нужный узел с нужным значением.

    Я читал Википедию про DHT, даже скачал и начал ковырять Kademlia. Но там еще более тёмный лес.
    Сейчас сижу курю разные исходники, но пока не просветлел
    самому хотелось бы хоть пинок под зад получить в нужную сторону. У меня проект висит из-за этого, а я с поском встрял. Ну не могу додуматься, как пройтись по узлам
     
  8. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    grouzeene
    Я что-то не понимаю, что конкретно полезное Вам там нужно. Там полностью описан и даже проиллюстрирован lookup.
     
  9. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    grouzeene
    Правильная постановка задачи - это больше чем половина решения ;)
    Так в твоей задаче узел это не комп, а просто кусок памяти с данными? - тогда как вообще получилось что у тебя нет их полного перечня?
    Или это всё таки компы, для общения с которыми нужно знать их UID, а остальные UIDы получать из общения с известными? Тогда если узлы статичны (не могут сами с течением времени узнавать про соседей) то соглаcно твоей диаграмме в #4 - ответ _никак_, поскольку про узел с красной точкой не знает ни один из соседей :))
    Или всё-таки есть некий "центр" обратившись к которому ты можешь получить полный перечень UIDов завязанных на него узлов, а взаимное знание узлов друг о друге это дополнительная информация?
    И в любом случае если критерии по которым узлы знают о соседях и взаимосвязь этих критериев с искомым значением неизвестны, то единственный вариант поиска - тупой перебор, а единственно возможная оптимизация - избегать повторного обращения к уже опрошенному узлу.