My understanding of a distributed hash table is that every node can be identified uniquely by a nodeId and can store information, like host, port and values. Every node stores other nodeIds in (a) lookup table(s) and finding another node can be made as efficient as log(n) with system size n. In order to retrieve the value from a node, one would need a key. Is the key for a value just the nodeId (i.e. a content identifier or hash of the value)? If so, then every node can only save one value? Or can a nodeId store multiple key-values, in which case the question arises how to retrieve a value without knowing which node contains which keys.
What is the relation between a nodeId and a key in distributed hash tables?
174 Views Asked by Marlo At
1
There are 1 best solutions below
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 DISTRIBUTED-SYSTEM
- How to avoid duplicates with the pull-based subscribe model?
- Micrometer & Prometheus with Java subprocesses that can't expose HTTP
- SQL connection throws error when adding DistributedSession, SessionMiddleware
- How to use NFS locks or any other mechanism to keep data in sync on multiple mountpoints
- The two data nodes return different results
- How to run an MPI program across multiple docker containers without manually ssh'ing
- How do I parallelize writing a list of Pyspark dataframes across all worker nodes?
- Does AWS use distributed systems?
- How to version control a source code which communicates with database?
- Searching for succ(p+1) in Chord systems
- How to design a long running process that can continue after an outtage?
- akka.cluster.ddata.Replicator$Internal$DeltaPropagation message from clusterReceptionist replicator is dropped because it exceeds the size limit
- In the storage-computing separation deployment mode, why does one of the three nodes have no disk space?
- Out-of-order AppendEntries in Raft
- Automatic Load Balancer with Locust 2.20.0 on Windows - High Ping and Scaling Challenges
Related Questions in KEY-VALUE-STORE
- How to list all entries in Deno KV?
- How does bulkload in databases such as hbase/cassandra/KV store work?
- Getting values of my_dict and assign them to a variable called my_values
- DynamoDB table model code supporting design with more than one sort keys
- custom `prefix_extractor` per `ColumnFamilyOptions` in RocksDB
- iCloud Key-Value storage does not work for users with full iCloud
- Is there a way to keep track of an object-property's value-history, like memorizing and recalling any of its recent values?
- Balancing LSM key-value storage access between users, and 'hanging' problem
- Why use SS Tables instead of One-File per key in Key-Value Databases?
- A key not found in infinispan cache resulting in NullPointerException, sometime
- What is the best open source software to store and access data from 1MB to 10GB size key-value-based?
- Select blob keys by prefix in Cassandra
- Do memtables ever actually use trees over skip lists?
- How to append the list in a dictionary into its own column?
- Statically allocated, optimizable, sparse key-value store in C?
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
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 # Hahtags
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?
There are two general approaches for building distributed hash tables: distribute keys to nodes based on key values or based on hashes of keys. There are pros and cons for either option.
In either way, we will need to find a nodeId for a given key. A naive implementation could use modulus operation to find a target node. The problem with this approach is that when we do change number of nodes, then we have to remap absolutely every key - this is slow.
Let's say we have 4 nodes and the key is 10. 10 mod 4 is 2 an we will pick node #2 to store the data.
If you do need to handle node addition/removal efficiently, the common approach is called Consistent Hashing - that works similar to what you have described - we have multiple key (or hashes of key) intervals and assign many of those intervals to nodes - we require number of this intervals to be much larger than number of nodes. Hence if we add or remove a node, only some of those intervals need to be remapped to other nodes.