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 answers
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
- Unable to Retrieve External Public Address in libp2p Swarm Events
- How to avoid duplicates with the pull-based subscribe model?
- Wifi direct (Wifi P2P) connection between raspberry pi 4b and android device only possible after reboot
- Using tokio::time::timeout does not trap delayed response from TCPReadStream
- 'connections' is deprecated. The declaration was marked as deprecated here
- Twitch but practically free with p2p webRTC?
- How Can I Connect Using A WebRTC-Offer With PeerJS
- Choose between polling, websocket or P2P
- does webrtc use turn server if established p2p connection is failed?
- A p2p secure chat application need more ressources to establish the work
- how to allow mobile apps to communicate without a separate server
- aiortc can't receive video from server example
- P2P connection does not work on Android 11 and above
- Android device cannot detect others by flutter_nearby_connections
- Why is WebRTC peer.ontrack not being called in 1-1 peer connection?
Related Questions in KEY-VALUE
- Python - Converting Date:Price list to new rows
- Awk print a value in a column that corresponds to key values
- Convert element tags to key value pair in OIC map
- How would I make an "object" (key-value pair) in C++?
- How to list all entries in Deno KV?
- Create new array using values from another array
- How to combine items from a Dictionary into a list of dictionaries based on matching key/value details
- Object property has different many string values
- Using jsonlite in R to output json in a specific format
- Output of a multidimensional array as a grouped key=>value list
- Keys and values in separate columns, I want to create columns with corresponding values
- How is the Foldable instance of (,) useful?
- Database Design for storing Key-Value Tags per Item
- Python error occurred during crontab scheduled launch
- extract correlations of sub-sets of genes based on a key -> value data frame
Related Questions in DATASTORE
- Datastore writes failing with google.api_core.exceptions.PermissionDenied: 403 Received http2 header with status: 403
- Save User Id in data storage in all table
- I can't add datapusher-plus to my CKAN in docker
- How to write unit test cases for the DataStore saving and fetching method
- Is there a way to set the minimum and maximum value of a DataStore Preferences value?
- Android Jetpack Datastore get one stored vďlue
- Using DataStore in ViewModel not properly saving and retrieving data
- datastore not working when we declare intent route to a page containing datastore in DialogFlow CX
- Saving 2 player values in a Roblox leaderboard
- Android Studio: Kotlin - How to read and edit DataStore Values in another Activity
- My coworker accidentally deleted a production google cloud datastore , is there a way to recover it
- GAE migrate Java 8 to Java 11; has the data type "Text" done away with?
- How to keep track of changes to Android datastore if file is deleted while app is running
- How to maintain the proper lifecycle of RxDataStore<Preferences> In Multiple Activities In Android
- Shared Preferance in flutter
Related Questions in DHT
- In IPFS, will same content produce the same CID on 2 different peers?
- Save values from a DHT11-Sensor to influxDB container
- How do I periodically remove inactive nodes and flush the routing table with the use of kademlia python library?
- How can I index the bittorrent DHT properly for infohashes?
- IPFS not announcing CIDs on indirect peers and unable to get through cmd as CID is not propagated using DHT
- which libp2p module do I use to broadcast data to peers in the network e.g blockchain? do I use mdns or kademlia for blockchain?
- go-libp2p: my nodes don't find any peers with DHT peer discovery
- Kademlia get_providers() fails to find nodes that start_providing() in Rust libp2p
- Are DHT algorithms good for handling large amount of counting states?
- UDP socket connected to DHT node, not recieving data
- In Bittorrent how to announce utp port for other peers
- trying to understand the flow chart of the extended message protocol as mentioned in bep 10
- Do I remove peers after a certain amount of time?(mainline dht)
- How to find metadata in the dht while only having the Infohash?
- Is it possible to receive from one port and send through another in mainline dht?
Related Questions in KADEMLIA
- How do I periodically remove inactive nodes and flush the routing table with the use of kademlia python library?
- which libp2p module do I use to broadcast data to peers in the network e.g blockchain? do I use mdns or kademlia for blockchain?
- Crawl DHT of a private network from outside
- How to implement peer discovery using Kademlia (rust-libp2p)
- Kademlia get_providers() fails to find nodes that start_providing() in Rust libp2p
- Do I remove peers after a certain amount of time?(mainline dht)
- How to find metadata in the dht while only having the Infohash?
- Is it possible to receive from one port and send through another in mainline dht?
- receiving unreadable text while trying to bencode a "find_node" query
- How does the routing table work in mainline dht?
- DHT detection in local network
- Is it possible to compute an approximate size estimate of a kademlia network from a node's k-buckets?
- Node Id generation in storj
- Kademlia DHT finding bucket index for a node
- Bucket splitting exception in Kademlia
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?
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)
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