Editorials

Patterns for Resilience ? Sharding

Database sharding has long been known as a technique for increasing the scale of an application. By placing data in multiple databases, each with only a portion of the data, increases the reach of an application by distributing the load across multiple servers.

This technique of sharding has been extended to not only SQL Relational storage, but is the foundation of most no-sql engines as well. There are a lot of algorithms for sharding; sequence, geography, time, customer, etc.

From a resilience perspective, sharding data across multiple servers not only enhances performance and scale, but also results in applications that never fail completely. If a database server dies the application continues to operate on the other database servers without disruption. Many sharded systems have redundancy for each shard resulting in an even more resilient application.

I had never considered sharding as a technique for resilience, but rather as a technique for performance. However, with redundant shards this technique makes it quite resilient when any database server failes.

Get into the resilience conversation by leaving your comment here online.

Cheers,

Ben