One of the biggest "concerns" from potential "real-time" users of Hypertable is write latency spike when some nodes are down and being recovered. Read latency/availability are usually masked by the caching layer.
Cassandra tries solve the problem by using "hinted handoff" (write data tagged with a destination to an alternative node when the destination node is down). Of course this mandates relaxing consistency guarantee to "eventual", which is a trade-off many are willing to make. I just thought that it's not that hard to implement something similar in Hypertable and give user a choice between immediate and eventual consistency: When a mutator is created with BEST_EFFORT/EVENTUAL_OK flag, instead of keep retrying writes in the client when a destination node is down, it tries to write to an alternative range server with a special update flag, which persists the writes to a proxy log. The maintenance threads on the alternative range server will try to to empty proxy log by retry the writes. Alternative range servers can be picked using a random (sort the server list by their md5 of their ip address and the alternatives are the next n servers) or a location (data center/rack) aware scheme. Note this approach works even when the alternative node dies when proxy logs are not yet cleared. Thoughts? __Luke --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Hypertable Development" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/hypertable-dev?hl=en -~----------~----~----~----~------~----~------~--~---
