32
User Group Informix France MediaWiki MediaWiki et Informix et Informix Franck THOMAS [email protected] Lundi 4 avril 2011 Lundi 4 avril 2011

Ugif 04 2011 consulti x mediawiki - ugif

  • Upload
    ugif

  • View
    326

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Ugif 04 2011   consulti x mediawiki - ugif

User Group Informix France

MediaWikiMediaWiki et Informix et Informix

Franck [email protected]

Lundi 4 avril 2011Lundi 4 avril 2011

Page 2: Ugif 04 2011   consulti x mediawiki - ugif

User Group Informix France

AGENDAAGENDA� 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

Page 3: Ugif 04 2011   consulti x mediawiki - ugif

User Group Informix France

� Logiciel libre d évelopp é à l'origine pour Wikip édia

�Utilis é pour d ’autres sites de l'association àbut non lucratif Wikimedia Foundation

�Sous license GNU General Public License(GPL).

PrPréésentation de sentation de MediaWikiMediaWiki

Page 4: Ugif 04 2011   consulti x mediawiki - ugif

User Group Informix France

� Wiki : mot hawa ïen signifiant rapide

� WikiWikiWeb est le 1 er wiki, inventé en 1994 par Ward Cunningham pour son site Web : http://c2.com/cgi/wiki

Origine de Origine de MediaWikiMediaWiki

Page 5: Ugif 04 2011   consulti x mediawiki - ugif

User Group Informix France

� 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

PropriPropri ééttéés ds d’’ un site un site WikiWiki

Page 6: Ugif 04 2011   consulti x mediawiki - ugif

User Group Informix France

� 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

Installer Installer MediaWikiMediaWiki

Page 7: Ugif 04 2011   consulti x mediawiki - ugif

User Group Informix France

� 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

PropriPropri ééttéés de la base de donns de la base de donnééeses

Page 8: Ugif 04 2011   consulti x mediawiki - ugif

User Group Informix France

� Nombre de tables : 48� Nombre de fonctions externes C : 72� Nombre de fonctions internes : 1

Base de donnBase de donnééeses-- StatistiquesStatistiques

1BIGINT

2SERIAL8

1FLOAT

28SMALLINT

12SERIAL

18CLOB

9Variable-length opaque type

97VARCHAR

20DATETIME

93INTEGER

25CHAR

Nombre

Page 9: Ugif 04 2011   consulti x mediawiki - ugif

User Group Informix France

Base de donnBase de donnééeses

Basic Text Search

MédiaWiki

Page 10: Ugif 04 2011   consulti x mediawiki - ugif

User Group Informix France

� 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.

Base de donnBase de donnéées es –– Tables principalesTables principales

Page 11: Ugif 04 2011   consulti x mediawiki - ugif

User Group Informix France

� Table mwuser : contient la liste des comptes utilisateurs du site

� Table user_groups : contient le profil d’un login (administrateur, bureaucrate, utilisateur …)

Base de donnBase de donnéées es –– Tables principalesTables principales

Page 12: Ugif 04 2011   consulti x mediawiki - ugif

User Group Informix France

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

Que stocke un CLOB? Que stocke un CLOB?

Page 13: Ugif 04 2011   consulti x mediawiki - ugif

User Group Informix France

� Le contenu des page créées (table pagecontent)� Le contenu des pages archivées (table archive) suit e

à 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) � …

Que stocke les CLOB de Que stocke les CLOB de MediaWikiMediaWiki ??

Page 14: Ugif 04 2011   consulti x mediawiki - ugif

User Group Informix France

Que stocke les CLOB de MediaWiki ?

Données stockées dans un CLOB

Page 15: Ugif 04 2011   consulti x mediawiki - ugif

User Group Informix France

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.

Basic Basic TextText SearchSearch

Page 16: Ugif 04 2011   consulti x mediawiki - ugif

User Group Informix France

� Création d’un smartblobspace ou d’un extspace pour st ocker 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)

Comment est utilisComment est utiliséé le Basic le Basic TextText SearchSearchdans la base de donndans la base de donnéées es MediaWikiMediaWiki ??

Page 17: Ugif 04 2011   consulti x mediawiki - ugif

User Group Informix France

� 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

Comment est utilisComment est utiliséé le Basic le Basic TextText SearchSearchdans le code PHP de dans le code PHP de MediaWikiMediaWiki ??

Page 18: Ugif 04 2011   consulti x mediawiki - ugif

User Group Informix France

