I know how data is (in theory) stored in a DHT. However, I am uncertain as to how one might go about updating a piece of data associated with a key. Is this possible? Also, how are conflicts handled in a DHT.
How to update entries in a DHT
1.2k Views Asked by nykac At
2
There are 2 best solutions below
0
Travis
On
It is possible. I've researched pastrys dht. It is possible to alter data stored under a given key but pastrys developers advise against it as it can have nasty side effects, mainly with replications of the altered piece of data which is stored on other nodes. (see the FAQ on freepastrys home page).
I'm not sure about how it would effect other dhts such as chord or tapestry however.
With regard to conflicts, again I have only experience with pastry. If you try to store data under a key that's already in use an exception will be thrown.
Related Questions in P2P
- A P2P application with Python
- Peer to Peer Communication without Server in iPhone
- Support P2P in Netty or Mina?
- Native Real Time Communication alternatives to WebRTC
- difference between p2p and client-server node design
- Implementing XOR-MAPPED-ADDRESS attribute on STUN server
- RTMFP / peer-to-peer over public Internet
- MQTT as a centralized communication protocol
- Android - Sending intent over mobile network
- ionic client to server sync and client to client sync
- Can you connect UWP apps peer-to-peer?
- Does the "holy trinity" (Ethereum, Swarm and Whisper) support multimedia streaming?
- How is SIP scaled for high load?
- JXTA on internet
- Cherry pick peers using Rasterbar libtorrent in Python
Related Questions in KEY-VALUE
- Angular - show key match with value
- How can I perform search on a lookup table without loading it in memory?
- Does Consul persist the Key Value store?
- functioning of (== ) in terms of hashCode
- How to update one element of an array according to a condition on another element?
- How to parse multi line value from config file
- Search for key in Map when the values are in ArrayList
- Pyspark Array Key,Value
- Join master table's data to a key/value table data in one SELECT
- How to push an object into an array which is the value in a key/value pair in php
- Matching JSON keys to class fields inexactly
- C++, How to use maps for holding multiple integer values
- Add a new list item to a Key value database
- Cassandra is Column oriented or key value store?
- Updating Hash value in Ruby
Related Questions in DATASTORE
- Boltdb-key-Value Data Store purely in Go
- datapusher issue to upload a CSV into datastore
- What is the most persistent HTML5 data storage?
- BlobStore - display photo error
- Are there any data stores that can handle large number of complex lookup ids
- How to save multiple small integers in one integer via bit shifting in Objective C
- GAE datastore index not getting created
- NDB Query for Key or ID of StructuredProperty
- rails 4.1 / active record data_store hash not being initialized/serialized
- Unit test Dropbox Datastore API on Android
- Powerbuilder DataStore fail only when deployed as EXE (but succeeds as DataWindow)
- What’s the difference between a dataStore and a database?
- Sync completion call back in dropbox datastore api
- Data store fast querying over combinations of key values
- Can i use FileDataStore in AEM 6.1 with Apache Jackrabbit Oak 1.2.18 in TARMK
Related Questions in DHT
- Implementing find node on torrent kademlia routing table
- Can applications coexist within the same DHT?
- How to find nodes with exact info_hash in Bittorrent DHT?
- How does a bittorent peer accquires info dictionary when magnet URI is provided?
- the make.sh for fastdht not work.When running it shows "nm: /usr/lib/libc_r.so:no such file"
- Consistent Hashing: what about rehashing?
- How does DHT torrent indexing sites scrape infoHashes efficiently?
- 'dht' does not name a type
- Similar to hash values but something that returns an int
- Chord protocol. Distribuited Hash Table (DHT). Peer to peer. (P2P)
- Algorithms for building a peer to peer search engine with distributed database
- Order-keeping queues that can be paused
- IPFS not announcing CIDs on indirect peers and unable to get through cmd as CID is not propagated using DHT
- Libtorrent Logging through python bindings, possible?
- DHT routing library for Java
Related Questions in KADEMLIA
- Implementing find node on torrent kademlia routing table
- Can applications coexist within the same DHT?
- How to implement Kademlia DHT
- Why does raw_input not prompt correctly?
- Crawl DHT of a private network from outside
- Better understanding Kademlia's XOR Integer Metric
- How Distributed Hash Table in IPFS and Bittorrent prevent abuse?
- How to update entries in a DHT
- BitTorrent, DHT, BEP42, Calculating my NodeId
- DHT InfoHash Lookup sequence. PeerID vs InfoHash
- How does the routing table work in mainline dht?
- receiving unreadable text while trying to bencode a "find_node" query
- What is the relation between a nodeId and a key in distributed hash tables?
- How can one find the value for a given a key in kademlia?
- Bucket splitting exception in Kademlia
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
A DHT simply defines
put(key,value)andget(key)operations and the core of the various DHT algorithms revolve around how to locate the nodes responsible for a specific key.What those nodes do on an incoming
putrequest for a value already stored largely depends on the purpose and implementation of the DHT network, not on the algorithm itself.E.g. a node might opt to timestamp all incoming values and return lists with multiple separate timestamped issues. Or it might return lists that also include the source address for each value. Or they might just overwrite the stored value.
If you have some relation between the key and a signature within the value or the source ID or something like that you can put enough intelligence into the nodes to verify the data cryptographically and thus allow them to keep a single canonical value for each key by replacing the old data.
In the case of bittorrent's DHT you wouldn't want that. Many different bittorrent peers announce their presence to a single key from different source addresses. Therefore the nodes actually store unique
<key,IP,port>tuples where<IP,port>can be considered the value. Which means it'll return lists of IPs and ports on each lookup. And since a DHT will have multiple nodes responsible for one key you will actually have K (bucket size) nodes responding with varying lists.TL;DR: It's implementation-dependent