• Aucun résultat trouvé

ANNEXE A – LANGAGES ET BASES DE DONNES

Ensuite on décrive les avantages et inconvénient de chaque langage et base de donne proposée pour la solution au problème :

5.1.Langages

5.1.1.Python

Le nom du langage provient du penchant de son créateur original, Guido van Rossum, par les brillants comédiens britanniques Monty Python. Python est un langage de scripts (langage interprété), simple mais puissant, orienté à des objets et très simple à apprendre.

Reference: http://www.python.org/

Avantages:

• Python est facile à apprendre et à utiliser

o Il possède une syntaxe claire et facile à lire

o L’apprentissage et la modification du langage sont grandement simplifiés

• Python est un langage de programmation orienté objets

• Python est un langage libre et portable o Il est disponible sous licence GPL

o On trouve des portages de Python sur quasiment tous les systèmes d'exploitation

Inconvénients:

• Python est lent à exécuter

o L’interprétation induit une certaine lenteur d’exécution, légèrement compensé par l’écriture d’un code propre et naturellement optimisé

5.1.2.Perl

Perl (Practical Extraction and Report Language) est un langage de programmation dérivé des scripts shell, créé en 1986 par Larry Wall afin de mettre au point un système de News entre deux réseaux.

Il s'agit d'un langage interprété dont l'avantage principal est d'être très adapté à la manipulation de chaînes de caractères. De plus, ses fonctionnalités de manipulation de fichiers, de chaînes de caractères, de répertoires et de bases de données en ont fait le langage de prédilection pour l'écriture d'interfaces CGI.

Avantages :

• C'est un bon langage ‘colle’. On peut rassembler plusieurs programmes d'une façon simple pour atteindre un objectif déterminé

• Est relativement rapide pour un langage type ‘script’

• Il est disponible dans de multiples plateformes et systèmes opérationnels. Un programme qui est écrit en tenant compte de la compatibilité peut être écrit dans une plateforme et exécuté dans une autre

• Il y a une collection énorme de modules qui peuvent être intégrés à tout script Perl. Ils sont disponibles dans le CPAN (Comprehensive Perl Archive Network)

• Perl est un langage libre

• Il donne au programmeur beaucoup de liberté pour qu'il fasse le programme comme il veuille. Comme le dit le slogan de Perl ‘il y a plus d’une manière de faire’

Inconvénients :

• Les modules de PERL sont assez complexes à installer

• Langage faiblement typé (scalaires)

• La liberté donnée au programmeur peut signifier que le résultat est un programme illisible. S'il n'est pas écrit avec des soins il peut arriver à être difficile à lire.

5.1.3.PHP

PHP a été à l'origine conçu en Perl, suivis par l'écriture d'un groupe de CGI documents binaires dans le langage C par le programmeur Danos Canadien Rasmus Lerdorf durant l'année 1994 pour publier son curriculum vitae et garder certaines données, comme la quantité de trafic que sa page web recevait. Le 8 juin 1995 a été publié "Personnel Home Page Tools"

après que Lerdorf le combine avec son propre Form Interpreter pour créer PHP/FI.

PHP est un langage de programmation utilisé généralement pour la création de contenu pour sites web, et s'agit d'un langage interprété utilisé pour la création d'applications pour serveurs, ou création de contenu dynamique pour sites web. Dernièrement aussi pour la création d'un autre type de programmes en incluant des applications avec interface graphique en utilisant la librairie GTK +.

Avantages :

• La gratuité et la disponibilité du code source (PHP est distribué sous licence GNU GPL)

• La simplicité d'écriture de scripts

• La possibilité d'inclure le script PHP au sein d'une page HTML

• Excellent support d'accès sur base de données. Interfaçage simple et rapide avec plusieurs bases de données

• Supporté par plusieurs serveurs web (Apache, Microsoft IIS, etc.)

• Il supporte dans une certaine mesure l'orientation objet. Classes et héritage Inconvénients :

• La lisibilité du code peut être vue touchée en mélangeant des sentences HTML et PHP

• L'orientation objets est encore très déficiente pour grandes applications mais ceci peut être compensé par l’utilisation d’un des nombreux framework

5.1.4.Java

Java est un langage de développement, produit par la société SUN et lancé le 23 mai 1995.

Ecrit par James Gosling, il permet de créer des applications autonomes et de doter les documents HTML de nouvelles fonctionnalités : animations interactives, applications intégrées, modèles 3D, etc.

Avantages :

• Java est portable et ne dépend d'aucune plate-forme

• Java est orienté objet

• Java devient de plus en plus rapide avec l’avancé de la technologie

• Java supporte les nouveaux standards

• Au niveau des performances, java est plus lent que php au premier appel, cependant les appels successifs bénéficieront de l'initialisation et de la mise en mémoire des

"pages" au contraire de PHP qui ne dispose pas de système de cache par défaut Inconvénients :

• Java nécessite beaucoup de ressources (mémoires, processeurs, …)

• Java est propriétaire, il est difficile pour un système ne disposant pas de machine virtuelle d’exécuter des applications Java.

• Java ne permet pas d’opérations de bas niveau

5.2.Bases de données

5.2.1.MySql

Le logiciel MySQL est un serveur de base de données SQL très rapide, multithreads, multiutilisateurs et robuste. Le serveur MySQL est destiné aux missions stratégiques et aux systèmes de production à forte charge, ainsi qu'à l'intégration dans des logiciels déployés à grande échelle.

