Le blog professionnel d'Amine Benkirane

Aller au contenu | Aller au menu | Aller à la recherche

vendredi 4 mai 2012

Le Big Data : une révolution en marche

Avec l'avènement des réseaux sociaux en particulier et du Web en général, le nombre de données produites est en constante augmentation. Chaque individu, aujourd'hui, génère un nombre très élevé d'informations. Cette volumétrie génère, elle-même, de manière automatique de la donnée. En effet, plus on a d'informations, plus on a besoin de l’indexée (moteurs de recherche, annuaires) ou simplement de la traiter pour y apporter de la plus-value (Business Intelligence, CRM, cyber-criminalité, ...). Les problématiques de stockage, traitement et restitution de ces données dans des temps raisonnables sont devenues primordiales.La solution Big Data alliée à des frameworks comme Haddop ou le Map Reduce, a vu le jour pour répondre à ces problématiques. Cette nouvelle notion apporte avec elle quelques révolutions technologiques mais aussi intellectuelles.

Le Big Data : la révolution des systèmes de gestion des données

La première révolution qu'apporte le Big Data est la façon dont les données sont gérées. Pour traiter des quantités énormes de données qui arrivent, en temps réel, à partir de sources très diverses (humains, robots, électroniques, capteurs, ...), les contraintes imposées par les SGBD relationnels associé à leur coût exorbitant (administration, licence, infrastructures) ne peuvent plus perdurer. Deux principales causes à cela: la première est la capacité faible d'évolution des systèmes relationnels et la seconde la nécessité de structurer les données.

Dans les systèmes actuels, il est devient de plus en plus difficile de prévoir la quantité de données qui seront stockées. Des entreprises comme google, facebook, amazon ou autre twitter ne peuvent savoir au Go près quel volume de données elles auront à gérer et à quel moment. La nécessité de disposer d'un système fortement évolutif est primordial. C'est là qu'interviennent les bases de données NoSQL (Not Only SQL). Cette terminologie représente l'ensemble des bases de données non relationnelles. Elles répondent exactement aux problématiques soulevées précédemment:

  • Elles sont fortement évolutives. Leur architecture technique est complètement distribuée et basée sur des machines standards ( moins coûteuses). L'augmentation de la capacité de stockage est alors simple puisqu'il s'agit bien souvent d'ajouter quelques machines dans le système. Les données et les temps de calcul sont alors réparties sur l'ensemble de celles-ci de manière automatique.
  • Les données ne sont pas structurées. Il n'y a plus de notions de tables, de type de données et encore moins de relations entre elles. Les données sont stockées de façon brutes, les causes d'erreurs lors des enregistrements sont alors très limitées, voir inexistantes.

En réalité, le NoSQL n'est pas vraiment une révolution puisque le terme est apparu la première fois en 1998. C'est plutôt sa mise en œuvre à grande échelle depuis ces dernières années qui est une révolution. Les investissements des grandes entreprises de l'informatique moderne citées précédemment sur ce type de SGBD sont sans précédent.

Le Big Data : la révolution des algorithmes de calculs

L'idée première derrière l'utilisation du Big Data est le traitement de l'information à des fins politiques ou commerciales. L'important est d'apporter de la plus-value à ces volumes de données. C'est ce qu'on appelle la Business Intelligence. On traite, par exemple, le contenu des messages postés par un utilisateur afin de connaître ses aspirations et lui fournir du contenu personnalisé qui y réponds.

La volumétrie des données ne permet plus d'utiliser des algorithmes de calculs classiques par récupération de lots de données. Il est nécessaire de recourir à de nouveaux concepts de regroupement de données associé à un calcul distribué. C'est sur ces bases qu'a été imaginé le framework Map Reduce proposé par Google et faisant partie de la solution Hadoop (Apache).

En très simplifié, l'algorithme Map Reduce s'exécute en deux étapes:

  1. La partie Map associe une valeur ou un ensemble de valeur à une clé personnalisée,
  2. La partie Reduce effectue un calcul sur chacune des valeurs en regroupant les données ayant une clé identique.

Pour comprendre en détail cet algorithme, je vous propose de lire le tutoriel Map Reduce sur le site officiel d'Hadoop.

La possibilité de paralléliser cet algorithme de traitement en fait un outil très puissant pour générer, efficacement, des données à forte valeur ajoutée.

