<?xml version="1.0"?>
<!DOCTYPE webpage PUBLIC "-//Norman Walsh//DTD Website V2.1b1//EN" "../../../dtd/website.dtd" [
<!ENTITY entrepot SYSTEM "../configuration/entrepot.xml" NDATA XML>
]>
<webpage id="installation_disque">
	<head>
		<title>Planification de l'espace disque</title>
		<titleabbrev>Arborescence disque</titleabbrev>
		<author>
			<firstname>Martin</firstname>
			<surname>Sévigny</surname>
			<affiliation>
				<orgname>AJLSM</orgname>
			</affiliation>
		</author>
		<revhistory>
			<revision>
				<revnumber>1.0</revnumber>
				<date>2003-05-13</date>
			</revision>
		</revhistory>
	</head>
	<para>L'installation d'un serveur SDX peut se faire très simplement, mais derrière cette simplicité se cache une grande souplesse qui permet de réaliser un déploiement personnalisé du serveur et de ses applications. Nous allons présenter ici quelques informations et astuces permettant de bien gérer l'espace disque requis par un serveur SDX et ses applications.</para>
	<section>
		<title>Les composantes sous-jacentes à SDX</title>
		<para>SDX a besoin au minimum d'une machine virtuelle Java, d'un serveur Web et d'un moteur de servlets pour fonctionner correctement. Ces trois composantes nécessitent de l'espace disque, espace qui varie en fonction des logiciels sélectionnés et de leur configuration. Cet espace peut être relativement important ; par exemple, une machine virtuelle Java de Sun peut occuper jusqu'à 70 Mo, Tomcat (moteur de servlets) peut occuper 30 Mo, etc. Nous vous conseillons de consulter la documentation des logiciels utilisés pour en savoir plus sur l'espace disque requis.</para>
	</section>
	<section>
		<title>Le serveur SDX</title>
		<para>Le serveur SDX lui-même nécessite un certain espace disque. Fondamentalement, il s'agit de l'espace occupé par le contenu du fichier <filename>sdx.war</filename> une fois qu'il est déployé par le moteur de servlets. Le dossier créé contient la configuration du serveur, les librairies (<filename>.jar</filename>), les ressources communes, l'interface d'administration, et une application exemple (<literal>sdxtest</literal>). L'espace occupé par le dossier <filename class="directory">sdx</filename> est de 27 Mo environ.</para>
		<para>Il existe deux façons de réduire cet espace disque si nécessaire. La première consiste à supprimer l'application exemple (<literal>sdxtest</literal>), ce qui fait 718 Ko de moins. La seconde consiste à supprimer les librairies non nécessaires ; c'est-à-dire l'un ou l'autre des fichiers <filename>webapps/sdx/WEB-INF/lib/*.jar</filename>. Certaines librairies sont essentielles, mais d'autres peuvent être supprimées si les fonctions qu'elles permettent ne sont pas utilisées dans les applications et ne sont pas référencées dans les fichiers de configuration ou les <emphasis>sitemap</emphasis>.</para>
		<para>L'espace dique requis par le serveur SDX va croître avec le temps, car par défaut les fichiers <emphasis>log</emphasis> sont stockés dans le dossier <filename class="directory">webapps/sdx/WEB-INF/logs</filename>. L'emplacement de ces fichiers peut être changé en modifiant le fichier <filename>webapps/sdx/WEB-INF/logkit.xconf</filename>. La vitesse de croissance de ces fichiers peut aussi être contrôlée en modifiant l'attribut <sgmltag class="attribute">log-level</sgmltag> pour le mettre, par exemple, à <sgmltag class="attvalue">ERROR</sgmltag> ou <sgmltag class="attvalue">FATAL</sgmltag>. Pour connaître précisément le taux de croissance de ces fichiers, il est préférable d'effectuer des tests avec les applications qui seront installées sur le serveur.</para>
		<para>L'installation du serveur SDX se fait normalement dans le dossier <filename class="directory">webapps</filename> du moteur de servlets. En utilisant judicieusement les liens symboliques (sous GNU/Linux - UNIX), il est possible de placer le dossier <filename class="directory">sdx</filename> n'importe où sur le système de fichiers accessible au serveur. Par ailleurs, certains moteurs de servlets (dont les dernières versions de Tomcat) permettent de préciser l'emplacement des applications Web à l'aide d'un fichier de configuration. Cette option permet ainsi de gérer plus facilement l'espace disque requis par le serveur SDX, car celui-ci peut être installé n'importe où sur les disques accessibles par le moteur de servlets, pas seulement dans le dossier <filename class="directory">webapps</filename>.</para>
	</section>
	<section>
		<title>Une application SDX</title>
		<para>Les applications SDX se trouvent nécessairement dans un dossier situé dans le dossier <filename class="directory">webapps/sdx</filename>. Le nom de ce dossier est toutefois variable et bien entendu les liens symboliques peuvent être utilisés (sur les systèmes d'exploitation qui supportent cette fonction) pour distribuer les applications sur différents disques ou en différents emplacements.</para>
		<para>L'espace disque requis par une application ne peut pas être déterminé sans connaître les détails de cette application. Nous allons plutôt donner des indications sur les aspects qui font varier l'espace disque requis et sur les méthodes disponibles pour bien gérer cet espace dique.</para>
		<section>
			<title>Sources</title>
			<para>Les sources de l'application sont les fichiers <filename>*.xsp</filename>, <filename>*.xsl</filename>, etc. qui contiennent la logique et la présentation des fonctionnalités de l'application, les images de l'interface, etc. Ces sources occupent en général un faible espace disque (quelques centaines de Ko) et ne présentent donc pas de problème particulier pour la gestion de l'espace disque.</para>
		</section>
		<section>
			<title>Documents et indexation</title>
			<para>SDX étant fondamentalement un outil de recherche XML, une application SDX normale va indexer des documents XML dans le but de permettre leur recherche ultérieure et leur consultation. Ainsi, sauf si les documents ne sont jamais consultés (cas rare), les documents XML originaux doivent être <emphasis>stockés</emphasis> par SDX. Ce stockage peut prendre différentes formes et l'espace disque requis est fortement dépendant de la forme de stockage.</para>
			<para>Le stockage des documents indexés par SDX est de la responsabilité des <olink targetdocent="entrepot">entrepôts</olink>.</para>
			
		<section><title>Entrepôts</title><para>Les entrepôts peuvent être <emphasis>internes</emphasis> ou <emphasis>externes</emphasis> à SDX :</para><para>Un <emphasis>entrepôt externe</emphasis> signifie que les documents ne sont pas stockés par SDX. Ils sont seulement <emphasis>référencés</emphasis>. Pour l'instant, seul l'entrepôt de type <emphasis>URL</emphasis> est de cette nature. Dans ce cas, l'espace disque requis est faible, car seules les références aux documents doivent être conservées. On peut l'estimer à moins de 10 octets par document référencé, ce qui donne, par exemple, un espace disque de moins de 10 Mo pour un million de documents. Bien entendu, les documents doivent être quelque part, mais puisque SDX ne les prend pas en charge nous ne considérons pas que l'espace disque requis est associé à SDX, même s'il doit, bien sûr, être planifié.</para>
			<para>Un <emphasis>entrepôt interne</emphasis> signifie que les documents sont pris en charge par SDX et nous devons donc considérer leur espace disque. Les entrepôts de type <emphasis>Système de fichiers</emphasis> ou <emphasis>JDBC</emphasis> sont de cette nature. Ici, l'espace disque nécessaire est la somme de l'espace disque requis par les documents et de l'espace nécessaire à SDX pour référencer ces documents. Pour ce dernier aspect, l'espace disque nécessaire varie légèrement d'un type d'entrepôt à un autre, mais l'estimation précédente de moins de 10 octets par document reste valable. Quant à l'espace disque nécessaire pour conserver les documents eux-mêmes, il s'agit strictement de la taille de l'ensemble des fichiers. Ainsi, pour un million de documents dont la taille moyenne est de 30 Ko, l'espace disque nécessaire sera de 30 Go pour les documents et environ 10 Mo pour les références.</para>
			<para>La localisation des entrepôts dépend de leur type :</para>
			<para>Pour un entrepôt de type <emphasis>URL</emphasis> (entrepôt externe à SDX), les références sont conservées dans le dossier <filename class="directory">conf/repos/{identifiant de l'entrepôt}</filename> de l'application.</para>
			<para>Pour un entrepôt de type <emphasis>Système de fichiers</emphasis> (entrepôt interne à SDX), les références sont stockées dans le dossier <filename class="directory">conf/repos/{identifiant de l'entrepôt}/_lucene</filename> (TODO : vérifier si c'est encore vrai -pb) de l'application. Les documents eux-mêmes sont stockés dans des fichiers organisés dans différents dossiers, le dossier de base pouvant être défini dans la déclaration de l'entrepôt dans le fichier <filename>application.xconf</filename>.</para>
			<para>Pour un entrepôt de type <emphasis>JDBC</emphasis>, les documents sont stockés dans une seule table de la base de données utilisée par l'entrepôt. L'emplacement des données est donc déterminé par le système de gestion de bases de données utilisé. Par exemple, pour le SGBD MySQL, pour un entrepôt dont l'identifiant est <emphasis>docs</emphasis> dans une application dont le chemin est <filename class="directory">webapps/sdx/test</filename>, le nom de la table sera <emphasis>app_docs</emphasis> ce qui donnera, par exemple pour une base de données nommée <literal>sdx</literal>, les fichiers <filename>{dossier de données de MySQL}/sdx/app_docs.*</filename> (en général trois fichiers). Une judicieuse configuration du SGBD permettra non seulement de bien localiser ces données et donc l'espace disque requis, mais pourrait aussi permettre de réduire l'espace disque requis. Par exemple, avec MySQL, il est possible de compresser les données des tables, ce qui réduit peu les performances de SDX, car le SGBD est seulement utilisé pour stocker les documents et par la suite les afficher, après avoir effectué une recherche.</para></section><section>
			<title>Fichiers résultants de l'indexation</title>
			<para>Le moteur de recherche utilisé par SDX (Lucene) stocke ses index dans des fichiers ; il est donc nécessaire de considérer cet espace disque également. L'emplacement de ces fichiers est toujours le dossier <filename class="directory">conf/dbs/{identifiant de la base de documents}/sdx-search-index</filename> dans le dossier de l'application. On peut donc utiliser les liens symboliques pour localiser ce dossier à un endroit approprié.</para>
			<para>La taille des index dépend de la quantité de données indexées, du nombre de champs et du nombre de champs dont les valeurs sont stockées telles quelles par Lucene (ce sont les champs dont l'attribut <sgmltag class="attribute">brief</sgmltag> est vrai dans le fichier <filename>application.xconf</filename>). Il est donc très difficile de donner des indications précises. Il est préférable d'effectuer des tests préalables. Ce sera en général une taille comprise entre 10 % et 50 % de la taille initiale des documents.</para>
		</section></section>
		
		<section>
			<title>Autres informations stockées par SDX</title>
			<para>Pour conserver une certaine intégrité des documents indexés, des données d'indexation et de leur localisation, SDX conserve deux autres systèmes de références (ou index) dans les dossiers <filename class="directory">conf/dbs/{identifiant de la base de documents}/sdx-relations-index</filename> (TODO : plus vrai avec HSQL -pb) et <filename class="directory">conf/dbs/{identifiant de la base de documents}/sdx-repo-index</filename> (TODO : plus vrai avec HSQL -pb) du dossier de l'application. La taille du premier index varie en fonction du contenu de la base de documents. Ainsi, pour une base de documents où il n'y a ni documents attachés ni documents fragmentés, cet index sera vide. La taille du second dossier est assez constante et peut être estimée à environ 5 octets par document indexé. De façon générale, et surtout pour de grandes bases de documents, cet espace disque est assez négligeable par rapport à l'espace requis par les documents ou les données indexées.</para>
		</section>
	</section>
</webpage>
