diff --git a/hdoc_to_elasticSearch/input/.gitkeep b/hdoc_to_elasticSearch/input/.gitkeep new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/hdoc_to_elasticSearch/output/.gitkeep b/hdoc_to_elasticSearch/output/.gitkeep new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/hdoc_to_optim/input/sample/META-INF/container.xml b/hdoc_to_optim/input/sample/META-INF/container.xml new file mode 100644 index 0000000000000000000000000000000000000000..e0a201d4d28bcdc8f45e671be2a4dafbd115d650 --- /dev/null +++ b/hdoc_to_optim/input/sample/META-INF/container.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/hdoc_to_optim/input/sample/content.xml b/hdoc_to_optim/input/sample/content.xml new file mode 100644 index 0000000000000000000000000000000000000000..7703e1ba7ad210e0899df77c802503d25b70b5c9 --- /dev/null +++ b/hdoc_to_optim/input/sample/content.xml @@ -0,0 +1,323 @@ + + Technologie Web : Architecture LAPP

Introduction

Si les SGBD offrent les technologies de modélisation et de gestion des données, ils nécessitent la plupart du temps d'être interfacés avec des applications qui fournissent un accès orienté métier aux utilisateurs, notamment à travers des IHM évoluées. Même des systèmes comme Oracle ou PostgreSQL qui proposent un langage procédural (comme PL/SQL) au dessus de la couche SQL, ne sont pas auto-suffisants. Les langages évolués comme Java ou C++ sont couramment utilisés pour implémenter la couche applicative d'exploitation des BD.

Les applications de BD sont aujourd'hui généralement réalisées selon des architectures réseaux. L'explosion d'Internet de son côté a favorisé le langage HTML pour implémenter les IHM et a vu la naissance de langages de script pour implémenter la couche applicative côté serveur, tels que PHP ou JSP, plus simples que les langages classiques.

Architecture Web

Notions d'architecture client-serveur

Fait à partir de www.commentcamarche.net. Copyright 2003 Jean-François Pillou. Document soumis à la licence GNU FDL.
Présentation de l'architecture d'un système client/serveur

De nombreuses applications fonctionnent selon un environnement clients/serveur, cela signifie que des machines clientes (des machines faisant partie du réseau) contactent un serveur, une machine généralement très puissante en terme de capacités d'entrée-sortie, qui leur fournit des services. Ces services sont des programmes fournissant des données telles que l'heure, des fichiers, une connexion...

Les services sont exploités par des programmes, appelés programmes clients, s'exécutant sur les machines clientes. On parle ainsi de client FTP, client de messagerie...

Dans un environnement purement client/serveur, les ordinateurs du réseau (les clients) ne peuvent voir que le serveur, c'est un des principaux atouts de ce modèle.

Avantages de l'architecture client/serveur

Le modèle client/serveur est particulièrement recommandé pour des réseaux nécessitant un grand niveau de fiabilité, ses principaux atouts sont :

  • + des ressources centralisées +

    étant donné que le serveur est au centre du réseau, il peut gérer des ressources communes à tous les utilisateurs, comme par exemple une base de données centralisée, afin d'éviter les problèmes de redondance et de contradiction

  • + une meilleure sécurité +

    car le nombre de points d'entrée permettant l'accès aux données est moins important

  • + une administration au niveau serveur +

    les clients ayant peu d'importance dans ce modèle, ils ont moins besoin d'être administrés

  • + un réseau évolutif +

    grâce à cette architecture ont peu supprimer ou rajouter des clients sans perturber le fonctionnement du réseau et sans modifications majeures

Inconvénients du modèle client/serveur

L'architecture client/serveur a tout de même quelques lacunes parmi lesquelles :

  • + un coût élevé +

    dû à la technicité du serveur

  • + un maillon faible +

    le serveur est le seul maillon faible du réseau client/serveur, étant donné que tout le réseau est architecturé autour de lui! Heureusement, le serveur a une grande tolérance aux pannes (notamment grâce au système RAID)

Fonctionnement d'un système client/serveur
cs.jpg

