Sharding hampir merupakan antitesis replikasi, meskipun mereka adalah konsep ortogonal dan bekerja sama dengan baik.
Sharding, juga dikenal sebagai partisi, membagi data berdasarkan kunci; Sedangkan replikasi, juga dikenal sebagai mirroring, adalah menyalin semua data.
Sharding berguna untuk meningkatkan kinerja, mengurangi hit dan beban memori pada satu sumber daya. Replikasi berguna untuk mendapatkan ketersediaan bacaan yang tinggi. Jika Anda membaca dari beberapa replika, Anda juga akan mengurangi hit rate pada semua sumber daya, tetapi persyaratan memori untuk semua sumber daya tetap sama. Perlu dicatat bahwa, meskipun Anda dapat menulis ke slave, replikasi hanya dilakukan oleh master->slave. Jadi Anda tidak dapat menskalakan penulisan dengan cara ini.
Misalkan Anda memiliki tupel berikut:[1:Apple], [2:Banana], [3:Cherry], [4:Durian] dan kami memiliki dua mesin A dan B. Dengan Sharding, kami dapat menyimpan kunci 2,4 di mesin A; dan kunci 1,3 di mesin B. Dengan Replikasi, kami menyimpan kunci 1,2,3,4 di mesin A dan 1,2,3,4 di mesin B.
Sharding biasanya diimplementasikan dengan melakukan hash yang konsisten pada kunci. Contoh di atas diimplementasikan dengan fungsi hash berikut h(x){return x%2==0?A:B}.
Untuk menggabungkan konsep, Kami mungkin mereplikasi setiap pecahan. Dalam kasus di atas, semua data (2,4) mesin A dapat direplikasi pada mesin C dan semua data (1,3) mesin B dapat direplikasi pada mesin D.
Penyimpanan nilai kunci apa pun (di mana Redis hanya salah satu contohnya) mendukung sharding, meskipun fungsi lintas kunci tertentu tidak akan berfungsi lagi. Redis mendukung replikasi di luar kotak.