Manual:External storage/cs

Externí úložiště je abstrakce pro ukládání obsahu wiki (tj. toho, co by se normálně vešlo do tabulky ) mimo normální databázi, případně s použitím nějaké komprese. Některá rozšíření (například ) mohou používat externí úložiště přímo pro ukládání jiných druhů dat.

Obsah externího úložiště je adresován URL ve tvaru, přičemž protokol určuje, jaký typ úložiště má být použit. Před verzí 1.32 byly tyto adresy URL uloženy v poli  v tabulce text, přičemž   bylo nastaveno na. Od 1.32 jsou uloženy v poli  tabulky.

Výhody
Velikost tabulky je obvykle největší ze všech tabulek. Na wikinách s miliony úprav může mít text tabulka velikost několika gigabajtů.

Vzhledem k tomu, že obsah tabulky text nelze měnit (úpravy stránek vytvářejí nové revize a nové položky tabulky text, ale staré položky nelze upravovat), poskytuje uložení obsahu do jiné databáze následující výhody:


 * Rozdělené ukládací potřeby - namísto velké monolitické databáze může externí úložiště pokrývat několik serverů, což umožňuje snazší migraci a alokaci disků.
 * Výkon databáze - databázový server pro externí úložiště má velmi nízké nároky na paměť a CPU, protože je to pouze úložiště a nepotřebuje příliš mnoho mezipaměti a nepotřebuje provádět složité dotazy. To umožňuje hlavnímu databázovému serveru využít veškerou dostupnou paměť pro ukládání do mezipaměti jiných tabulek, které by z toho profitovaly.
 * Zálohy - zálohování velkých databází nějakou dobu trvá. Zálohování databáze externího úložiště lze provádět postupně, protože staré položky nelze měnit. Když se databáze externího úložiště dostatečně rozroste, lze vytvořit novou databázi pro nové externí úložiště a starou databázi lze umístit pouze pro čtení a odstranit z rutinních záloh (stále však musí být přístupná pro MediaWiki).

Kód
Hlavní třída pro interakci s externím úložištěm je. Můžete použít  nebo (obvykleji)   k uložení části dat a obdržení adresy URL, na které byla uložena. Tuto adresu URL lze použít s  k načtení dat.

Interně  interaguje s podtřídou  odpovídající protokolu. , který je běžně používaný, se liší od ostatních v tom, že poskytuje speciální manipulaci, když jsou uložená data serializovaná podtřída. Takové objekty lze získat pomocí, v takovém případě úložiště objekt deinializuje a získá příslušnou položku (zavoláním  na něj).

V praxi byste se měli většinu času vyhnout přímému použití  a místo toho použít  (nebo ještě vyšší úroveň abstrakce, jako je ).

Konfigurace
Například nastavení :


 * Řádek uvádí, že lze použít externí úložiště  . (Část   není libovolný název, který lze upravit. Musí to být  .) To odpovídá použité podtřídě   a protokolu adresy blob.
 * Řádek uvádí všechny použitelné clustery se všemi použitelnými uzly clusteru. Klíče pole nejvyšší úrovně označují název clusteru (Výše uvedený příklad definuje pouze jeden cluster. Má název  ). Hodnotou těchto klíčů jsou opět pole. Obsahují specifikace jednotlivých uzlů. První uzel je považován za primární. Všechny zápisy do databáze se provádějí přes tento primární uzel. Může následovat nula nebo více replikovaných uzlů. (Ve výše uvedeném příkladu najdete dva replikované uzly). Každý uzel může mít vlastní ,  ,  ,   a  , jak je znázorněno v příkladu. Parametr   umožňuje určit, jak velká část zátěže by měla projít touto poznámkou.
 * Řádek obsahuje ta externí úložiště, které lze použít pro uložení nového textu. If you omit this line, the external store will be read-only and new texts will go into the default database (i.e.: the same database holding page, revision, image data; not the cluster).

Pro nastavení multiprimární (dříve nazývané multi-master) wiki farmy (jako je Wikimedie) zvažte použití.



Nastavení databáze
Pro výše uvedený příklad konfigurace byste museli:


 * 1) Create the database   on the host
 * 2) Run the   SQL-script on the on the database   on the host  . Do not use   for this task, as it will add the required tables to your default database (i.e.: the database holding page, revision, image data) and not to  . If you are not sure how to run the SQL-script on the database   on the host , please consult your database documentation.
 * 3) Set up replication (consult your database's documentation on how to set up replication) towards   on the host , and
 * 4) Set up replication towards   on the host.



Údržbářské skripty
Existuje několik skriptů údržby pro přesun obsahu do externího úložiště:


 * - move old revisions to external storage
 * - compress old revisions and potentially move them to external storage
 * - move revisions (or other data) from one external storage to another and recompress them in the process
 * - when used with --force and has been configured with.



Související odkazy

 * External storage