Partition (databáze)

Z Wikipedie, otevřené encyklopedie

Obsah

[editovat] Úvodní přiblížení

Partitioning je technologie sloužící v relační databázi k fyzickému rozdělení rozsáhlých datových tabulek do menších částí na základě logického členění dat v tabulce. Pokud databázový server poskytuje takovou možnost (jak je tomu například u databázového serveru Oracle), umožňuje tato technologie snadnější a rychlejší manipulaci s tabulkami, jejichž velikost se pohybuje na hranici možností použitých systémových prostředků.

[editovat] Nastavení partitioningu

V rámci vytvoření tabulky (příkaz CREATE TABLE jazyka SQL) je možné definovat, na základě kterého sloupce ve struktuře tabulky a podle jakých kritérií bude tabulka členěna.

[editovat] Příklad 1 - statický partitioning

Tabulka titulů v katalogu firmy distribuující hudební nahrávky může být členěna podle počátečního písmena názvu - vzniká tabulka s předem pevně daným počtem partitions.

[editovat] Příklad 2 - dynamický partitioning

Tabulka zákaznických objednávek v databázi téže firmy může být členěna podle data pořízení objednávky a to po kalendářních měsících (jeden měsíc - jedna partition). Vzniká tak tabulka s dynamicky rostoucím počtem partitions - každý měsíc přibude jedna nová.

[editovat] Použití partitioningu

Užitečnost partitioningu vyplývá z možnosti pracovat nikoliv s celou tabulkou, ale pouze s její relevantní částí - jednou nebo několika partitions:

  • Tabulku lze uložit do několika souborů, z nichž každý může být dokonce uložen na jiném disku - to je vhodné především u velkých tabulek jako jsou faktové tabulky v datovém skladu.
  • Procesy, které hromadně mění data v tabulce, jsou řádově rychlejší, pokud se mohou „opřít“ o způsob členění tabulky do partitions - například u mazání starých dat (příkazem DELETE jazyka SQL) může být tento rozdíl oproti stejnému příkazu spuštěnému nad nerozdělenou velkou tabulkou až tisícinásobný.
  • Každá z partitions může mít trochu jiné nastavení z pohledu její správy - pokud se přidržím příkladu 2 z předchozího odstavce, tak je jen logické, aby partitions obsahující objednávky starší tří měsíců byly pouze pro čtení (read-only), což podstatně sníží časové a kapacitní nároky na zálohování celé tabulky.
  • Při vhodném použití indexů pracuje většina běžných procesů (přidání řádku do tabulky, změna v jednom nebo několika řádcích, získání dat z tabulky za určité omezené časové období apod.) nad jednou konkrétní partition. Podstatně se tím zvyšuje počet uživatelů, kteží mohou s tabulkou pracovat paralelně, aniž by se vzájemně omezovali - tato vlastnost se ještě umocňuje, pokud je databáze umístěna na víceprocesorovém serveru.
V jiných jazycích