Un système client/serveur fonctionne selon le schéma suivant:

  • Le client émet une requête vers le serveur grâce à son adresse et à son port, qui désigne un service particulier du serveur

  • Le serveur reçoit la demande et répond à l'aide de l'adresse de la machine client (et de son port)

ArchitectureClientServeur

Notions d'architecture 3-tier

Fait à partir de www.commentcamarche.net. Copyright 2003 Jean-François Pillou. Document soumis à la licence GNU FDL.
Présentation de l'architecture à deux niveaux

L'architecture à deux niveaux (aussi appelée architecture 2-tier,tier signifiant étage en anglais) caractérise les systèmes clients/serveurs dans lesquels le client demande une ressource et le serveur la lui fournit directement. Cela signifie que le serveur ne fait pas appel à une autre application afin de fournir le service.

2-tier.jpg
Présentation de l'architecture à trois niveaux

Dans l'architecture à 3 niveaux (appelée architecture 3-tier), il existe un niveau intermédiaire, c'est-à-dire que l'on a généralement une architecture partagée entre: +

  1. + Le client +

    le demandeur de ressources

  2. + Le serveur d'application +

    (appelé aussi middleware) le serveur chargé de fournir la ressource mais faisant appel à un autre serveur

  3. + Le serveur secondaire +

    (généralement un serveur de base de données), fournissant un service au premier serveur

3-tier.jpg

Étant donné l'emploi massif du terme d'architecture à 3 niveaux, celui-ci peut parfois désigner aussi les architectures suivantes :

  • Partage d'application entre client, serveur intermédiaire, et serveur d'entreprise

  • Partage d'application entre client, base de données intermédiaire, et base de données d'entreprise

Comparaison des deux types d'architecture

L'architecture à deux niveaux est donc une architecture client/serveur dans laquelle le serveur est polyvalent, c'est-à-dire qu'il est capable de fournir directement l'ensemble des ressources demandées par le client.

Dans l'architecture à trois niveaux par contre, les applications au niveau serveur sont délocalisées, c'est-à-dire que chaque serveur est spécialisé dans une tâche (serveur web et serveur de base de données par exemple). Ainsi, l'architecture à trois niveaux permet :

  • une plus grande flexibilité/souplesse

  • une plus grande sécurité (la sécurité peut être définie pour chaque service)

  • de meilleures performances (les tâches sont partagées)

L'architecture multi-niveaux

Dans l'architecture à 3 niveaux, chaque serveur (niveaux 1 et 2) effectue une tâche (un service) spécialisée. Ainsi, un serveur peut utiliser les services d'un ou plusieurs autres serveurs afin de fournir son propre service. Par conséquence, l'architecture à trois niveaux est potentiellement une architecture à N niveaux.

n-tier.jpg
ArchitectureClientServeur3-tier

Notions de serveur Web

Fait à partir de www.commentcamarche.net. Copyright 2003 Jean-François Pillou. Document soumis à la licence GNU FDL.

Un serveur web est un logiciel permettant à des clients d’accéder à des pages web, c'est-à-dire en réalité des fichiers au format HTML à partir d'un navigateur.

Un serveur web est donc un "simple" logiciel capable d'interpréter les requêtes HTTP arrivant sur le port associé au protocole HTTP (par défaut le port 80), et de fournir une réponse avec ce même protocole. +

Les principaux serveurs web sur le marché sont entre autres :

  • Apache

  • Microsoft IIS (Internet Information Server)

  • ...

ArchitectureServeurWebHTTP

Notion d'architecture Web

Fait à partir de www.commentcamarche.net. Copyright 2003 Jean-François Pillou. Document soumis à la licence GNU FDL.

3-tierExemple.jpg
ArchitectureClientServeur3-tierWeb

Architecture LAPP

Définition

On appelle une architecture LAPP une architecture qui s'appuie sur :

  • Linux pour le système d'exploitation

  • Apache pour le serveur Web

  • PostgreSQL pour la base de données

  • PHP pour le langage applicatif

LAMP, WAMP, WAPP
  • LAMP : Linux, Apache, MySQL, PHP

  • WAMP : Windows, Apache, MySQL, PHP

  • ...

Introduction