Le Big Data : la révolution des usages

Comment souvent en informatique, des révolutions techniques entrainent souvent des révolutions en terme d'usage. Les applications mobiles en sont un bon exemple. Pour le Big Data, c'est la même chose! La capacité à stocker et traiter un nombre de données en constante augmentation et en temps réel a permis à de nombreuses entreprises d'innover. On a ainsi entendu parler ces dernières années de social TV, de voiture connectée ou encore d'habitat connecté.

jeudi 3 mai 2012

Architecture logicielle : Web services SOAP ou REST ?

Le développement de services Web est devenu depuis quelques années un enjeu primordial pour certaines entreprises. Il permet, entre autres, de mettre à disposition à d'autres des services spécifiques à son domaine d'activité qu'ils soient gratuits ou, pour une meilleure qualité de service, payants. Les services Web offerts par google maps, par exemple, sont devenus en quelques années des standards dans le domaine de la géolocalisation. Pour leur mise en œuvre, plusieurs méthodes sont possibles: la traditionnelle basée sur SOAP et celle qui est en constante croissance, basée sur une architecture de type REST. Cet article ne se veut pas une éloge pour l'une ou l'autre des méthodes, il en résume les avantages et inconvénients. Le choix de l'utilisation de l'une ou l'autre doit bien être l'aboutissement d'une étude des besoins de chaque entreprise en fonction de son contexte propre.

SOAP

