The missing opensource software for web development: a scalable database
antirez.com
antirez.com
Enter App Engine. Google has spent years developing Big Table and their underlying distributed OS, and they are probably years ahead of anybody else on this one. Essentially what App Engine consists of is giving 10,000 developers read/write accounts to the worlds largest distributed database management system.
Now, it's up to the developers to add their HTML/CSS/Javascript GUI's and a little data crunching middle-ware all the world to use.
One is that Google's DB is both unique and closed-source. Worse, it isn't even a product like Oracle or SQL Server that I can license and then use the way I want. Even if I wanted to buy the hardware and maintain the software, I can't move my app off of Google. I'm a sharecropper. They get my traffic data for free, and if they change their pricing structure or the way their DB works I have to scramble to keep up. And if they decide to screw with me (like, ahem, becoming my competitor) I will have to port my app to some other scalable platform while serving all my accumulated traffic and simultaneously fending off a deep-pocketed competitor.
I'm also suspicious of the idea that BigTable is some sort of magic wand that solves any and all scalability problems. I'm very sure that BigTable scales for the classes of problems that it was designed for. And I'm sure that a wizard like Steve Yegge or Peter Norvig can adapt it to many other classes of problem. But, without actually knowing anything about BigTable, I'm prepared to bet that using it to scale your web app will require (a) knowing a fair bit about how the tool works and (b) customizing your app's data storage scheme to compliment the tool, after which (c) there will still be some corner cases that don't work very well and require clever hacks and compromises.
In other words: I predict that in three years there will be Craigslist job postings for "BigTable DBA with five years of experience".
I spent a while trying to build a synchronous multimaster replication system for Postgres. I think we made two main mistakes:
1. Trying to provide the traditional ACID semantics that people expect on a single-site DBMS isn't feasible, at least without incurring a very significant performance and complexity overhead.
2. Horizontal partitioning is key. If you make it easy for the user to partition their data, you now only need to maintain consistency over a single partition.
I have no doubt we'll hear more about this in coming months, not because of any specific need, but because it's the latest fad.
The performance of hardware has managed to keep pace with the needs of the vast majority of websites over the years, to the point where very few sites (like the top 500 or so) actually ever need more than just the basic scaling ideas that are easy for just about any sysadmin to implement (split mail, web, DNS, and database onto independent boxes, use memcached, maybe a web load balancer like Squid or pen, etc.).
> The performance of hardware has managed to keep pace with the needs of the vast majority of websites
That makes sense, but the absolute number of web sites that need to scale up in a big way is also growing, even if it could actually be shrinking as a percentage.
But, it's worth noting that my previous (now defunct) company was entirely devoted to web performance and scalability. It's not a volume business--the folks who need it spend a lot on the problem, but their just aren't that many who need the extreme solutions. I've often chuckled when the few Virtualmin customers who do want scalability have explained their requirements and they match to a great degree the products I was building five years ago (and found to be a niche that wasn't worth continuing to expend effort on). If I thought it would be profitable to pursue, I could certainly revive some of those products in the context of Virtualmin...but I think there are far more profitable areas for us to work on.
Everything related to the web is growing, so all ships are rising, including scalability issues...but I believe several others are rising much faster.
It's pretty rarefied air up in the high scalability world...my previous company built website acceleration tools, and the customer base there is pretty small (they have plenty of money, but it's not a high volume business). As much as us nerds like to think about HUGE problems like this, it's a problem that just doesn't come up that much.
[1] - http://books.google.com/books?id=KH_kfSsMu80C&printsec=f...