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é skladovací potřeby - Instead of a big monolithic database, external storage can span several servers, that allow for easier migration and disk allocation.
 * Database performance - The database server for external storage has very low memory and CPU requirements, since it's just a store and it doesn't need too much caching and it doesn't need to perform complex queries. This allows for the main database server to use all the memory available for caching of other tables that would profit from it.
 * Backups - Backups of big databases take time. Backups of the external storage database can be done incrementally, since old entries aren't mutable. When an external storage database has grown sufficiently, a new database can be created for new external storage, and the old database can be put as read only and removed from routine backups (it still needs to be accessible for MediaWiki, though).

Kód
The main class for interacting with external storage is. You can use  or (more typically)   to store a piece of data and receive the URL at which it was stored; that URL can be used with   to retrieve the data.

Internally,  interacts with the  subclass corresponding with the protocol. , which is the commonly used one, differs from the others in that it provides special handling when the stored data is a serialized subclass; such objects can be retrieved with, in which case the store will unserialize the object and get the appropriate item (by calling   on it).

In practice, you should avoid using  directly most of the time, and use  (or an even higher-level abstraction such as ) instead.

Konfigurace
An example  setup:


 * The line states that a   external store can be used. ( The   part is not an arbitrary name that can be adjusted. It has to be  . ) This corresponds to the   subclass used, and the protocol of the blob address.
 * The line states all the usable clusters with all usable nodes of a cluster. The top-level array's keys denote a cluster's name (The above example defines only one cluster. It has the name  ). The value to those keys are again arrays. They hold the specifications of the individual nodes. The first node is consider the primary. All writes to the database are performed through this primary node. Zero or more replica nodes may follow. ( In the above example, you find two replica nodes ). Each node may have its own ,  ,  ,  , and  , as shown in the example. The   parameter allows to specify how much of the load should pass through this note.
 * The line holds those external stores that may be used for storage of new text. 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