Database Sharding

Database Sharding

Author: BJ Burns and Will Gant June 29, 2023 Duration: 51:28

Database sharding is a process of storing a large database across multiple machines. Because a single machine can only hold and process so much data, eventually some systems will scale beyond the ability of a single machine to handle data. Further, as systems scale, they may also need to split data between machines due to security and location considerations. Database sharding overcomes these problems by splitting the system into smaller chunks, allowing work to either be done in parallel, or only in the locations with the relevant data.

Obviously, it matters a lot how you split up your data. For instance, it's unlikely that splitting a customer table based on the customer last name will be as helpful in a large distributed system as it would be to split up customers by location. You probably also want to have shards that are roughly the same size. The idea behind sharding is to improve performance, specifically via parallelization, but it's also helpful if it also provides some resilience to outages. So that will also need to be a consideration when you start thinking about sharding.

Database sharding can be a very useful tool for making your application more resilient to load. However, it's complex and you really need to think through it carefully if you are considering using it in your environment. There are several different ways to do it, with different advantages and disadvantages, and these will need to be thoroughly considered before starting. Plus, sharding is actually a fairly drastic operation, requiring support and extra work for the remaining lifetime of your application. This means that you shouldn't really consider it until most other options have been exhausted.

The post Database Sharding appeared first on Complete Developer Podcast.


Hosted on Acast. See acast.com/privacy for more information.


BJ Burns and Will Gant host the Complete Developer Podcast, a conversation that goes far beyond just writing code. These two seasoned developers built this show from a simple idea: that a career in tech is about more than the latest framework or language syntax. It's about the entire ecosystem you navigate, from the logic on your screen to the dynamics of the business meetings and the long-term path of your career. Each episode feels like pulling up a chair in the break room with colleagues who get it, discussing the real, often unspoken, parts of the job. You'll hear them tackle the intersection of technology, business strategy, and professional growth, making sense of how these pieces fit together in a practical, everyday way. This podcast digs into the questions that don't always have a clear answer in a manual-how to communicate effectively with non-technical teams, ways to approach career advancement, or how to balance deep technical work with the broader goals of a company. It's a resource for anyone who writes code but lives in a much bigger world, offering perspective and discussion that aims to make the whole journey a bit more comprehensible and a lot more manageable. Tune in for thoughtful, grounded talks that treat development as the multifaceted profession it truly is.
Author: Language: English Episodes: 100

Complete Developer Podcast
Podcast Episodes
Mental Downtime [not-audio_url] [/not-audio_url]

Duration: 43:39
We all need some regular relaxation to avoid burnout. Downtime is a brain break from all the internal processing that our minds do daily and even helps to improve productivity.Read more ›The post Mental Downtime appeared…
App Migrations Resilience [not-audio_url] [/not-audio_url]

Duration: 39:16
When you replace a running legacy system with a new system, it can be tempting to do it all at once. However, doing so courts disaster and makes the process much more painful than it has to be. Even though it sounds easi…
The People You Will Lead [not-audio_url] [/not-audio_url]

Duration: 50:03
Whether you are a manager, team lead, or executive you will lead several types of people during your time in leadership. From the too reliant who comes to you for everything to the grizzled veteran who has been coding lo…
Package Supply Chain Attacks [not-audio_url] [/not-audio_url]

Duration: 44:26
While it's nice to be able to pull in packages to do various things in our projects, we need to think long and hard about how we are going to maintain those dependencies over time, in particular in how they relate to sec…
Methods of Thinking [not-audio_url] [/not-audio_url]

Duration: 39:56
Just like there are multiple ways to use a computer there is more than one way to use your mind. Many different ways exist to focus your thoughts from study and meditation to creating mind maps. Understanding these will…
Database Resilience [not-audio_url] [/not-audio_url]

Duration: 41:59
Your database is probably the most valuable part of your application, and it can be terrifying to think of it falling apart. Yet, that is just a day in the average developer's life in many companies.Read more ›The post D…
Types of Thinking [not-audio_url] [/not-audio_url]

Duration: 39:48
Understanding how you think will help you to improve your ability to learn, understanding how others think will guide you in utilizing their talents to compliment your own. Whether it's creative thinking, divergent think…
Third Party Integrations [not-audio_url] [/not-audio_url]

Duration: 43:32
Eventually management will ask you to evaluate third party integrations for your software. Whether it is for authentication, sending emails, or other functionality, there are times when it makes more sense to use third p…
Leading By Influence [not-audio_url] [/not-audio_url]

Duration: 1:05:39
It can be easy to fall into the thinking that when I'm in charge I'll do things differently. You do not have to have authority to be a leader instead you can exhibit leadership through influence. From choosing positivity…
Better Pull Requests [not-audio_url] [/not-audio_url]

Duration: 42:09
When you work with other people in a codebase, at some point you have to merge your code into the main branch. The code should be reviewed before that happens in order to keep quality high on the branch that is deployed…