The underlying assumption, which I whole heartedly agree with, of Joe Armstrong's algorithms is that any system that is scalable, fault-tolerant, and upgradable is composed of N nodes, where N > 1.

The problem with current data storage systems, with rare exception, is that they are all "one box native" applications, i.e. from a world where N = 1. From Berkeley DB to MySQL, they were all designed initially to sit on one box. Even after several years of dealing with MegaData you still see painful stories like what the YouTube guys went through as they scaled up. All of this stems from an N = 1 mentality.

So when Sam answers Anant's calls for patterns of information needs of Web 2.0 applications, I would add N > 1 as a prerequisite, regardless of which 'size' of database you choose

.
Definitely in general agreement with you. The place where N > 1 is very hard, though, is when you have data you need to write with transactional guarantees. The reality is SQL databases make this way easier than any other production quality option, so sometimes you really do need a big N=1 box. Partitioning the database, read-only replicas, etc all can help manage this, but sometimes the truth is you need a big single threaded thing. That being said, people shove way more crud in their database than they need to.

Posted by Nelson Minar on 2007-07-22

Nelson,

The place where N > 1 is very hard, though, is when you have data you need to write with transactional guarantees.

I totally agree, but I would push in the other direction, that we need something that is natively N > 1, that replicates data over nodes transparently, and that only supports a limited set of transactional guarantees. Yes, whatever that is will have a different programming model from SQL, and while not everybody needs BigTable today, more and more people will over time. The sooner we start building a common understanding of how to program against such a model the better off we'll be.

Posted by joe on 2007-07-22

Another question is what is N? For example, where I work we have multiple database servers (Oracle RAC) hitting against a SAN. The SAN of course is a RAID array, has multiple fibre channel controlers, etc ... but could still be a single point of failure. So in some ways our data-store is N > 1, but in others it is N = 1. -Dave

Posted by Dave Tauzell on 2007-07-23