Distributed Hash in Ruby?

Hi,

Has anyone ever implemented a distributed hash protool (like e.g. Chord
http://www.pdos.lcs.mit.edu/chord/) in Ruby? I could not find anything
like this in RAA.

martinus

I have, using Distributed Ruby. It's more or less complete, but
probably has a few bugs here and there, but it seems to work properly
in my limited tests. Maybe I ought to make a RubyForge project for
this soon... If you're interested in playing with it I can send you
such code as I have at the moment.

···

On Thu, 27 Jan 2005 23:30:55 +0900, martinus <martin.ankerl@gmail.com> wrote:

Hi,

Has anyone ever implemented a distributed hash protool (like e.g. Chord
http://www.pdos.lcs.mit.edu/chord/\) in Ruby? I could not find anything
like this in RAA.

Ruby has a Linda-like TupleSpace built-in from Rinda.

While I don't have an explicit example, one is used as part of the example code here:

http://segment7.net/projects/ruby/drb/rinda/ringserver.html

PGP.sig (186 Bytes)

···

On 27 Jan 2005, at 06:30, martinus wrote:

Hi,

Has anyone ever implemented a distributed hash protool (like e.g. Chord
http://www.pdos.lcs.mit.edu/chord/\) in Ruby? I could not find anything
like this in RAA.

--
Eric Hodel - drbrain@segment7.net - http://segment7.net
FEC2 57F1 D465 EB15 5D6E 7C11 332A 551C 796C 9F04

A rubyforge project would be nice. I do not need it right now, but at
some point in the not-so-far future :slight_smile:

martinus

Eric Hodel ha scritto:

Hi,

Has anyone ever implemented a distributed hash protool (like e.g. Chord
http://www.pdos.lcs.mit.edu/chord/\) in Ruby? I could not find anything
like this in RAA.

Ruby has a Linda-like TupleSpace built-in from Rinda.

While I don't have an explicit example, one is used as part of the example code here:

http://segment7.net/projects/ruby/drb/rinda/ringserver.html

I think what he's looking for is quite different from TupleSpaces.
I think it is more similar to overnet/emule-kademlia (actually I think thos were built on chord's concepts).

the idea is to be able to access a file/object based on a standard hash withouth the need to traverse a complex peer graph, using a distributed partially replicated hash table.
Related to this, I guess building bindings for the emule base libraries would be the path of less resistence.

···

On 27 Jan 2005, at 06:30, martinus wrote:

Protocols like chord are full distributed networsk with no servers,
which an be used for discovery. Something like a distributed DNS.
That's exactly what I want, I do not want to write a download
application.

martinus

martinus ha scritto:

Protocols like chord are full distributed networsk with no servers,
which an be used for discovery. Something like a distributed DNS.
That's exactly what I want, I do not want to write a download
application.

I understood this, but since the kademlia protocol implemented in emule allows you to do this, I thought it could be helpful. You can safely ignore the download part, and still use the object discovery stuff.
Btw, if you just care about a LAN you can use Rinda::Ring
Just my two cents.