I would think one would dedicate N*2 nodes for a dataset N and just copy the data in any given node to its closest neighbor node. If the lookup for the primary node fails, try its closest neighbor, and if you really want to get snazzy then have that failover neighbor start to copy data to its closest neighbor until you get a replacement node up. A failover daemon on each node will detect when a neighbor goes down and block writes to a copy of data until it's sure the neighbor is down, and won't accept new copies until both it detects the neighbor is back up and has resolved time-based differences in datasets. Probably not foolproof but it's a start :)