Домен
Базы данных
Профиль навыка
Горизонтальное и вертикальное шардирование, shard key selection, consistent hashing, cross-shard queries, resharding strategies
Ролей
9
где встречается этот навык
Грейдов
5
сформированная дорожка роста
Обязательных требований
25
ещё 20 — необязательные
Базы данных
Оптимизация БД
17.03.2026
Выберите текущий грейд и сравните ожидания. Карточки ниже покажут, что нужно закрыть для следующего уровня.
Таблица показывает, как меняется глубина владения навыком от Junior до Principal.
| Роль | Обязательность | Описание |
|---|---|---|
| Backend Developer (C#/.NET) | Понимает шардирование в .NET: знает как настроить multiple DbContext для разных database connections, понимает Elastic Database Tools для Azure SQL. Способен работать с приложением где данные распределены по нескольким databases. | |
| Backend Developer (Elixir) | Понимает шардирование в Elixir: знает как Ecto поддерживает multiple repos, понимает что BEAM distribution может заменить database sharding для некоторых use cases. Способен работать с multi-repo Ecto configuration. | |
| Backend Developer (Go) | Понимает основы шардирования в Go: знает как connection pool управляет подключениями к нескольким шардам, умеет работать с multi-database конфигурацией через database/sql. Понимает принцип выбора шарда по ключу. | |
| Backend Developer (Java/Kotlin) | Понимает шардирование в Java-контексте: знает как DataSource routing работает в Spring, различает logical и physical sharding. Способен работать с приложением на ShardingSphere или custom routing без глубокого понимания internals. | |
| Backend Developer (Node.js) | Понимает концепцию шардирования в Node.js: знает как подключаться к нескольким БД через разные connection strings, понимает принцип routing по shard key. Способен работать с приложением которое использует шардированную MongoDB (native sharding). | |
| Backend Developer (PHP) | Понимает шардирование в контексте PHP: знает зачем нужно разделять данные по нескольким БД-серверам, умеет подключаться к разным databases в Laravel/Symfony. Понимает основные ограничения шардирования для PHP-приложений. | |
| Backend Developer (Python) | Понимает концепцию шардирования БД: знает зачем нужно горизонтальное разделение данных, разницу между вертикальным и горизонтальным шардированием. Способен работать с приложением которое использует шардированную БД, выполняя запросы к конкретному шарду. | |
| Backend Developer (Rust) | Понимает шардирование в контексте Rust: знает как управлять multiple database connections через sqlx или diesel, понимает принципы выбора shard key. Способен работать с Rust-приложением использующим несколько database pools. | |
| Backend Developer (Scala) | Понимает шардирование в Scala-экосистеме: знает как Akka Cluster Sharding работает для in-memory данных, различает database sharding и actor sharding. Способен работать с Slick/Quill с multiple database configurations. |
| Роль | Обязательность | Описание |
|---|---|---|
| Backend Developer (C#/.NET) | Обязателен | Работает с шардированными БД в .NET: использует Elastic Database Client Library для Azure SQL sharding, реализует tenant-based routing через IDbContextFactory, настраивает EF Core с dynamic connection strings. Применяет Unit of Work pattern для shard-aware transactions. |
| Backend Developer (Elixir) | Обязателен | Работает с шардированием в Elixir: реализует dynamic Ecto.Repo selection через custom middleware, применяет consistent hashing через :erlang.phash2 для shard routing, настраивает connection pooling per shard через DBConnection. Обрабатывает cross-shard queries через Task.async_stream. |
| Backend Developer (Go) | Обязателен | Работает с шардированными БД в Go: реализует shard-aware repository layer с connection pooling per shard, применяет consistent hashing для распределения данных, обрабатывает cross-shard queries через scatter-gather pattern. Использует context для propagation shard info. |
| Backend Developer (Java/Kotlin) | Обязателен | Работает с шардированием в Java: реализует AbstractRoutingDataSource для multi-database routing, использует ShardingSphere для transparent sharding, настраивает HikariCP connection pools per shard. Применяет thread-local context для shard selection в Spring transactions. |
| Backend Developer (Node.js) | Обязателен | Работает с шардированными БД в Node.js: реализует application-level sharding с Knex/Prisma через dynamic connection selection, настраивает MongoDB sharding с выбором shard key, применяет connection pooling per shard. Обрабатывает cross-shard queries через Promise.all scatter-gather. |
| Backend Developer (PHP) | Обязателен | Работает с шардированием в PHP: реализует multi-tenant database routing в Laravel через database resolver, настраивает Doctrine DBAL с multiple connections, применяет shard selection middleware. Использует ProxySQL для transparent routing на уровне БД. |
| Backend Developer (Python) | Обязателен | Работает с шардированными БД в Python: использует Django database routers для multi-database routing, реализует shard selection logic на основе tenant_id или user_id. Понимает trade-offs шардирования: cross-shard queries, join limitations, data distribution skew. |
| Backend Developer (Rust) | Обязателен | Реализует шардирование в Rust: создает shard-aware connection pool manager, реализует consistent hashing с jump hash или rendezvous hashing, обрабатывает cross-shard queries через async scatter-gather с tokio. Использует Rust type system для compile-time shard routing safety. |
| Backend Developer (Scala) | Обязателен | Работает с шардированием в Scala: реализует database routing через custom Slick DatabaseProvider, использует Akka Cluster Sharding для distributed entity management. Применяет functional programming patterns (Reader monad) для shard-aware data access. |
| Роль | Обязательность | Описание |
|---|---|---|
| Backend Developer (C#/.NET) | Обязателен | Проектирует шардирование для .NET микросервисов: реализует custom shard router с consistent hashing, настраивает cross-shard queries через Elastic Query (Azure SQL) или custom scatter-gather, проектирует resharding с zero-downtime. Оптимизирует connection pooling для сотен шардов. |
| Backend Developer (Elixir) | Обязателен | Проектирует шардирование для Elixir-систем: реализует custom Ecto adapter для transparent sharding, проектирует resharding с GenServer-based coordinator, использует BEAM distribution для в виде «шардов» для stateful данных в ETS/Mnesia. Оптимизирует connection management через database proxy (pgBouncer). |
| Backend Developer (Go) | Обязателен | Проектирует шардирование для Go-микросервисов: разрабатывает sharding middleware с pluggable shard key strategies, реализует online resharding с dual-write pattern, настраивает Vitess интеграцию для Go-приложений. Оптимизирует connection management для 100+ шардов через pgbouncer/ProxySQL. |
| Backend Developer (Java/Kotlin) | Обязателен | Проектирует шардирование для Java-микросервисов: настраивает ShardingSphere с custom sharding algorithms, реализует distributed transactions через XA или eventual consistency patterns, проектирует global tables для справочных данных. Оптимизирует cross-shard pagination и sorting. |
| Backend Developer (Node.js) | Обязателен | Проектирует шардирование для Node.js сервисов: реализует custom sharding proxy через Node.js streams, настраивает PostgreSQL sharding через Citus extension, проектирует resharding pipelines с Node.js worker threads. Оптимизирует connection management для высокого числа шардов с pgBouncer. |
| Backend Developer (PHP) | Обязателен | Проектирует стратегию шардирования для PHP-систем: реализует consistent hashing для shard distribution, проектирует resharding с zero-downtime через dual-write pattern, настраивает Vitess для transparent MySQL sharding. Решает проблемы cross-shard reporting через materialized views или ETL. |
| Backend Developer (Python) | Обязателен | Проектирует стратегию шардирования для Python-систем: выбирает shard key с учётом access patterns и data distribution, реализует consistent hashing для балансировки, проектирует cross-shard query aggregation. Настраивает Vitess или ProxySQL для transparent sharding PostgreSQL/MySQL. |
| Backend Developer (Rust) | Обязателен | Проектирует высокопроизводительное шардирование на Rust: реализует custom sharding proxy с zero-copy routing, оптимизирует connection management через connection pooling с async traits, проектирует online resharding через dual-write с async verification. Бенчмаркит shard router performance. |
| Backend Developer (Scala) | Обязателен | Проектирует шардирование для Scala-микросервисов: интегрирует Akka Cluster Sharding с persistent storage, реализует cross-shard queries через Akka Streams, настраивает Cassandra data modeling с partition key design для natural sharding. Оптимизирует data locality для co-located processing. |
| Роль | Обязательность | Описание |
|---|---|---|
| Backend Developer (C#/.NET) | Обязателен | Стандартизирует шардирование в .NET экосистеме: создает NuGet-пакеты для стандартного sharding setup, проектирует migration tooling для per-shard schema management, внедряет health monitoring и auto-rebalancing. Определяет когда Cosmos DB partitioning vs SQL sharding. |
| Backend Developer (Elixir) | Определяет data architecture для Elixir-платформы: стандартизирует подходы к шардированию через Hex packages, проектирует гибридную архитектуру (BEAM distribution для hot data + PostgreSQL sharding для cold data). Определяет monitoring и auto-rebalancing strategy для шардов. | |
| Backend Developer (Go) | Обязателен | Определяет шардирование-стратегию для Go-платформы: стандартизирует sharding patterns через internal library, проектирует monitoring для shard balance и hotspot detection, разрабатывает automated resharding pipelines. Определяет data placement strategy с учётом latency и availability. |
| Backend Developer (Java/Kotlin) | Обязателен | Стандартизирует шардирование в Java-экосистеме: выбирает между ShardingSphere, Vitess и application-level sharding, проектирует online resharding pipelines с Spring Batch, внедряет monitoring и alerting для shard health. Создает internal frameworks для стандартизации sharding patterns. |
| Backend Developer (Node.js) | Обязателен | Определяет шардирование-стратегию для Node.js платформы: стандартизирует sharding patterns через npm packages, проектирует monitoring и alerting для shard health, разрабатывает automated testing для sharded scenarios. Определяет data placement strategy с учётом Node.js event loop модели. |
| Backend Developer (PHP) | Стандартизирует шардирование в PHP-экосистеме: создает Composer-пакеты для стандартного sharding setup, проектирует migration tools для per-shard schema management, внедряет monitoring для shard health и balance. Определяет стратегию resharding для растущих PHP-проектов. | |
| Backend Developer (Python) | Обязателен | Определяет стратегию шардирования на уровне платформы: проектирует resharding процедуры с zero-downtime, внедряет мониторинг shard health и data distribution, стандартизирует подходы к cross-shard consistency. Определяет когда шардирование необходимо vs другие подходы к масштабированию. |
| Backend Developer (Rust) | Обязателен | Определяет шардирование-стратегию для Rust-платформы: создает internal sharding crate с pluggable strategies и monitoring, проектирует distributed transaction coordination через 2PC или saga. Стандартизирует testing для sharded scenarios через TestContainers и property-based tests. |
| Backend Developer (Scala) | Обязателен | Стандартизирует шардирование в Scala-экосистеме: определяет когда использовать Akka Cluster Sharding vs database-native sharding, проектирует data placement strategy для distributed Scala-систем. Создает abstractions для transparent sharding с type-safe shard key definitions. |
| Роль | Обязательность | Описание |
|---|---|---|
| Backend Developer (C#/.NET) | Формирует enterprise data sharding стратегию для .NET: проектирует multi-cloud шардирование (Azure SQL + Cosmos DB + on-premise), определяет data sovereignty requirements. Влияет на выбор между custom sharding, managed sharding (Azure Elastic) и globally distributed databases (Cosmos DB, CockroachDB). | |
| Backend Developer (Elixir) | Формирует data strategy для масштабных Elixir-систем: проектирует multi-layer data architecture с BEAM clustering + database sharding + object storage, определяет consistency guarantees для разных data tiers. Влияет на развитие Elixir database ecosystem и подходов к distributed state management. | |
| Backend Developer (Go) | Формирует data architecture с шардированием для масштабных Go-систем: проектирует multi-tenant шардирование с per-tenant isolation уровни, определяет архитектуру для petabyte-scale данных. Влияет на выбор стратегии: custom sharding vs managed solutions (Vitess, CockroachDB, Spanner). | |
| Backend Developer (Java/Kotlin) | Формирует enterprise data sharding стратегию: проектирует multi-tier sharding (application sharding + database sharding), определяет архитектуру для global-scale Java-систем с шардированием. Влияет на выбор между ShardingSphere, Vitess, CockroachDB и Google Spanner для разных use cases. | |
| Backend Developer (Node.js) | Формирует data architecture для масштабных Node.js систем: определяет когда application-level sharding vs database-native sharding (Citus, Vitess, MongoDB), проектирует multi-region data placement. Влияет на архитектурные решения по выбору data layer для petabyte-scale Node.js приложений. | |
| Backend Developer (PHP) | Формирует data architecture для масштабных PHP-систем: определяет когда шардировать vs мигрировать на distributed database, проектирует гибридную архитектуру (sharded MySQL + Redis cluster + Elasticsearch). Влияет на долгосрочную стратегию хранения данных с учётом PHP-ограничений. | |
| Backend Developer (Python) | Формирует data architecture стратегию с шардированием: проектирует multi-region шардирование с geo-routing, определяет подходы для data locality и compliance (GDPR). Влияет на выбор между application-level sharding, database-native sharding (Citus, Vitess) и NewSQL (CockroachDB, TiDB). | |
| Backend Developer (Rust) | Формирует архитектуру data layer на Rust для extreme-scale систем: проектирует custom distributed database layer с sharding, определяет trade-offs между consistency и performance для разных shard topologies. Влияет на open-source Rust database ecosystem через вклад в foundationdb-rs, tikv и подобные проекты. | |
| Backend Developer (Scala) | Формирует data architecture для distributed Scala-систем: проектирует multi-layer sharding (Akka Cluster + database + geographic), определяет consistency model для cross-shard operations. Влияет на архитектурные решения по adoption distributed databases (Cassandra, CockroachDB) vs custom sharding в Scala. |