class SearchIDS extends SearchEngine {var $strictMatching = true;

function __construct($db) {$this->db = $db;

}/*** Perform a full text search query and return a result se t.*/function searchText( $term ) {

$resultSet = $this->db->resultObject( $this->db->que ry( $this->getQuery( $this->filter( $term ), true ) ) );return new IDSSearchResultSet( $resultSet, $this->s earchTerms );

}…function parseQuery( $filteredText, $fulltext ) {

global $wgContLang;$lc = SearchEngine::legalSearchChars(); // Minus for mat 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') ";

}

Comment est utilisComment est utiliséé le Basic le Basic TextText SearchSearch??

Page 19: Ugif 04 2011   consulti x mediawiki - ugif

User Group Informix France

Exemple de recherche avec le BTS

Recherche dans l’indexBTS sur les titres de page

Recherche dans l’indexBTS sur le contenu des pages

Page 20: Ugif 04 2011   consulti x mediawiki - ugif

User Group Informix France

� Configuration minimale requise : IBM Informix Dynami c Server, Version, 11.10.

� Langues idéographiques non prises en charge. Exempl e : le chinois, le coréen et le japonais.

� Requêtes réparties et distribuées d’une instance à u ne autre non prises en charge.

� La parallélisation des requêtes n’est pas prise en c harge (PDQPRIORITY).

� Vous devez stocker les données textuelles dans une colonne de données de type BLOB, CHAR, CLOB, LVARCHAR, NCHAR, NVARCHAR, ou VARCHAR.

Rappel sur les Rappel sur les rectrictionsrectrictions du BTSdu BTS

Page 21: Ugif 04 2011   consulti x mediawiki - ugif

User Group Informix France

� 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 d e 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

Portage vers Portage vers InformixInformix

Page 22: Ugif 04 2011   consulti x mediawiki - ugif

User Group Informix France

� Adaptation Informix des requêtes SQL écrites en MySQ L dans les classes PHP suivantes :

– Category– SpecialAncientpages– SpecialDisambiguations– SpecialNewimages– SpecialUnusedimages

Portage vers Portage vers InformixInformix

Page 23: Ugif 04 2011   consulti x mediawiki - ugif

User Group Informix France

� Exemple : la classe PHP IDSFields<?php/*** This is the IDS database abstraction layer.** @package MediaWiki*/class IDSFields {

private $name, $tablename, $default, $max_length, $n ullable, $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", "date time","byte", "text", "varchar", "internal", "nchar", "nv archar","int8", "serial8", "set", "multiset", "list", "unna med row","collection");

Etc.

Portage vers Portage vers InformixInformix

Page 24: Ugif 04 2011   consulti x mediawiki - ugif

User Group Informix France

Adaptation du programme AutoLoader.php<?php

/* This defines autoloading handler for whole MediaW iki framework */

ini_set('unserialize_callback_func', '__autoload' ) ;

# Locations of core classes# Extension classes are specified with $wgAutoloadC lasses# This array is a global instead of a static member of AutoLoader to work around a bug in APCglobal $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',

Portage vers Portage vers InformixInformix

Page 25: Ugif 04 2011   consulti x mediawiki - ugif

User Group Informix France

� Fiche projet de nos clients – Description du projet– Localisation des sources d’un projet et des livrabl es– 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 d e l’équipe de ConsultiX

Exemples dExemples d’’ utilisation chez utilisation chez ConsultiXConsultiX

Page 26: Ugif 04 2011   consulti x mediawiki - ugif

User Group Informix France

Exemple dExemple d’’ utilisation chez utilisation chez ConsultiXConsultiX

Page 27: Ugif 04 2011   consulti x mediawiki - ugif

User Group Informix France

Exemple dExemple d’’ utilisation chez utilisation chez ConsultiXConsultiX

Page 28: Ugif 04 2011   consulti x mediawiki - ugif

User Group Informix France

Exemple d’utilisation chez ConsultiX

Page 29: Ugif 04 2011   consulti x mediawiki - ugif

User Group Informix France

Exemple d’utilisation chez ConsultiX

Page 30: Ugif 04 2011   consulti x mediawiki - ugif

User Group Informix France

� 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.

Critiques et limitation de Critiques et limitation de MediaWikiMediaWiki

Page 31: Ugif 04 2011   consulti x mediawiki - ugif

User Group Informix France

Optimisations Optimisations InformixInformix possiblespossibles

� 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

Page 32: Ugif 04 2011   consulti x mediawiki - ugif

User Group Informix France

Questions Questions -- MerciMerci

Franck [email protected]

Lundi 4 avril 2011Lundi 4 avril 2011