Sharding ( anglicky sharding ) je přístup, který zahrnuje rozdělení databází , jejich jednotlivých objektů nebo indexů vyhledávačů do nezávislých segmentů , z nichž každý je řízen samostatnou instancí databázového serveru , obvykle umístěnou na samostatném výpočetním uzlu.
Na rozdíl od dělení , které zahrnuje oddělené ukládání částí databázových objektů pod kontrolou jedné instance DBMS, umožňuje sharding použít distribuovanou výpočetní techniku , ale její implementace je obtížnější, protože vyžaduje koordinaci více instancí takovým způsobem. že interakce s celou sadou segmentů probíhá jako s jedinou databází.
Některá data v databázi mohou být přítomna ve všech útržcích a některá mohou být pouze v jednom nebo několika útržcích. Například malé tabulky používané jako pomalu se měnící dimenze mohou být plně zastoupeny v každém fragmentu, zatímco velké tabulky faktů jsou rovnoměrně rozděleny podle některého klíče napříč fragmenty. Častý přístup k datům na všech útržcích umožňuje efektivnější operace spojení a zároveň zajišťuje, že se všechny úlomky aktualizují synchronně.
Technika shardingu je široce používána v NoSQL DBMS (jako Cassandra , Couchbase , MongoDB ), masivně paralelních analytických DBMS ( Teradata Database , Netezza , Greenplum ), horizontálně škálovatelných vyhledávačích ( Elasticsearch , Solr ). Tato technika je také implementována v některých tradičních relačních DBMS (možnost Sharding v databázi Oracle ). U DBMS, které nepodporují segmentaci, jsou pro implementaci této techniky požadavky směrovány do několika instancí DBMS ze strany aplikace; Existuje několik middlewarových projektů , které implementují transparentní sharding ( dbShards , Apache ShardingShere , ScaleArc , MaxScale pro MariaDB ).