What methods can be used to partition a database using sharding?
sobes.tech AI
Answer from AI
Sharding is a method of horizontal partitioning of a database, where data is divided into parts (shards), each stored separately. The main sharding methods:
-
Range Sharding — data is divided by ranges of key values. For example, users with IDs from 1 to 10,000 in one shard, from 10,001 to 20,000 in another.
-
Hash Sharding — keys are passed through a hash function, and the result determines which shard the data will go to. This provides a more even distribution.
-
List Sharding — data is distributed according to predefined lists of key values.
-
Geographical Sharding — user data from different regions is stored in corresponding shards.
Example in Go for simple hash sharding:
func getShard(userID int, shardCount int) int {
return userID % shardCount
}
// Usage:
shard := getShard(12345, 4) // Determines which of the 4 shards the user with ID 12345 will go to
The choice of method depends on the nature of the data and performance requirements.