Partition (databáze)

Z Wikipedie, otevřené encyklopedie

Skočit na: Navigace, Hledání

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, nazývaných partition (český přibližný ekvivalent oddíl se příliš neadaptoval). Pokud databázový server poskytuje takovou možnost, umožňuje tato technologie rychlejší manipulaci s tabulkami, jejichž velikost se pohybuje na hranici možností použitých systémových prostředků.

Partitioning podporují např. databázové systémy Oracle, MySQL od verze 5.1, MSSQL 2005 a další.

Obsah

[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.

CREATE TABLE slovnik (id INT, heslo VARCHAR(100), vyznam TEXT)
    ENGINE=INNODB
    PARTITION BY HASH(heslo)
    PARTITIONS 5;

Výše uvedený příklad (v MySQL) nastaví rozdělování v tabulce slovnik podle výsledku hašovací funkce sloupce heslo na 5 oddílů.

Chceme-li partitioning u již existující odebrat, můžeme napsat:

ALTER TABLE slovnik
    REMOVE PARTITIONING;

[editovat] Rozdělení partitioningu

[editovat] Horizontální partitioning

Rozděluje se na úrovni celých řádků. Využití: např. u rozsáhlých tabulek, u nichž se část dat (např. archiv článků) používá velmi zřídka a naopak u několika posledních řádků je požadavek na rychlý přístup (ty se pak umístí na nejrychlejší disk).

[editovat] Vertikální partitioning

Partitioning rozděluje podle sloupců tabulky, tj. sloupce tabulky mohou být uloženy na jiných discích. Využití: např. u tabulky obsahující pole pro ukládání rozsáhlého textového nebo binárního obsahu (slovníky, tabulky článků, obrázků nebo jiných souborů uložených v databázi).

[editovat] Statický partitioning

Příklad: 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.

Statický partitioning vzniká též při užití hashovací funkce na aspekt, podle kterého se má určit, do kterého oddílu daný řádek (sloupec) spadne.

[editovat] Dynamický partitioning

Příklad: 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] Vlastnosti partitioningu

Užitečnost partitioningu vyplývá z možnosti pracovat nikoliv s celou tabulkou, ale pouze s její relevantní částí:

  • Takto dělená tabulka se pak ukládá do více souborů, z nichž každý může být 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ý.
  • Agregační funkce spouštěné nad dělenou tabulkou může databázový server rozdělit podle rozdělení v definici partitioningu do více procesů, spustit každý takový proces na respektivním místě souborového systému, a nakonec získané mezivýsledky sloučit do celkového výsledku.
  • Pokud to SŘBD dovoluje, může mít každá partition trochu jiné nastavení z pohledu její správy – dle příkladu u dynamického partitioningu je 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.

[editovat] Externí odkazy

V jiných jazycích