Oddíl (databáze) - Partition (database)
![]() | tento článek potřebuje další citace pro ověření.Březen 2014) (Zjistěte, jak a kdy odstranit tuto zprávu šablony) ( |
A rozdělit je rozdělení logického databáze nebo jeho základní prvky do samostatných samostatných částí. Rozdělení databáze se běžně provádí pro správu, výkon nebo dostupnost[1] důvody, nebo z vyvažování zátěže. Je populární v distribuované systémy pro správu databází, kde každý oddíl může být rozložen do více uzlů, přičemž uživatelé v uzlu provádějí místní transakce v oddílu. To zvyšuje výkon webů, které mají pravidelné transakce zahrnující určité pohledy na data, při zachování dostupnosti a zabezpečení.
Kritéria rozdělení
Aktuální high-end systémy pro správu relačních databází stanovit různá kritéria pro rozdělení databáze. Berou a rozdělovací klíč a přiřadit oddíl na základě určitých kritérií. Některá běžná kritéria zahrnují:
- Rozdělení rozsahu: vybere oddíl určením, zda je klíč rozdělení do určitého rozsahu. Příkladem může být oddíl pro všechny řádky kde je „PSČ“ sloupec má hodnotu mezi 70000 a 79999. Distribuuje n-tice na základě hodnotových intervalů (rozsahů) nějakého atributu. Kromě podpory dotazů na přesnou shodu (jako v hashování) je vhodný pro dotazy na rozsah. Například dotaz s predikátem „A mezi A1 a A2“ může být zpracován pouze jediným uzlem (uzly) obsahujícími n-tice.
- Seznam oddílů: oddílu je přiřazen seznam hodnot. Pokud má klíč rozdělení jednu z těchto hodnot, je vybrán oddíl. Například všechny řádky, kde je sloupec
Země
je buďIsland
,Norsko
,Švédsko
,Finsko
neboDánsko
mohl vytvořit oddíl pro Severské země. - Složené rozdělení: umožňuje určité kombinace výše uvedených schémat rozdělení, například nejprve aplikováním rozdělení oblastí a poté rozdělením hash. Důsledné hašování lze považovat za směsici hash a rozdělení seznamu, kde hash zmenšuje klíčový prostor na velikost, která může být uvedena.
- Dělení za sebou: nejjednodušší strategie, zajišťuje jednotnou distribuci dat. S
n
příčky,i
ta n-tice v pořadí vložení je přiřazena oddílu(i mod n)
. Tato strategie umožňuje paralelní přístup k relaci. Přímý přístup k jednotlivým n-ticím však na základě predikátu vyžaduje přístup k celé relaci. - Rozdělení hash: platí a hashovací funkce na nějaký atribut, který dává číslo oddílu. Tato strategie umožňuje přesné dotazy na atribut výběru zpracovat přesně jedním uzlem a všechny ostatní dotazy zpracovat všechny uzly paralelně.
Metody dělení
Rozdělení lze provést vytvořením samostatných menších databází (každá s vlastními) tabulky, indexy, a transakce protokoly ), nebo rozdělením vybraných prvků, například pouze jedné tabulky.
- Horizontální rozdělení zahrnuje vkládání různých řádků do různých tabulek. Například zákazníci s PSČ méně než 50000 je uloženo v CustomersEast, zatímco zákazníci s PSČ větší nebo rovnou 50000 jsou uloženi v CustomersWest. Dvě tabulky oddílů jsou pak CustomersEast a CustomersWest, zatímco a Pohled s svaz může být vytvořen nad oběma z nich, aby poskytoval úplný pohled na všechny zákazníky.
- Vertikální rozdělení zahrnuje vytváření tabulek s menším počtem sloupců a použití dalších tabulek k uložení zbývajících sloupců.[1] Obecně je tato praxe známá jako normalizace. Vertikální rozdělení se však rozšiřuje dále a dělí sloupce, i když je již normalizováno. Tento typ rozdělení se také nazývá „rozdělení řádků“, protože řádky se dělí podle sloupců a lze je provádět explicitně nebo implicitně. K realizaci vertikálního rozdělení lze použít odlišné fyzické stroje: Ukládání zřídka použitých nebo velmi širokých sloupců, zabírajících značné množství paměti, na jiném počítači, je například metoda vertikálního rozdělení. Běžnou formou vertikálního dělení je rozdělení statických dat z dynamických dat, protože k prvním je rychlejší přístup než k druhým, zvláště pro tabulku, kde se dynamická data nepoužívají tak často jako statická. Vytvoření pohledu napříč dvěma nově vytvořenými tabulkami obnoví původní tabulku s výkonnostní penalizací, ale samotný přístup ke statickým datům zobrazí vyšší výkon. A sloupcová databáze lze považovat za databázi, která byla vertikálně rozdělena, dokud není každý sloupec uložen ve vlastní tabulce.
Viz také
Reference
- ^ A b „Algoritmy vertikálního dělení pro návrh databáze“, Shamkant Navathe, Stefano Ceri, Gio Wiederhold a Jinglie Dou, Stanford University 1984