Au départ, les architectes d'entreprise ont privilégié les services Web de type SOAP. Les principaux avantages de ce protocole étant:
  • l'indépendance vis à vis du langage de programmation,
  • l'indépendance vis à vis de la plateforme où ils sont déployés,
  • son extensibilité,
  • l'utilisation du standard XML pour l'échange des messages,
  • le contenu des messages échangés qui incluent le format d'échange cela permet d'avoir un contrat personnalisé entre le fournisseur et le consommateur du service,
  • l'utilisation du protocole HTTP pour le transport qui permet de s'affranchir des problématique de firewalls: en réalité SOAP est indépendant de la couche de transport puisqu'il l'a redéfini (entête, format d'échange, type des données échangées, ...). Cependant, HTTP est le protocole de transport le plus largement utilisé par SOAP.
Ces avantages devaient permettre une interopérabilité entre des applications hétérogènes développées en Java, .NET ou PHP. Cependant, les architectes ont été confrontés à des problèmes parmi eux:
  •  SOAP étant extensible, plusieurs standards sont apparus, regroupés sous la forme WS-* : WS-Addressing, WS-Policy, WS-Security, WS-Federation, WS-ReliableMessaging, WS-Coordination, WS-AtomicTransaction, WS-RemotePortlets, etc. Leur nombre croissant a abouti à l'augmentation de la complexité perçue de SOAP. De plus, des différences d'implémentations ont aboutis à des problèmes d’interopérabilité entre applications hétérogènes. 
  • pour que les applications puissent interagir entre elles, la description des Web services en WSDL et la définition d'un dictionnaire de données sont nécessaires dans l'entreprise. Cependant, dès qu'une erreur de conception de ce dictionnaire apparaît, l'implémentation des services Web devient problématique et couteuse. Ajoutée à cela, le coût de mise en œuvre des fichiers de description des services Web (le WSDL) et des fichiers de données (XSD). En résumé, le coût de mise en œuvre est souvent très élevé.
  • La conception des services Web en elle-même. Si un service est mal conçu, et cela peut arriver très vite, le nombre de données qu'il renvoie peut-être très important. Ajoutée à cela, la verbosité de SOAP, très rapidement, des problèmes de performance sont rencontrés qui induisent souvent à une remise en cause de la conception elle-même des services.

Le coût et la complexité d'implémentation générés par les inconvénients de SOAP ont remis en cause, complètement, les avantages de son utilisation. Les réseaux sociaux, dans un premier temps, avec leur volume de données échangées puis les autres entreprises, ensuite, se sont positionnées sur un autre moyen de mettre en œuvre des services Web moins couteux, plus simple à implémenter et surtout plus efficace. Cette méthode qui n'est pas nouvelle puisqu'elle est basée sur les fondamentaux du protocole HTTP est l'architecture REST (cf. mon billet précédent sur ce thème).

REST

Les architectures de type REST deviennent, de plus en plus, des standards dans les entreprises aujourd'hui. La plupart des consultants en informatique de gestion vous le diront. Cependant, au delà de l'effet de mode, la mise en œuvre de services Web basée sur cette architecture a de quoi séduire. Les principales motivations pour le choix de cette architecture sont:

  • l'indépendance vis à vis du langage de programmation,
  • l'indépendance vis à vis de la plateforme sur laquelle ils sont déployés,
  • la plus grande simplicité d'implémentation car la couche transport n'a pas besoin d'être redéfinie et il n'est plus nécessaire de créer un dictionnaire de données comme on le fait avec SOAP.
  • la non intégration du format d'échange au sein des messages. Cela induit une verbosité beaucoup plus faible et donc une performance accrue et une plus grande souplesse dans l'implémentation,
  • l'utilisation de multiples formats pour l'échange de données (XML, JSON, HTML),
  • qu'elle est plus proche de la conception et de la philosophie initiale du Web (URI, GET, POST, PUT et DELETE),
  • pas de gestion d'états du client sur le serveur.

Comme les services Web de type SOAP, ceux basés sur l'architecture REST ont le gros avantage d'être interopérables et indépendants de leur environnement de déploiement avec, en bonus, de meilleures performances. Cependant, ils ont des défauts conséquents à leur adhésion au protocole de transport HTTP:

  • une limitation en matière de sécurité,
  • il n'est pas fiable et ne garantit pas la bonne transmission des messages,
  • la limitation en terme d'actions possibles (CRUD uniquement),
  • les navigateurs actuels implémentent mal les opérations PUT et DELETE.
Dans la réalité, ces limitations ne sont pas vraiment un frein. La sécurité peut-être introduite de plusieurs façons différentes (tokens d'authentification, HTTPS, des outils comme Spring security en java). Les problèmes de standardisation des navigateurs sont détournés par surcharge de la méthode POST. Le vrai frein au choix de REST pour la mise en oeuvre de Web Services est le besoin propre à chaque application.

Conclusion

Internet existe depuis plusieurs décennies maintenant et, avec le retour des architectures REST, on peut se rendre compte que pendant ces années, beaucoup ont perdu les fondamentaux même du protocole HTTP. Les navigateurs, eux-mêmes, ne l'implémentent pas convenablement, ce qui est un comble. De mon point de vue, en tant que professionnel du Web, le plus grand avantage de REST est de revenir aux sources de la toile comme l'ont pensé ses créateurs. Le Web n'est pas un ensemble de pages HTML mais un ensemble de ressources dont l'une des représentations est le HTML. D'autres sont possibles comme JSON, XML, PDF, etc... Sur ces ressources, il est possible d'effectuer 4 opérations principales qui sont GET, POST, PUT et DELETE, du CRUD en résumé.

Ceci est important, lorsqu'on réfléchit au choix d’architecture logicielle. Si vos services Web sont orientés action (plus complexes que les opérations simples du CRUD) et qu'ils nécessitent une sécurité élevée ou un contrat rigide d'échange, SOAP sera, souvent, le protocole le plus adapté.

Si vos services Web sont orientés ressources avec des opérations simples sur celles-ci, REST sera le choix le plus judicieux. Le développement de ces services se focalisent plus sur l'identification des ressources. REST impose le reste de la conception par la possibilité d’implémenter les 4 actions ou verbes (HTTP) du CRUD.

 

mardi 3 avril 2012

Sed : la commande qui permet de remplacer un caractère (ou une chaine) par un autre

Il arrive souvent qu'on ait besoin de remplacer un caractère par un autre dans un fichier qui comprends plusieurs mégaoctets de données. Avec la fonctionnalité de remplacement des éditeurs de texte classiques tels que Notepad ou Notepad++ sous Windows, ce remplacement peut prendre un temps excessivement long. Dans cet article, je vous donne une petite astuce qui permet d'aller beaucoup plus vite par l'utilisation de la commande linux sed suivante:

sed -i 's/<ancien caractère ou chaine>/<nouveau caractère ou chaine>/g' <fichier_texte_a_modifier>

Un exemple d'utilisation qui remplace tous les caractères '|' par ',' pour tous les fichiers avec l'extension 'unl' du répertoire courant:

sed -i 's/|/,/g' *.unl

Remarque : Cette commande est aussi utilisable sous Windows après avoir installé Cygwin.

mercredi 28 mars 2012

Rendre votre fichier CSS compatible à tous les navigateurs !

Malgré l'arrivée du CSS3 et la standardisation en cours de la plupart des navigateurs aux normes du W3C, il reste quelques propriétés CSS qui ne sont pas encore identiques à tous les navigateurs. Pour améliorer la lisibilité de votre fichier CSS par les navigateurs, un site en ligne existe à cette adresse: http://prefixmycss.com/.

Par simple copier-coller dans l'éditeur du site, vous avez en sortie un code CSS qui comprends l'ensemble des valeurs particulières à l'ensemble des navigateurs. Attention, cependant, les nouvelles propriétés arrivées avec le CSS3 ne fonctionneront pas avec les anciennes versions des navigateurs.

mardi 21 février 2012

Les avantages et inconvénients des outils de gestion de version distribués (DVCS)

Aujourd'hui, la taille des projets informatiques est de plus en plus importante. Les équipes de développements comptent, ainsi, de plus en plus de membres. Tout au long de la réalisation des programmes informatiques, de nombreuses personnes "commitent" tous les jours leur code. Avec les systèmes de gestion de source traditionnels tels que CVS ou SVN, il devient de plus en plus compliqué de travailler au quotidien. Les problèmes récurrent sont :

  • Les conflits de code lors des commits suite au travail de deux développeurs sur une même portion de code,
  • La gestion des différentes versions de code (celle en recette et celle en cours de développement principalement),
  • La difficulté de valider l'intégration de son code avec le reste du projet avant le commit.

La cause principale de ces soucis que rencontrent les grosses équipes de développements au quotidien est la centralisation du repository contenant le code source partagé. Pour cette raison, des logiciels de gestion de version distribués ont été créés. Ils gèrent les versions à l'aide d'une architecture des dépôts du code source distribuée. En effet, ces logiciels impliquent que chaque développeur a une copie locale d'un "repository" de référence ou maître avec lequel elle est synchronisée.

Gestion du commit

Pour faire un commit, la procédure est, en général, la suivante:

  1. Synchroniser son "repository" local avec le "repository" maître (faire un "pull") pour "tirer" (récupérer) les dernières modifications effectuées par les autres membres de l'équipe,
  2. "Commiter" ses modifications dans le "repository" local,
  3. Exécuter la compilation du programme et les tests,
  4. Si tout est ok, synchroniser son "repository" local avec le "repository" maître (faire un "push") pour "pousser" (partager) ses modifications avec le reste de l'équipe.

Avantages/Inconvénients des DVCS

L'architecture distribuée des DVCS induit de nombreux avantages:

  • Avoir un repository local identique au repository de référence pour faire des commits et valider son code avant de le partager à l'ensemble de l'équipe,
  • La gestion des branches et surtout le développement sur l'une ou l'autre est souvent beaucoup mieux géré qu'avec les logiciels de gestion de source traditionnels: ceci est facilité par le fait que les DVCS copient tout l'historique de versionning dans chaque repository local,
  • La gestion des "merges" est beaucoup plus simple avec les DVCS: en effet, tant que la même ligne de code n'est pas modifiée par deux développeurs en même temps, le logiciel de gestion des versions effectue un merge automatique du code,
  • La possibilité de développer en mode non connecté de manière plus efficace: le développeur peut, par exemple, synchroniser son repository local moins souvent puisque la gestion des merges est plus efficace,
  • Le code source et son versionning est sauvegardé sur l'ensemble des repositories locaux et n'est plus centralisé sur une seule machine: cela implique moins de risque de perdition de données.

Ces nombreux avantages ne sont pas, bien sûr, sans certains inconvénients surtout, au départ, lors du passage d'un logiciel traditionnel à un DVCS:

  • Le coût de mise en œuvre (installation, déploiement, transfert des projets de l'ancien VCS, ...),
  • Nécessité de faire monter en compétence l'ensemble des développeurs: cette partie n'est pas à négliger car de nouveaux concepts sont à (re-)apprendre.

Les logiciels du marché

Les principaux logiciels de gestion de code source distribué sont Mercurial et Git. Vous trouverez tous les détails sur leur site officiel respectif.

mercredi 15 février 2012

Tutoriel : Installer une machine virtuelle avec un système d'exploitation Ubuntu

Dans le cadre de mise en œuvre de POC, il est souvent nécessaire d'avoir une machine Linux à disposition. Or, très souvent, les entreprises ne fournissent que des machines Windows. Il est alors compliqué d'obtenir une machine avec un système d'exploitation de type Linux. Aujourd'hui, je vais essayer de vous faciliter la vie grâce à ce billet sous forme de tutoriel d'installation d'une machine virtuelle démarrée avec un système d'exploitation de type Linux qu'est Ubuntu.

Etape 1 : Téléchargement du logiciel Virtual Box

Pour commencer, il est nécessaire d'installer le logiciel Virtual Box fourni gratuitement par Oracle à l'adresse suivante: https://www.virtualbox.org/wiki/Downloads.
Ce logiciel permet de démarrer une machine virtuelle sur votre PC. Sur la page précédente, choisissez le système d'exploitation de la machine sur laquelle vous allez installer Virtual Box (à priori Windows) puis cliquer sur enregistrer le fichier comme on peut le voir sur la copie d'écran ci-dessous:

 

Une fois le fichier téléchargé, doucle cliquez dessus pour installer le logiciel. Vous pouvez laisser les paramètres par défaut ou choisir le répertoire d'installation si vous le souhaitez puis cliquez sur Next jusqu'au commencement de l'installation.
Cliquez sur installer lorsque la fenêtre suivante s'affiche vous demandant une confirmation de l'installation d'un contrôleur de bus Oracle:


L'installation peut prendre quelques minutes. Vous devriez avoir à la fin la confirmation de la réussite de l'installation par l'affichage de la fenêtre suivante:



Cliquez alors sur le bouton Finish.


Etape 1 bis : Téléchargement d'une image du système d'exploitation Ubuntu.


En parallèle à l'installation l'installation du logiciel Virtual Box, vous pouvez télécharger une image du système d'exploitation Ubuntu (Version 11.10 à l'heure où j'écris ce billet) à l'adresse suivante: http://ubuntu-fr.org/telechargement.

Cliquez sur le lien Télécharger puis cliquez sur Enregistrer le fichier lorsque la fenêtre suivante s'affiche:



Le téléchargement peut prendre plusieurs dizaines de minutes en fonction du débit de votre connexion internet...


Etape 2 : créer votre machine virtuelle

Au niveau du logiciel Virtual Box, créez une nouvelle machine virtuelle en allant sur l'onglet Machine -> Créer... comme vous pouvez le voir sur la copie d'écran suivante:




Un assistant à la création de votre machine virtuelle va alors s'ouvrir:




Cliquez alors sur le bouton Suivant. Le nom de votre machine virtuelle vous sera alors demandé ainsi que le type de système d'exploitation. Vous pouvez alors saisir Ubuntu 11.10 (32 bits) comme illustré ci-dessous:



Cliquez ensuite sur le bouton Suivant. Il vous sera alors demandé d'indiquer la taille de mémoire RAM allouée à la machine virtuelle. En fonction de votre besoin et de la taille de la mémoire présente sur votre ordinateur, vous devez décider de la taille allouée surtout rester bien dans la partie verte comme vous pouvez le voir sur la copie d'écran ci-dessous:



Cliquez ensuite sur le bouton Suivant. Il vous sera alors demandé d'indiquer la taille de disque dur que vous souhaitez affecter à votre machine virtuelle. Vous pouvez alors créer un nouveau disque dur de la taille que vous souhaitez:




Cliquer sur le bouton Suivant. La fenêtre suivante va alors s'afficher vous indiquant le type de disque dur virtuel que vous souhaitez créer. Vous pouvez laisser le paramètre par défaut et cliquer sur le bouton Suivant.




Après le clic sur le bouton Suivant, il vous sera demandé d'indiquer le détail du type de stockage que vous souhaitez. Pour des temps de réponse améliorés, vous pouvez choisir le type "Taille fixe" puis cliquez sur le bouton Suivant:



Suite au clic sur le bouton Suivant, il vous sera alors demandé de saisir la taille de ce disque de taille fixe. Pensez à bien allouer un espace disque assez important pour vos besoins d'installations de logiciels. Je vous conseille si vous avez assez d'espace disque sur votre ordinateur, d'allouer au minimum 20Go (attention à l'espace libre sur votre disque dur physique) comme vous pouvez le voir sur la copie d'écran ci-dessous:




Une fois la taille du disque dur virtuel choisie, vous pouvez cliquer sur le bouton Suivant. La fenêtre suivante de confirmation de la création s'affichera alors:




Si vous êtes d'accord avec le récapitulatif de création du disque dur virtuel, vous pouvez cliquer sur le bouton Créer sinon annuler la création grâce au bouton prévu à cet effet. Au bout de quelques minutes, le disque dur virtuel est créé et une page récapitulative de la création de la machine virtuelle s'affiche alors:




Si vous êtes d'accord avec le récapitulatif, vous pouvez cliquer sur le bouton Créer. Au bout de quelques minutes, vous verrez apparaître votre machine virtuel dans Virtual Box comme on peut le voir sur l'illustration suivante:





La machine virtuelle est maintenant créée. Il reste une dernière étape l'installation d'Ubuntu sur cette machine.

Etape 3 : installation d'Ubuntu sur la machine virtuelle


Pour installer Ubuntu, il faut permettre à la machine virtuelle de démarrer sur le CD d'installation du système d'exploitation. Pour se faire, cliquer sur le bouton Configuration et aller sur la partie Stockage au niveau du menu à gauche, la fenêtre suivante s'affiche alors:




Sur cette fenêtre, cliquez sur le bouton d'ajout d'un nouveau CD/DVD à côté de la ligne Contrôleur IDE puis, lorsque la nouvelle fenêtre s'affiche cliquez sur le bouton Choisir un disque comme illustré sur la copie d'écran suivante:




Il faut ensuite, récupérer l'image .iso d'Ubuntu téléchargée précédemment. Vous devriez avoir alors la configuration suivante avec la ligne vers le Disque Ubuntu ajoutée:




Bien vérifier qu'au niveau de l'attribut Lecteur CD/DVD, la ligne Maître primaire IDE est bien sélectionné. Il ne vous reste plus qu'à lancer votre machine virtuelle à l'aide du bouton prévu à cet effet dans Virtual Box. L'installation d'Ubuntu commencera alors comme vous pouvez le voir sur la copie d'écran suivante:



Elle est identique à une installation classique. Vous trouverez très facilement des tutoriaux pour cette partie. A la fin de l'installation, vous pourrez utilisez votre nouvelle machine virtuelle avec un système d'exploitation Ubuntu.

Etape 4 : suppression du contrôleur IDE

Lorsque l'installation est terminée, il faut supprimer le contrôleur IDE que vous avez ajouté précédemment vers l'image du disque d'installation d'Ubuntu. Pour se faire, vous devez cliquer sur le bouton Configuration puis aller dans la partie Stockage en passant par le menu de gauche de Virtual Box. Cliquez ensuite sur le contrôleur IDE d'Ubuntu et cliquer sur le bouton de suppression marqué "-" en bas à droite de l'écran central. Ceci fait, au prochain démarrage de la machine virtuelle, il ne vous sera pas demandé de réinstaller Ubuntu et vous démarrerez directement sur le disque dur virtuel où a été installé le système d'exploitation.

jeudi 26 janvier 2012

Faire une action sur plusieurs fichiers filtrés dans un répertoire grace à un ls‏

Une commande sous Linux qui peux s'avérer utile si vous souhaitez effectuer une action sur certains fichiers seulement dans un répertoire. Pour cela, vous pouvez utiliser une boucle for comme la suivante:

for i in $(ls -al | grep <filtre_sur_les_fichiers>); do <action_linux> $i <répertoire de destination>; done;

Pour déplacer, par exemple, l'ensemble des fichier qui contiennent l'expression "p_file" dans un répertoire "/users/mon_user/rep_cible", la commande serait:

for i in $(ls -al | grep p_file); do mv $i /users/mon_user/rep_cible; done;

Importer/ exporter un dump d'une base Oracle

Dans ce billet, je vais vous présenter les commandes d'export et d'import d'une base Oracle grâce aux fichiers Dump. Ceci peut s'avérer très important pour récupérer ou recréer en local des bases de données distantes ou tout simplement pour créer une base de test à partir de la production. Ces commandes suppose que vous avez installé un client Oracle sur votre machine locale et que les exécutables sont bien dans votre PATH:

Tout d'abord, il faut commencer par l'export d'une base Oracle grâce à la commande suivante :
exp <nom_user>/<password_user>@<ip_nom_machine_oracle> file=<nom_fichier_dump_a_creer>.dmp log=<nom_fichier_logs>.log rows=y owner=<nom_owner_schema_Oracle>

Le paramètre rows=y indique que l'on souhaite récupérer les données. Si vous ne voulez récupérer que le schéma de la base sans les données, il suffit de positionner ce paramètre à 'n'.

Le fichier dump créé, il est alors possible de l'importer sur une autre base Oracle à l'aide de la commande d'import suivante:
imp <nom_user>/<password_user>@<nom_machine_oracle_pour_import> file=<nom_fichier_dump_a_importer>.dmp log=<nom_fichier_logs>.log

Je vous ai présenté, ici, les commandes basiques d'import/export d'une base Oracle mais celles-ci sont beaucoup plus riches. Si vous souhaitez plus de détails sur ces commandes, vous pouvez vous rendre sur le site Developpez.com où se trouve un article plutôt complet sur la sauvegarde et restauration de données Oracle.

mardi 24 janvier 2012

Afficher les messages Oracle sur la console SQL Developer

Sur SQL Developer, si vous souhaitez afficher les messages en sortie à l'aide de la fonction Oracle dbms_output.put_line, il faut l'activer préalablement à l'aide de la commande suivante :

set serveroutput on;

Vous pourrez alors voir les messages si vous taper l'instruction PL/SQL suivante par exemple :

dbms_output.put_line('Ceci est un message : ' || ma_variable);

vendredi 20 janvier 2012

Comparaison des meilleurs outils d'intégration du marché (Jenkins, Quickbuild, UrbanBuild/AnthillPro, Bamboo, Apache Continuum, TeamCity, Go/Cruise Control) - Décembre 2011

Depuis quelques années, avec la montée de l'agilité dans la gestion des projets informatiques, l'intégration continue devient de plus en plus une problématique très importante dans les entreprises. Elle induit l'automatisation du cycle de vie des applications informatiques. Les processus de compilation, l'exécution des tests et même le déploiement soit sur des serveurs de développements ou de production sont alors exécutés de manière la plus atuomatique possible à des fréquences variables.

Les moyens de cette automatisation sont, entre autres:

  1. la mise en place d'outils comme Maven ou Ant,
  2. l'écriture de tests unitaires à l'aide de frameworks de tests comme JUnit/JMock pour le language Java,
  3. la réalisation de tests fonctionnels ou d'intégration avec des outils comme Selenium ou SOAP UI.

Ces différents outils et frameworks mis en place au sein des projets sont les fondements de ce qu'on appelle aujourd'hui les usines logicielles. Basées sur les moyens ci-dessus, elles nécessitent le déploiement d'un outil orchestrateur que l'on appelle le serveur d'intégration. Celui-ci permet de lancer de manière automatique ou manuelle à fréquence variable différentes tâches.

Dans ce cadre, j'ai réalisé une étude comparative des outils d'intégration actuels du marché dont j'ai souhaité partager les résultats aujourd'hui. En effet, il n'existe aucune étude sur internet actuellement qui compare les principaux outils d'intégration du marché. Ces informations sont donc intéressantes pour n'importe quel architecte, chef de projet ou développeur qui souhaite mettre en place ce type d'outil dans son entreprise. Cette étude est basée seulement sur les documentations et informations officielles (forums, blogs des éditeurs) et pas sur des tests réels sur des machines.

Voici les résultats basés sur des besoins identifiés comme important (2 premières colonnes du tableau comparatif) pour un outil d'intégration:

Légende  du tableau

Tableau comparatif complet



Avantages / Inconvénients

L'ensemble des informations de cette étude comparatives des outils d'intégration actuels du marché au dernier trimestre 2011 se trouve sur les tableaux ci-dessus. J'espère que ces informations vous serviront pour le choix de l'outil le plus adapté à votre contexte d'entreprise. Sinon, vous pouvez toujours me laisser un commentaire si vous souhaitez plus d'informations...

- page 1 de 6