ugif 04 2011 consulti x mediawiki - ugif
TRANSCRIPT
User Group Informix France
MediaWikiMediaWiki et Informix et Informix
Franck [email protected]
Lundi 4 avril 2011Lundi 4 avril 2011
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
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
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
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
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
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
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
User Group Informix France
Base de donnBase de donnééeses
Basic Text Search
MédiaWiki
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
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
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?
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 ??
User Group Informix France
Que stocke les CLOB de MediaWiki ?
Données stockées dans un CLOB
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
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 ??
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 ??
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??
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
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
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
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
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
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
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
User Group Informix France
Exemple dExemple d’’ utilisation chez utilisation chez ConsultiXConsultiX
User Group Informix France
Exemple dExemple d’’ utilisation chez utilisation chez ConsultiXConsultiX
User Group Informix France
Exemple d’utilisation chez ConsultiX
User Group Informix France
Exemple d’utilisation chez ConsultiX
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
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
User Group Informix France
Questions Questions -- MerciMerci
Franck [email protected]
Lundi 4 avril 2011Lundi 4 avril 2011