Спасибо!
Шардинг - это почти полная противоположность репликации, хотя они ортогональны и хорошо работают вместе.
Шардинг, также известный как разделение, представляет собой разделение данных по ключам; В то время как репликация, также известная как зеркальное отображение, заключается в копировании всех данных.
Шардинг полезен для увеличения производительности, уменьшения количества обращений и нагрузки на память любого ресурса. Репликация полезна для обеспечения высокой доступности чтения. Если вы читаете из нескольких реплик, вы также уменьшите процент совпадений для всех ресурсов, но требования к памяти для всех ресурсов останутся прежними. Следует отметить, что, хотя вы можете писать на подчиненное устройство, репликация выполняется только в режиме главный-> подчиненный. Таким образом, вы не можете масштабировать запись таким образом.
Предположим, у вас есть следующие кортежи: [1: Apple], [2: Banana], [3: Cherry], [4: Durian] и у нас есть две машины A и B. С Sharding мы можем хранить ключи 2 , 4 на машине А; и ключи 1,3 на машине B. При репликации мы храним ключи 1,2,3,4 на машине A и 1,2,3,4 на машине B.
Шардинг обычно реализуется путем выполнения согласованного хеширования на ключ. Приведенный выше пример был реализован с помощью следующей хеш-функции h (x) {return x% 2 == 0? A: B}.
Чтобы объединить концепции, мы можем реплицировать каждый сегмент. В приведенных выше случаях все данные (2,4) машины A могут быть реплицированы на машине C, и все данные (1,3) машины B могут быть реплицированы на машине D.
Любой ключ-значение store (из которых Redis является только одним примером) поддерживает сегментирование, хотя некоторые функции перекрестных клавиш больше не будут работать. Redis "из коробки" поддерживает репликацию.