Your SlideShare is downloading. ×
Ugif 04 2011   consulti x mediawiki - ugif
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Ugif 04 2011 consulti x mediawiki - ugif

316

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
316
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
11
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. MediaWiki et Informix Franck THOMAS franck.thomas@consult-ix.fr Lundi 4 avril 2011 User Group Informix France
  • 2. AGENDA Présentation et origine de MediaWiki Comment installer MediaWiki avec Informix ? Présentation de la base de données MediaWiki : propriétés, statistisques etc. CLOB : usage dans MediaWiki Module BasicTextSearch : Configuration et usage dans MediaWiki Portage de MediaWiki vers Informix Exemple d’utilisation et cas d’utilisation chez ConsultiX Critiques et limitation de MediaWiki Optimisations Informix possibles sur la base de données User Group Informix France
  • 3. Présentation de MediaWiki Logiciel libre développé à lorigine pour Wikipédia Utilisé pour d’autres sites de lassociation à but non lucratif Wikimedia Foundation Sous license GNU General Public License (GPL). User Group Informix France
  • 4. Origine de MediaWiki Wiki : mot hawaïen signifiant rapide WikiWikiWeb est le 1er wiki, inventé en 1994 par Ward Cunningham pour son site Web : http://c2.com/cgi/wiki User Group Informix France
  • 5. Propriétés d’un site Wiki Pages contenant des hyperliens pointant les unes vers les autres Pages modifiables par les visiteurs (identifiés ou non) avec un simple navigateur Web Ecriture collaborative Illustration collaborative Historique et suivi des pages modifiées facilement disponibles User Group Informix France
  • 6. Installer MediaWiki Télécharger MediaWiki 1.15.x Télécharger ensuite le package développé par l’équipe de Jacques Roy sur le site IIUG : http://www.iiug.org/opensource Suivre les instructions du fichier README de l’équipe de Jacques Roy Remarque : Fonctionne avec PDO IBM mais aussi avec PDO Informix User Group Informix France
  • 7. Propriétés de la base de données Base journalisée Création d’un smart blob space nécessaire pour stocker des données CLOB Module Basic Text Search à mettre en place pour le module de recherche du site wiki Création d’un smartblobspace ou d’un extspace pour stocker les index du Basic Text Search User Group Informix France
  • 8. Base de données- Statistiques Nombre de tables : 48 Nombre de fonctions externes C : 72 Nombre de fonctions internes : 1 Nombre CHAR 25 INTEGER 93 DATETIME 20 VARCHAR 97 Variable-length opaque type 9 CLOB 18 SERIAL 12 SMALLINT 28 FLOAT 1 SERIAL8 2 BIGINT 1 User Group Informix France
  • 9. Base de données Basic Text Search MédiaWiki User Group Informix France
  • 10. Base de données – Tables principales Table page : contient la liste des titres des pages créées dans le site (indexés par le BTS) Table pagecontent : contenu d’une page créée dans le site (indexé par le BTS) Table externallinks: Table des liens externes contenus dans une page vers d’autres sites. Table pagelinks : Table des liens internes contenus dans une page du site vers d’autres pages du site Table image : contient la liste des images et autres fichiers uploadés sur le site Wiki. User Group Informix France
  • 11. Base de données – Tables principales Table mwuser : contient la liste des comptes utilisateurs du site Table user_groups : contient le profil d’un login (administrateur, bureaucrate, utilisateur …) User Group Informix France
  • 12. Que stocke un CLOB? Rappel : Un CLOB stocke des données texte ASCII, dont du texte formaté comme : – PostScript, – Hypertext Markup Language (HTML), – Standard Graphic Markup Language (SGML), – Extensible Markup Language (XML). Les champs de type CLOB doivent être stockés dans des smartblobspaces User Group Informix France
  • 13. Que stocke les CLOB de MediaWiki ? Le contenu des page créées (table pagecontent) Le contenu des pages archivées (table archive) suite à leur suppression du site Les liens externes (table externallinks) Les méta-données sur les images du site (table image) Les formules mathématiques (table math) Les journaux des modifications (table logging) Les options utilisateurs (table mw_user) … User Group Informix France
  • 14. Que stocke les CLOB de MediaWiki ? Données stockées dans un CLOB User Group Informix France
  • 15. Basic Text Search Rappel : Recherche des mots et des phrases dans un référentiel de document non structuré stocké dans une colonne de table. Utilise le composant de recherche textuelle open source CLucene. Extraction rapide des données textuelles Indexation automatique des données textuelles. User Group Informix France
  • 16. Comment est utilisé le Basic Text Searchdans la base de données MediaWiki ? Création d’un smartblobspace ou d’un extspace pour stocker les index du Basic Text Search Création d’un processus virtuel de la classe BTS: – Modification du fichier ONCONFIG Ou – Ajout dynamique du processus virtuel BTS avec la commande onmode Enregistrement pour la base de données MediaWiki du BTS avec le blademanager (ou la fonction SysBldPrepare) Création de 2 index BTS sur : – Les titres des pages Web (stockés dans une colonne varchar de 255 caractères) – Le contenu des pages Web (stockés dans une colonne CLOB) User Group Informix France
  • 17. Comment est utilisé le Basic Text Searchdans le code PHP de MediaWiki ? Création de la classe PHP SearchIDS héritant de la classe mère SearchEngine de MediaWiki Appel au prédicat de recherche bts_contains() dans la classe PHP SearchIDS User Group Informix France
  • 18. Comment est utilisé le Basic Text Search ? class SearchIDS extends SearchEngine { var $strictMatching = true; function __construct($db) { $this->db = $db; } /** * Perform a full text search query and return a result set. */ function searchText( $term ) { $resultSet = $this->db->resultObject( $this->db->query( $this->getQuery( $this->filter( $term ), true ) ) ); return new IDSSearchResultSet( $resultSet, $this->searchTerms ); } … function parseQuery( $filteredText, $fulltext ) { global $wgContLang; $lc = SearchEngine::legalSearchChars(); // Minus format chars $searchon = ; $this->searchTerms = array(); $m = array(); if( preg_match_all( /([-+<>~]?)(([ . $lc . ]+)(*?)|"[^"]*")/, ……. $searchon = $this->db->strencode( $searchon ); $field = $this->getIndexField( $fulltext ); return " bts_contains($field, $searchon) "; } User Group Informix France
  • 19. Exemple de recherche avec le BTS Recherche dans l’index BTS sur les titres de page Recherche dans l’index BTS sur le contenu des pages User Group Informix France
  • 20. Rappel sur les rectrictions du BTS Configuration minimale requise : IBM Informix Dynamic Server, Version, 11.10. Langues idéographiques non prises en charge. Exemple : le chinois, le coréen et le japonais. Requêtes réparties et distribuées d’une instance à une autre non prises en charge. La parallélisation des requêtes n’est pas prise en charge (PDQPRIORITY). Vous devez stocker les données textuelles dans une colonne de données de type BLOB, CHAR, CLOB, LVARCHAR, NCHAR, NVARCHAR, ou VARCHAR. User Group Informix France
  • 21. Portage vers Informix Création des classes PHP pour la gestion de la base de données : – DatabaseIDS dérivant de la classe MediaWiki Database – IDSResultWrapper pour la gestion de la base de données par la classe DatabaseIDS – IDSField pour la gestion des champs Informix des tables Création des classes PHP suivantes pour le moteur de recherche et le BTS : – SearchIDS héritant de la classe MediaWiki SearchEngine – IDSSearchResultSet pour la gestion des résultats de recherche Adaptation de la classe AutoLoader pour charger les bonnes classes PHP pour la gestion d’IDS et du BTS à l’exécution User Group Informix France
  • 22. Portage vers Informix Adaptation Informix des requêtes SQL écrites en MySQL dans les classes PHP suivantes : – Category – SpecialAncientpages – SpecialDisambiguations – SpecialNewimages – SpecialUnusedimages User Group Informix France
  • 23. Portage vers Informix Exemple : la classe PHP IDSFields <?php /** * This is the IDS database abstraction layer. * * @package MediaWiki */ class IDSFields { private $name, $tablename, $default, $max_length, $nullable, $type; private $is_pk, $is_unique, $is_multiple, $is_key; /* From the ESQL/C manual tables 3-3 and 3-4 */ private $alltypes = array( "char", "smallint", "integer", "float", "smallfloat", "decimal", "serial", "date", "money", "null", "datetime", "byte", "text", "varchar", "internal", "nchar", "nvarchar", "int8", "serial8", "set", "multiset", "list", "unnamed row", "collection"); Etc. User Group Informix France
  • 24. Portage vers Informix Adaptation du programme AutoLoader.php <?php /* This defines autoloading handler for whole MediaWiki framework */ ini_set(unserialize_callback_func, __autoload ); # Locations of core classes # Extension classes are specified with $wgAutoloadClasses # This array is a global instead of a static member of AutoLoader to work around a bug in APC global $wgAutoloadLocalClasses; $wgAutoloadLocalClasses = array( # Includes AjaxDispatcher => includes/AjaxDispatcher.php, AjaxResponse => includes/AjaxResponse.php, AlphabeticPager => includes/Pager.php, APCBagOStuff => includes/BagOStuff.php, (…) IDSSearchResultSet => includes/SearchIDS.php, SearchIDS => includes/SearchIDS.php, # includes/db Blob => includes/db/Database.php, ChronologyProtector => includes/db/LBFactory.php, Database => includes/db/Database.php, DatabaseIDS => includes/db/DatabaseIDS.php, DatabaseMssql => includes/db/DatabaseMssql.php, DatabaseMysql => includes/db/Database.php, DatabaseOracle => includes/db/DatabaseOracle.php‘ (…) IDSSearchResultSet => includes/SearchIDS.php, User Group Informix France
  • 25. Exemples d’utilisation chez ConsultiX Fiche projet de nos clients – Description du projet – Localisation des sources d’un projet et des livrables – Liste des documents liés au projet – Procédure à suivre pour la compilation des sources – … Procédures techniques internes : – Sauvegarde d’instance Informix – Sauvegarde des données de chaque ordinateur – … Fiche technique de nos serveurs: – Distribution Unix installé – N°de version linux utilisé – Liste des produits installés – … Modèles de document accessibles à tous les membres de l’équipe de ConsultiX User Group Informix France
  • 26. Exemple d’utilisation chez ConsultiX User Group Informix France
  • 27. Exemple d’utilisation chez ConsultiX User Group Informix France
  • 28. Exemple d’utilisation chez ConsultiX User Group Informix France
  • 29. Exemple d’utilisation chez ConsultiX User Group Informix France
  • 30. Critiques et limitation de MediaWiki Nécessité d’apprendre la syntaxe wiki pour éditer une page, des liens, ajouter une image dans une page … L’édition d’une page n’est pas WYSIWYG Impossibilité d’utiliser ontape ou onbar pour sauvegarder les fichiers images et les documents (Word, PDF, Excel …) uploadés sur le site wiki. En effet, Les images et les documents uploadés sont stockés sur le disque dur du serveur hébergeant le site et non dans la base de données. User Group Informix France
  • 31. Optimisations Informix possibles Création d’un dbspace dédié aux index séparément du dbspace des données Ajout d’un smartblospace temporaire pour la gestion des données temporaires du BTS Définir les extent size des tables de MediaWiki Pour les champs VARCHAR, prévoir une taille minimale par défaut User Group Informix France
  • 32. Questions - Merci Franck Thomas franck.thomas@consult-ix.fr Lundi 4 avril 2011 User Group Informix France

×