Cette section a été réalisée à partir de contenus de www.commentcamarche.net, © 2003 Jean-François Pillou (document soumis à la licence GNU FDL).

Objectifs

Comprendre les principes des architectures d'application de bases de données (en particulier 3-tier et Web)

Savoir appliquer les principes d'une architecture Web dans le cadre des technologies Servlets ou PHP et HTML

Questions de synthèse

Quelle sont les atouts d'une architecture 3-tier par rapport à une architecture client-serveur classique ?

Qu'est ce qu'une architecture Web ?

Rappels système

Rappels architecture UTC

Les comptes d'UV sont des comptes sur des serveurs Linux de l'UTC (accès et espace disque réservé). Par exemple nf17p001 est un compte sur le serveur tuxa.sme.utc.

Les comptes d'UV sont également des comptes d'accès sur des postes clients Linux ou Windows de l'UTC.

Transférer des fichiers depuis un client vers le serveur auquel il est associé
  • Les clients Windows de l'UTC sont configurés pour proposer un disque virtuel Z qui pointe sur l'espace du serveur Linux : les données déposées sur le disque Z sont donc physiquement stockées sur le serveur Linux.

  • Les clients Linux de l'UTC sont configurés pour que le dossier home sur le client corresponde à un répertoire sur le serveur.

  • Quelque soit le client il est possible d'utiliser un client SFTP (Filezilla par exemple) en se connectant au serveur (par exemple tuxa.sme.utc) avec son compte UTC (par exemple nf17p001).

Se connecter à un serveur Linux depuis un client Windows

Pour se connecter à un serveur Linux depuis un client Windows on peut utiliser le terminal par défaut du système, mais il est recommandé d'utiliser un programme plus performant comme par exemple Putty.

  1. Ouvrez un terminal :

    Exécuter Putty.

  2. Connectez-vous sur votre compte Linux + :

    Connectez vous de préférence en utilisant ssh, lancez ssh username@tuxa.sme.utc dans le terminal Putty (avec username votre compte NF17).

Rappels Unix/Linux

Connexion Linux

Pour se connecter depuis une machine Windows vers un serveur Linux, on utilise le client Putty pour se connecter avec le protocole ssh.

Quelques commandes de base à connaître
  • cd

  • man

  • ls

  • pwd

  • chmod

  • more

  • ...

Mise en ligne d'un fichier HTML

  • +Les fichiers HTML sont mis dans un dossier ~/public_html +

  • Il faut donner les droits en lecture sur les fichiers (chmod 755)

  • Les fichiers sont ensuite accessibles sur le Web via une adresse telle que :

    +http://tuxa.sme.utc/~nf17pXXX/monfichier.html +

Introduction à PostgreSQL

Présentation

