One of the ways a cloud based memory can be achieved is via a Distributed BTree. So then why not a Distributed Map? A Distributed Map would be an optimal solution that is guaranteed to produce constant time look ups. The problem, however, is the mapping Hash Function. It is not possible to find an optimum hashing function that could map correctly for large number of memory nodes. What is really required is a dynamic function that mutates with the nodes addition or removal in order to keep the lookup time constant. This is possible, but difficult.
One of the most important aspect when it comes to creating such a Distributed BTree is the connection to individual memory nodes. Replication complicates the arrangement. For HA, it is important to be able to replicate efficiently across multiple nodes. A point to point connection of this kind will lead to NACK/ACK implosion at some point of time. So an efficient Distributed BTree should be based on some kind of a Tree Based Reliable Multicast Protocol. We can also choose to decrease the level of replication and network traffic by using neighborhood node based correction algorithms. This means that if the node pointed to by an index does not have the data,we can use a corrective algorithm to get the data from the linked list of its immediate descendants. For this it is important that the descendant nodes are all grouped on the basis of the number of hops.
Another problem is that individual nodes may not be connected via high performance network devices. The design should be able to accommodate the slowest link as well. To make sure that the cloud's data retrieval is not limited to that of the slowest link, parallel data retrievals can be initiated on a configurable number of separate threads on different nodes and the quickest data should be accepted.