Когда объем данных и операций с ними растет, нужно тем или иным способом увеличивать производительность системы. Вертикальное разделение подразумевает сегментирование данных на столбцы, содержащие определенную информацию. Обычно такой подход используется, когда необходимость в использовании одного из столбцов выше, чем у другого.
![]()
Атаки На Отдельные Шарды (shard Takeover Attack)

В случае успеха шардинг может установить новый стандарт обработки больших объёмов транзакций в блокчейнах. Благодаря шардингу сеть может вычислять больше транзакций и таким образом быстрее масштабироваться, достигая скорости обработки привычной по централизованным базам данных. С другой стороны, критики отмечают, что шарды подвержены атакам и снижают безопасность сети. Шардинг, как термин, появился в профессиональной среде и стал важным элементом офисного сленга в мире технологий и разработки программного обеспечения.
- Допустим, у нас один сервер и он не справляется с запросами и большими данными.
- В ней необходимо хранить десятки миллиардов строк, а ключом секционирования является комбинация исходного и конечного URL.
- Вместо единой цепочки блоков сеть будет разделена на множество шардов, каждый из которых сможет обрабатывать транзакции и смарт-контракты независимо.
- Шардинг будет играть ключевую роль в будущем блокчейна, особенно для таких платформ, как Ethereum.
Что Такое Шардинг И Как Это Работает
Какая-то логика применяется внутри прокси, он определяет, на какую ноду идти, делает запрос, получает данные, потом передает эти данные назад клиенту. Как вы могли убедиться, тут довольно сложно представить универсальное решение, подходящее абсолютно всем и всегда. И это мы еще тактично обошли стороной такие важные вопросы, как репликация между несколькими ДЦ или снятие консистентных бэкапов с множества репликасетов.
В начале 2025 года команда Aptos представила решение Shardines, в котором блок транзакций разбивается на части и обрабатывается параллельно с помощью Executor Shards. В тестах технология показала масштабирование до 1 млн транзакций в секунду при низких задержках, но при этом узким местом остается уровень доступности данных. Это позволяет линейно масштабировать пропускную способность сети линейно. В тестах прототип Pilotfish показал рост производительности в прямой зависимости от числа задействованных узлов.

Поскольку бакеты могут быть логически связанными и храниться на разных репликасетах, иногда приходится делать транзакции между репликасетами. При правильно выбранной схеме шардирования распределенные транзакции должны выполняться редко, поскольку шардирование они всегда недешевы. Если в вашем проекте распределенные транзакции не нужно делать никогда, вам сильно повезло. На мой взгляд, наиболее правдоподобным и универсальным вариантом на сегодняшний день является использование потоковой репликации с удалением лишних данных по окончании репликации по сценарию (3). Это работает только при добавлении совершенно нового, пустого репликасета.
Шардинг пытается решить эту задачу, сохраняя при этом децентрализованную природу блокчейнов. Производительность всей системы начинает зависеть от самого загруженного шарда. MongoDB — это NoSQL база данных, которая была разработана с закосом на горизонтальное масштабирование. То есть она адаптирована к тому, чтобы работать на нескольких серверах и расширять это число по мере необходимости. Поэтому sharding здесь доступен из коробки, нам не надо заморачиваться со внешними расширениями. В статической модели количество шардов (групп, обрабатывающих транзакции) заранее определено и не меняется в зависимости от текущей нагрузки.
Допустим, у вас ключ шардинга – это, собственно, ключ шардинга и timestamp. Когда вы меняете данные, вы меняете timestamp, и он у вас естественным образом оказывается на другом шарде. Вы можете в какой-то момент закрыть апдейты на определенный шард и рано или поздно просто его вывести из строя.
Оно решает трилемму блокчейна, обеспечивая баланс между децентрализацией, безопасностью и масштабируемостью. Развитие шардирования позволит криптовалютам конкурировать с традиционными платежными системами, такими как Visa или Mastercard, обеспечивая миллионы транзакций в секунду. Один из самых ожидаемых примеров внедрения шардинга – обновление Ethereum 2.0. В рамках этой модернизации сеть перейдет на Proof-of-Stake (PoS) и реализует шардирование. Вместо единой цепочки блоков сеть будет разделена на множество шардов, каждый из которых сможет обрабатывать транзакции и смарт-контракты независимо. Это позволит значительно повысить производительность Ethereum и снизить комиссии за транзакции.
Например, чтобы модернизировать оборудование, можно перенести всех пользователей из старой секции в новую, не останавливая секцию целиком и не переводя ее в режим чтения. Решение неидеальное, но какой еще потенциальный профит у этого решения? Вы в прокси можете также заниматься load balancing-ом, вы можете смотреть, какие ноды у вас вышли из строя, т.е. Автоматически определять, делать failover полностью прозрачным для прокси.
Однако это отображение не дает нам ответа на вопрос, где физически следует искать данные, то есть, к какому репликасету они относятся. Для этого используется так стратегии торговли на криптобирже называемый словарь, отображающий номер vbucket’а в конкретный репликасет. Поскольку выше было сказано, что задачу автоматического фейловера мы решаем при помощи Stolon, а ему для работы нужен Consul, который, помимо прочего, является KV-хранилищем, вполне логично хранить словарь в Consul.
Она вынуждает каждую ноду обрабатывать и хранить полную информацию о всех транзакциях в сети. Тогда как второй метод, параллельная обработка данных, дает возможность подтверждать несколько операций единовременно. Мы можем https://www.xcritical.com/ хранить все данные и обрабатывать запросы на одном сервере и сделать его реплику с копией данных. В случае сбоев отвалятся только отдельные серверы с некоторыми наборами данных. Конечно, здесь тоже, в теории, можно положить весь кластер, включая реплики, но сделать это сложнее. При решардинге часто приходится перегонять большие объёмы данных между серверами.