PostgreSQL est :

  • un SGBDRO

  • libre (licence BSD)

  • multi-plate-formes (Unix, Linux, Windows, MacOS, ...)

  • puissant (proche d'Oracle)

  • très respectueux du standard

Types de données

Types standards
  • numériques : integer (int2, int4, int8), real (float4, float8)

  • dates : date (time, timestamp)

  • chaînes : char, varchar, text

  • autres : boolean, array[]

Documentation

+http://docs.postgresqlfr.org/8.1/datatype.html +

OID

Voir Identification d'objets et références +

Types composites

Voir Les types utilisateurs +

Le client textuel "psql"

psql

+ psql est le client textuel de PostgreSQL.

psql dbname -h host

Commande de base
  • + \? : Liste des commandes psql +

  • + \h : Liste des instructions SQL

    + \h CREATE TABLE : Description de l'instruction SQL CREATE TABLE +

  • + \q : Quitter psql +

  • + \d : Liste des relations (catalogue de données)

    + \d maTable : Description de la relation maTable +

  • + \H : mode HTML ou mode textuel pour les retours de requête

  • \! : permet d'exécuter certaines commandes du shell Linux

Écrire une instruction SQL

Une instruction SQL peut s'écrire sur une ou plusieurs lignes, le retour chariot n'a pas d'incidence sur la requête, c'est le +; +qui marque la fin de l'instruction SQL et provoque son exécution.

dbnf17p015=> SELECT * FROM maTable ;

dbnf17p015=> SELECT * +dbnf17p015-> FROM maTable +dbnf17p015-> ;

On notera dans psql la différence entre les caractères => et -> selon que l'on a ou pas effectué un retour chariot.

http://www.postgresql.org/docs/current/static/app-psql.html

Exécuter un fichier SQL

Il est souvent intéressant d'exécuter un fichier contenant une liste de commandes SQL, plutôt que de les entrer une par une dans le terminal. Cela permet en particulier de recréer une base de données à partir du script de création des tables.

Pour exécuter un fichier contenant du code SQL utiliser la commande PostgreSQL \i chemin/fichier.sql

  • +chemin désigne le répertoire dans lequel est le fichier fichier.sql +

  • le dossier de travail de psql est le dossier dans lequel il a été lancé, le script peut être lancé à partir de son dossier home pour en être indépendant (~/.../fichier.sql)

Fichier CSV

Fichier CSV

+ CSV est un format informatique permettant de stocker des données tabulaires dans un fichier texte.

Chaque ligne du fichier correspond à une ligne du tableau. Les valeurs de chaque colonne du tableau sont séparées par un caractère de séparation, en général une virgule ou un point-virgule. Chaque ligne est terminée par un caractère de fin de ligne (line break).

Toutes les lignes contiennent obligatoirement le même nombre de valeurs (donc le même nombre de caractères de séparation). Les valeurs vides doivent être exprimées par deux caractères de séparation contigus.

La taille du tableau est le nombre de lignes multiplié par le nombre de valeurs dans une ligne.

La première ligne du fichier peut être utilisée pour exprimer le nom des colonnes.

[NomColonne1;NomColonne2;...;NomColonneN] +ValeurColonne1;ValeurColonne2;...;ValeurColonneN +ValeurColonne1;ValeurColonne2;...;ValeurColonneN +...

Fichier CSV sans entête

Pierre;Dupont;20;UTC;NF17 +Pierre;Dupont;20;UTC;NF26 +Paul;Durand;21;UTC;NF17 +Jacques;Dumoulin;21;UTC;NF29

Fichier CSV avec entête

Prenom;Nom;Age;Ecole;UV +Pierre;Dupont;20;UTC;NF17 +Pierre;Dupont;20;UTC;NF26 +Paul;Durand;21;UTC;NF17 +Jacques;Dumoulin;21;UTC;NF29

Valeur nulle

Jacques;Dumoulin;;UTC;NF29

L'âge est inconnu (NULL).

Variations...

La syntaxe des fichiers CSV n'est pas complètement standardisée, aussi des variations peuvent exister :

  • Les chaînes de caractères peuvent être protégées par des guillemets (les guillemets s'expriment alors avec un double guillemet).

  • Le caractère de séparation des nombres décimaux peut être le point ou la virgule (si c'est la virgule, le caractère de séparation doit être différent)

  • ...

Un des problème les plus importants reste l'encodage des caractères qui n'est pas spécifié dans le fichier et peut donc être source de problèmes, lors de changement d'OS typiquement.

Usage en base de données

Les fichiers CSV sont très utilisés en BD pour échanger les données d'une table (export/import).

Les SGBD contiennent généralement des utilitaires permettant d'exporter une table ou un résultat de requête sous la forme d'un fichier CSV, en spécifiant un certain nombre de paramètres (caractère de séparation de valeur, caractère de fin de ligne, présence ou non d'une ligne de définition des noms des colonnes, etc.). De même ils proposent des utilitaires permettant d'importer un fichier CSV dans une table (en spécifiant les mêmes paramètres), voire de créer directement une table à partir du fichier CSV (quand les noms des colonnes sont présents).

Fichiers à largeur de colonne fixe

Les fichiers à largeur de colonne fixe n'utilisent pas de séparateur de colonne, mais imposent le même nombre de caractères pour chaque cellule. L'avantage est de ne pas avoir à spécifier le caractère de séparation, l'inconvénient est la taille de fichier supérieure si les valeurs ne font pas toutes la même largeur.

XML

Les fichiers XML tendent de plus en plus à remplacer les fichiers CSV car ils permettent d'être beaucoup plus expressifs sur le schéma d'origine. Ils sont également plus standards (encodage spécifié, principe de séparation des données par les tags, etc.). Leur seul inconvénient est d'être plus verbeux et donc plus volumineux.

Tables externes

Certains SGBD, comme Oracle, permettent de créer des tables dites externes, qui autorisent de créer un schéma de table directement sur un fichier CSV, permettant ainsi un accès SQL standard à un fichier CSV, sans nécessité de l'importer d'abord dans une table.

Importer un fichier CSV

\copy nom_table (att1, att2, ...) FROM 'fichier.csv' WITH CSV DELIMITER ';' QUOTE '"'

  • WITH introduit les options de l'import

  • CSV indique qu'il s'agit d'un fichier CSV

  • DELIMITER 'c' indique que le caractère c est utilisé comme délimiteur de champ (en général ; ou ,)

  • QUOTE 'c' indique que le caractère c est utilisé comme délimiteur de chaîne (en général ")

  • La table nom_table doit déjà exister

  • Le nombre de colonnes spécifié doit correspondre au nombre de colonnes du fichier CSV

  • Les types doivent être compatibles

Ajouter l'option HEADER après WITH CSV si le fichier CSV contient une ligne s'entête.

\copy nom_table (att1, att2, ...) FROM 'fichier.csv' WITH CSV HEADER DELIMITER ';' QUOTE '"'

Localisation du fichier CSV depuis psql

Par défaut, la commande \copy prendra le chemin du répertoire courant au moment où la commande psql a été lancée.

Sous psql, vous pouvez utiliser les commandes :

  • dbnf17p007=> \! pwd

    Pour exécuter la commande shell pwd et obtenir le répertoire courant

  • dbnf17p007=> \cd directory

    Pour changer le répertoire courant

Les clients graphiques pgAdminIII et phpPgAdmin

pgAdminIII

Un client graphique une interface graphique permettant d'effectuer les mêmes opérations qu'avec le client psql.

  • Le client graphique pgAdminIII est un client lourd qui fonctionne très bien sous Linux, mais qui est instable sous Windows.

  • Le client graphique phpPgAdmin est un client léger (qui tourne dans un navigateur Web donc).

Déclarer une connexion dans pgAdminIII
  1. Sélectionner Fichier > Ajouter un serveur +

  2. Utilisez votre compte et mot de passe NF17

    • Hôte : tuxa.sme.utc

    • Port : 5432 (port standard de PostgreSQL)

    • Base : dbnf17p...

    • Nom : nf17p...

    • Mot de passe : ...

connexionPgAdmin.png
Ouvrir un terminal SQL dans pgAdminIII
  1. Sélectionner sa base de données dans la liste Bases de données +

  2. Sélectionner Outils > Éditeur de requêtes (ou CTRL+E)

pgAdminIII.png
phpPgAdmin

http://phppgadmin.sourceforge.net

Notion de schéma

Créer un schéma

CREATE SCHEMA myschema;

Créer une table dans un schéma

CREATE TABLE myschema.mytable ( +... +);

Requêter dans un schéma

SELECT ... +FROM myschema.mytable

pgAdminSchema.png
Schéma par défaut

Afin d'alléger la syntaxe il est possible de définir un schéma par défaut, dans lequel seront créer les tables non-préfixées et un ou plusieurs schémas par défaut dans lesquels seront requêtées les tables non-préfixées.

SET search_path TO myschema,public;

Cette instruction définit le schéma myschema comme schéma par défaut pour la création de table et le requêtage, puis public pour le requêtage, le premier étant prioritaire sur le second :

  • +CREATE mytable créera ma mytable dans le schéma mychema.

  • +SELECT FROM mytable cherchera la table dans la schéma mychema, puis dans le schéma public si la table n'existe pas dans le premier schéma.

Schéma "public"

Le schéma public est un schéma créé par défaut à l'initialisation de la base, et qui sert de schéma par défaut en l'absence de toute autre spécification.

Pour aller plus loin

+http://www.postgresql.org/docs/8.4/static/ddl-schemas.html +