Old projects/Image Store Requirements
From MediaWiki.org
This got implemented and merged in trunk by Tim Starling in 2007
|
|
This feature has been deprecated and should not be used with current versions of MediaWiki. This feature was deprecated (or possibly removed completely) in version 1.11. |
This page lists the requirements for an image storage software (called 'the software') that we want to use to replace the current NFS-based approach.
The requirements:
[edit] Platform
- The software must be open source.
- We must have the right to change the software and distribute our changes.
- The software must be runnable under Linux and BSD.
- The software must provide a PHP interface library.
- The software should be written in a reasonably well known language (e.g. C, C++, Perl, PHP, Ruby, ... but not brainfuck, OCAML, ...)
- If the software requires additional tools to be installed, those must be open source also.
- If the software requires a database, MySQL and (to a lesser extent) PostgreSQL are preferred.
[edit] Architecture
- The software must be able to store images, to retrieve those images and to remove images from the storage.
- Images will be referenced by a key generated by MediaWiki. The software must not require that MediaWiki stores keys generated by the software.
- Images belong to certain storage categories. The software will provide ways to generate storage categories, to change the characteristics of storage categories and to remove storage categories.
- The software has to provide features that make the image store highly available. The HA features can be in either the server part, the client library, or both of them.
- The level of HA that has to be delivered is tunable by storage category. At least two levels have to be implemented:
- No HA. The image is stored only once.
- Mirroring. The software has to ensure that at any time at least two copies of the image exist.
- The software must provide a way to group storage nodes (the computers that hold images) into locations (e.g. to reflect their placement in different datacenters).
- If there are more than one locations defined, the software has to distribute images from mirrored storage categories to different locations.
- The level of HA that has to be delivered is tunable by storage category. At least two levels have to be implemented:
[edit] Interface
- The software must provide a PHP interface library. The library must be object-oriented. The software must work with PHP 4 version 4.3.11 and above, and should also work with PHP 5.0.4.
- If the image is available from multiple locations, the software should point the user to the closest server. If needed, special DNS configurations may be used to achieve this.
- The software must report the outage of any server or component. IRC- and email-based notifications are prefered (iNotif).
- The software should provide an easy way to generate backup dumps of the images within one storage category. TAR-format is prefered.