4 ms·
An interesting fact is that Apple is probably one of the biggest users, if not the biggest user, of Cassandra out there. Can't speak to HBase, but one thing Ca
by Bahamut 8y ago
An interesting fact is that Apple is probably one of the biggest users, if not the biggest user, of Cassandra out there.
Can't speak to HBase, but one thing Cassandra doesn't guarantee is ACID - I've seen some data consistency issues that has arisen from Cassandra in our usage, although it hasn't been a huge problem for us. That difference alone probably brings a lot of value to FoundationDB.
- Joeri 8y agoMy understanding of hbase (which could be wrong) is that writes of a particular key always go to the region master first, so if you read from the master you always get the latest value of a key. The tricky part is that when the region master goes offline another one needs to take its place, and you can get inconsistency or unavailability depending on how it is set up. I’d like to see a deep dive of how foundationdb handles this. It has to trade-off consistency for availability at some point and it would be nice to know exactly where.
- poooogles 8y agoFrom what I understand that shouldn't happen as writes are written to a WAL on HDFS (been a while since I've used it). From my memory writes within a row are atomic. It seems to pass Jepsen as well [1]. 1. https://www.google.co.uk/amp/s/yokota.blog/2015/09/30/call-me-maybe-hbase/amp/ https://www.google.co.uk/amp/s/yokota.blog/2015/09/30/call-m...
- deleted 8y ago[deleted]
- necubi 8y agoBy default in HBase, each region is served by a single region server. Writes and reads always go to that regionserver, and are consistent across a single row (HBase is a CP system). In this mode, when a regionserver goes offline its regions are (eventually) reassigned to a different region server. During this process the region is unavailable, but there's no loss of consistency. Hbase 0.98 (I think?) introduced a feature called "timeline consistency" that allows reads from replica regionservers. This has to be enabled for a table and has to be specified on the query side. If it is, you have the option of falling back to the replica if the primary doesn't respond within a deadline. This may be a good tradeoff if you value availability over consistency.