DHTs are a technique for looking up stuff in P2P systems. Ex of DHTs: Napster, Chord, everything else in this lecture
| Regular Hash Table | Distributed Hash Table |
|---|---|
inserts, deletes, lookups in O(1) with key |
inserts, deletes, lookups in O(1) (not really but they try to be as close as possible) with key |
object being inserted is like a key, value pair |
object being inserted is typically a key, a whole file |
Challenges
Introducers + DNS
| Memory | Lookup Latency | # Messages for lookup | |
|---|---|---|---|
| Napster | O(1) @ client |
||
O(N) @ server |
O(1) |
O(1) |
|
| Gnutella | O(N) |
O(N) |
O(N) |
| **Chord | |||
| Pastry** | O(logN) |
O(logN) |
O(logN) |
| Kelips | O(sqrtN) |
O(1) |
logN files but with Kelips we don’t need to more any files around