Entries by Max Indelicato (5)

Thursday
Sep022010

Distributed Hashing Algorithms by Example: Consistent Hashing

Consistent Hashing is a specific implementation of hashing that is well suited for many of today’s web-scale load balancing problems. Specifically, it can be seen in use in various caching solutions like Memcached and is applicable to NoSQL solutions as well. Consistent Hashing is used particularly because it provides a solution for the typical “hashcode mod n” method of distributing keys across a series of servers. It does this by allowing servers to be added or removed without significantly upsetting the distribution of keys, nor does it require that all keys be rehashed to accommodate the change in the number of servers.

You can read the full store here.

Monday
Aug232010

Building a Scalable Key-Value Database: Project Hydracus

The world of NoSQL and alternative database implementations (i.e. non-relational) is deeply fascinating to me. I can’t help but be swept up in the whirl of planet-scale web development scalability techniques and the evolution of how developers think about building their applications knowing that with success comes the inevitable need to scale to levels almost unimaginable just five or ten years ago. I’m going to make a prediction: Developers will be expected to understand the fundamentals of how different database systems can be applied within a singular application; their strengths and weaknesses, and when it is appropriate to leverage them.

Click to read more ...

Thursday
Aug122010

Designing Web Applications for Scalability

I can’t even count the number of times that I’ve heard this phrase: “don’t worry about scaling your web application, worry about visitor (or customer) acquisition.” My response to this is always that you don’t need to choose one or the other, you can do both! In this post, I’m going to go over some of the strategies I’ve used to architect web applications for scalability, right from the start of the design process, in such a way that I’m prepared to scale when I need to, but not forced into doing so before its necessary. Easing the transition from small scale to large scale can be made much easier by choosing the right technologies and implementing the right coding patterns up front.

You can read the full store here.

Monday
Aug092010

NoSQL on the Microsoft Platform

NoSQL is a trend that is gaining steam primarily in the world of Open Source. There are numerous NoSQL solutions available for all levels of complexity: from queryable distributed solutions like MongoDB to simpler distributed key-value storage solutions like Cassandra. Then there’s Riak, Tokyo Cabinet, Voldemort, CouchDB, and Redis. However, very few of these packaged NoSQL products are available for the other end of the platform market: Microsoft Windows. I’m going to outline what’s available now and briefly touch on some opportunities that are still available to the daring Microsoft engineer.

You can read the full story here.

Thursday
Aug052010

Pairing NoSQL and Relational Data Storage: MySQL with MongoDB

I’ve largely steered clear of publicly commenting on the “NoSQL vs. Relational” conflict. Keeping in mind that this argument is more about currently available solutions and the features their developers have chosen to build in, I’d like to dig into this and provide a decidedly neutral viewpoint. In fact, by erring on the side of caution, I’ve inadvertently given myself plenty of time to consider the pros and cons of both data storage approaches, and although my mind was initially swaying toward the NoSQL camp, I can say with a fair amount of certainty, that I’ve found a good compromise. 

You can read the full store here.