Partition (databáze)
Z Wikipedie, otevřené encyklopedie
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.