Le logiciel MySQL dispose de deux licences. Les utilisateurs peuvent choisir entre utiliser MySQL comme un logiciel open source, sous les termes de la licence GNU (http://www.gnu.org/licenses/) ou bien, ils peuvent acheter une licence commerciale auprès de MySQL AB (Cette société a été créée par trois fondateurs du projet MySQL : David Axmark, Allan Larsson et Michael Monty Widenius).

Avantages** :

• Très bonne intégration dans l'environnement Apache / PHP

• Open Source

• MySQL est relativement plus rapide que PostgreSQL.

• La conception de bases de données est plus simple.

• La réplication de MySQL a été parfaitement testée.

Inconvénients** :

• Ne supporte qu’un faible parti des standards SQL

• Gestion des transactions uniquement depuis la version 4 (ou avec InnoDB qui est fonctionnant sur des systèmes de type UNIX (par exemple Linux, FreeBSD, AIX, HP-UX, IRIX, Solaris, ...).

L'une des principales qualités de PostgreSQL est d'être un logiciel libre, gratuit et dont les sources sont disponibles.

Avantages** :

• PostgreSQL possède de nombreuses caractéristiques en faisant un SGBDR robuste et puissant digne des SGBD commerciaux

• Open Source et gratuit

• Supporte la majorité du standard

• Très riche fonctionnellement, notions d'héritage de tables, multitude de modules

• Conception de bases de données complexes

• Jeux de règles complexes (règles opérationnelles)

• Utilisation de langages procéduraux sur le serveur

• Transactions

• Utilisation de procédures stockées

• Utilisation de données géographiques

• Arbres R-trees (utilisés pour les index) Inconvénients** :

• Ne prend en charge ni le XML, ni les services Web

• Sauvegardes peu évoluées

• Supporte les bases de moyenne importance

• Pas de notion de rôles, pas de hiérarchisation de groupes

• Obtenir une configuration efficace prend un peu plus de temps que pour MySql par exemple

**: à l’époque de début du projet

5.2.3.Cloudscape

IBM a offert à la communauté open source le code de sa base de données Cloudscape, écrite en Java. La société a choisi Apache, qui est une organisation à but non lucratif, pour développer ce projet open source (nom de code : Derby).

Apache Derby est un système de gestion de base de données relationnelle basé sur le langage Java qui peut être embarqué dans des programmes écrits en Java. Etant multi plateforme et de très petite taille (2MB), il s'intègre particulièrement bien dans toute application Java.

Avantages** :

• SGBD java open source Inconvénients** :

• La technologie Cloudscape est issue du rachat d'Informix par IBM en 2001. Son principal point faible : cette base de données se limite aux serveurs d'applications Java

**: à l’époque de début du projet

5.3.Dernières informations sur les Bases de donnes

Je présente ici un comparatif mis à jour des caractéristiques des bases de données étudiées au début du projet. PostgreSQL PostgreSQL Global Development Group Juin 1989 8.1.4 BSD

5.3.2.Systèmes opérationnels supportés

Windows Mac OS X Linux BSD UNIX

Apache Derby 1 oui oui oui oui oui

MySQL oui oui oui oui oui

PostgreSQL oui oui oui oui oui

(1): La disponibilité de base de données dépend de la machine virtuelle de Java pas sur le logiciel d'exploitation.

5.3.3.Caractéristiques fondamentaux

(2): ACID = Atomicity, Consistency, Isolation, et Durability. Ils sont considérés comme les principaux features/properties du traitement transactionnel d'un système de gestion de base de données, ou DBMS.

(3): Pour ‘transactions’ et ‘referential integrity’, le table type InnoDB doit être employé; la table type MyISAM (default), ne soutient pas ces caractéristiques. Cependant, même le type de table InnoDB permet le stockage des valeurs qui excèdent le ‘data range’; certains regardent ceci en tant que violation de la contrainte d'intégrité de ACID.

5.3.4.Tables et views

R-/R+ tree Hash Expression Partial Reverse Bitmap GiST GIN

Apache Derby non non non non non non non non

MySQL dans SQL 5.0 MyISAM,

Domain Cursor Trigger Function 7 Procedure 7 External routine 7

Apache Derby non oui oui oui 8 oui 8 oui 8

MySQL non oui oui oui oui oui

PostgreSQL oui oui oui oui oui oui

(7): function et procedure se rapportent à des routines internes écrites en SQL et/ou langue procédurale comme PL/SQL. External routine se rapporte à celui écrit dans les langues de type host, telles que C, Java, COBOL, etc... " Stored procedure " est un terme généralement utilisé pour ces types courants. Cependant, sa définition change entre différents fournisseurs de base de données.

(8): Dans Derby, les utilisateurs codent des function et des procedures dans Java.

5.3.7.Partitioning

Range Hash Composite (Range+Hash) List

Apache Derby non non non non

MySQL oui (5.1) oui (5.1) oui (5.1) oui (5.1)

PostgreSQL oui 9 oui 9 oui 9 oui 9

(9): PostgreSQL 8.1 fournit support pour partitioning par des contraintes de contrôle.

Range, List et Hash méthodes peuvent être émulées avec PL/pgSQL ou d'autres langues procédurales.

5.4.Commentaire sur le choix de Base de données

Aujourd'hui en tenant compte de l'évolution des diverses bases de données, je crois que MySql et PostgreSql continuent à présenter un avantage clair sur Apache Derby. Bien que MySql soit encore la base de données Open Source plus populaire, je pense que PostgreSql est aujourd'hui la base de données Open Source la plus avancée qui offre des meilleures caractéristiques pour le développement d'une application pour l’entreprise principalement par ses caractéristiques de : ACID, Referential integrity et Transactions.

Documents relatifs