dimanche 28 mars 2010

LucidDB : une base de données avec un SQL/ETL surpuisant

LucidDB est une base de données relationnelle orientée entrepôt de données. Le site du projet est ici.
cette base est basée sur une architecture Java mais certaines fonctions critiques sont écrites en C++.
L'originalité de cette base est de fournir un ETL intégré.


Le stockage interne des données utilise des structures en colonnes plutot qu'en ligne. Des index Bitmap renforcent les performances.
Sa technologie Java permet de la connecter directement avec le moteur OLAP Mondrian. Ce qui lui confère un avantage sur les autres Bases de données dans le monde du décisionnel.

Le principal sponsor du projet s'est retiré mais il a été rapidement été remplacé par dynamobi.com .







vendredi 19 mars 2010

Création de l'espace lemon-labs sur Github

Je me suis créer un espace sur github qui est une forge orientée web 2.0 .
J'ai nommé cet espace 'Lemon-labs' en rappel des projets lemonldap WebSSO et lemonolap.
J'y est déposé ma présentation au forum decideo2010 : lien ici.
J'ajouterai au fur et à mesure mes sources Erlang , Haskell et Ruby.

Pub linagora sur le thème des lecons d'aubade



Campagne de recrutement à voir ici.

C'est pas mal. Ca va dans le sens de la geeks world domination

#nosql , decisionnel et #forumdecideo

Je suis intervenu au forum decideo lien ici , cet évenement a été d'une très grande qualité et très bien organisé (philippe Nieuwbourg) . Un intervenant avant moi : renaud FINAZ de Micropole Univers a fait une intervention brillante sur l'état de l'art dans le domaine du stockage des données au sens large du terme.

Je partage son analyse dans les grandes lignes:

Le volume de stockage n'est plus un problème : le Tera est accessible à tous pour moins de 100 euros.

Le volume d'information produit pour Internet en deux ans (2009/2009) est plus important que tout le volume d'information existant (X 5)


(source http://gigaom.com/2010/03/16/northscale/)

Toute cette information est en grande partie déstructurée.

Ainsi, ce n'est plus la donnée qui fait la richesse d'une entreprise c'est sa faculté de traiter cette donnée.

Le problème des performances.

Il y a deux point de contention possibles: alimentation et l'indexation (structuration) pour la restitution.

L'alimentation.
L'alimentation d'une base de données /entrepôt à partir des différentes sources de données.
Comment intégrer, contrôler , agréger des millions de lignes de données. Actuellement ces fonctions sont traités par des programmes en mode itératifs ligne par ligne ou en mode ensembliste par des opérations portant sur un ensemble de données.

Il es possible de paralléliser les traitements à conditions mais il faut le prévoir au préalablement. Ce parallélisme est rudimentaire : j'ai N sources de données je vais les traiter par N programmes lancés en même temps. Cette méthode est naïve car elle ne fait que déplacer le problème sur le moteur de la base qui lui traite les opérations en mode file d'attente (voir page sur ACID)

Il faut donc utiliser un système d'alimentation basé sur des traitements fortement 'concurrents' qui traitent avec des bases de données qui respectent le modèle ACID mais tout en étant capable de s'affranchir du modèle file d'attente (voir le théorème de CAP) de Brewer



nosql2


Concernant les langages à utiliser.
Il n'y a pas de secret , regardons ce qui se fait chez les entreprise full web 2.0 (Facebook, twitter , amazon et google).

Les langages fonctionnels: Haskell mais surtout Erlang qui nativement est capable de travailler sur plusieurs nœuds de machine et de gérer la perte de serveur.
Scala le langage fonctionnel de twitter basé sur une JVM

Les langages hybrides: Ruby et Python

Tous ces langages possèdent des fonctions puissantes de MAP/REDUCE


L'indexation et la structuration des données.

Le calcul des agrégats ou la création des index est réalisable au moment du chargement des données ou a posteriori . Pour les agrégats et les index , il sera possible de paralléliser massivement les opérations de Map /Reduce.

Les bases à utiliser.



Tout sera fonction du type d'information à stocker .
  • Pour des restitutions de documents!: CouchDB ou mongoDB (plutot hierarchique)
  • Pour des cubes: prendre des bases orientées colonnes : cassandra, htable..

mercredi 17 mars 2010

Solutions linux 2010

Cette année je n'avais pas de stand mais je me suis bien amusé en compagnie de Casimir et d'alexandre :
*Nous nous sommes payer une tranche de microsoft et nous avons joués les pique-assiettes sur leur stand
20100316-_bac5713

Je dois reconnaitre que M$ sait tenir un stand dans les salons: Petits fours sucrés et salés , hôtesses , rien à dire respect .

*J'ai discuté avec le futur organisateur de la future conférence Ruby France (c'est pas encore fait mais j'y crois, c'est toujours compliqué en Ruby -)) )

20100316-_bac5737

J'ai recu un beau livre co-signé par willy Tarreau (projet HAproxy) que nous avions invité à la DGFiP à Montreuil en 2008.

dscn1589

On a vu des geeks

20100316-_bac5716

Beaucoup de geeks
20100316-_bac5723

Des vieux geeks
20100316-_bac5741

Des jeunes geeks de l'EFREI (La relève)
20100316-_bac5727

Des hôtesses
20100316-_bac5708


J'ai mangé du pop-corn , des bonbons et j'ai accroché un ballon à mon sac
20100316-_bac5754

* J'ai discuté avec le créateur de Jasperreport Teodor Danciu au sujet du connecteur Mondrian et des bases NoSQL , il m'a expliqué comment developper un connecteur pour une base NoSQL comme CouchDB.
* On a visité les stands amis : PostgreSQL , PHP
* On a fait le tour des editeurs de Webmail.



Bref nos pieds ne touchaient plus le sol

20100316-_bac5760

lundi 15 mars 2010

forum decideo et nosql



Je vais intervenir cette semaine au forum decideo http://www.forumdecideoeditionopensource.com/.
Ma présentation portera sur :
L'opensource dans un grand compte
* Les bonnes pratiques
* L'animation d'une communauté
* Le support
Opensource et décisonnel
* Retour d'expérience : entrepôt de données
* Les tendances : alimentation , architecture de restitution , le stockage : NoSQL


Les derniers numéros de 01 informatique et de linux journal traitent du sujet nosql .
Both Reuven M. Lerner and Avi Deitcher talk about databases this month. Reuven talks about the NoSQL movement, and Avi discusses jsormdb.
Le numero Linux journal (avril 2010) ici et ici (podcast) .

mercredi 10 mars 2010

Applications de gestion et decisionnel: La Vallée dérangeante

La vallée dérangeante (uncanny valley) qu'est ce que c'est: ?

Pas ça ! (tiré du blog : coding horror de jeff Atwood)


La vallée en question correspond, sur un schéma, à la zone de perception négative ressentie par un observateur humain face à un robot humanoïde.


Cette expression utilisée dans le monde de la cybernétique peut etre étendue à d'autre domaine comme celui des architectures applicatives.

Actuellement , une barrière existe entre les applications de gestion et les applications décisionnelles. Souvent l'utilisateur est obligé de quitter l'application de gestion pour se rendre dans un environnement décisionnel distinct et réciproquement. Ce clivage se retrouve au sein même d'une direction informatique. Le décisionnel est fréquemment géré par des équipes spécialisées et dédiées. Ce fossé est historique, le décisionnel a toujours été qualifié de 'stratégique' , c'est l'aristocratie de l'informatique , par les technologies utilisées et par la nature de ses utilisateurs. La fin inéluctable des clients lourds de restitution au profit du client léger à sonné le glas de cette suprématie. Les éditeurs de suite décisionnelle ont été obligés d'empiler des couches de composants hétéroclites et se sont dispersés. L'erreur grave a été de vouloir faire d'un portail décisionnel le portail métier de l'entreprise. La tendance est à l'inverse: le décisionnel vient s'intégrer dans les infrastructures de l'entreprise tel un CMS ou un wiki.

Le schéma de l'infrastructure peut etre le suivant:
dscn1572

Avec deux problèmes a régler:

Comment alimenter l'entrepôt (modèle en étoile) à partir de la base de gestion ?:
* Par requete SQL : ici la base de production n'a pas l'initiative du transfert des données.
* Par fichiers d'extraction générés par la base de production : il faut développer du code d'extraction et de mise en forme des données.
* Par synchronisation par dblink ou autre: Cette solution est à déconseiller pour des soucis de performance et de sécurité de la base de production.

La solution 1 reste la plus simple à mettre en oeuvre.

Le problème du calcul des agrégats.

Calculer par avance les agrégats , au moment du chargement (ou avant ???) est une pratique courante. Avec comme inconvénient d'avoir une gestion complexe de recalcul d'agrégat sur des antérieurs.
Mondrian adopte une stratégie fine qui consiste à calculer les agrégats à la volée ou à utiliser des tables d'agrégats indépendantes.

Le problème est identique pour une restitution de résultat de recherche : quand indexer les données ? Au chargement ou après le chargement.

Des solutions ?

Dans le '01 informatique de fevrier' un article titrait : comment se passer des entrepôts de données ? La solution est peut là.
Il est possible d'utiliser un système NoSQL à la place d'utiliser un modèle en étoile dans un SGBDR. Le NoSQL peut être une base cle/valeur :couchDB ou une table en colonne (Bigtable)

Si on regarde les connecteurs disponibles pour Jasperreport :



En rouge : les connecteurs XML : soit par lecture d'un fichier XML soit par l'appel d'un service distant en RESTFull.
Remarque: les sources entourées de vert : JasperReport est capable de s'interfacer directement avec du mondrian.

Concernant la lecture d'un fichier XML, il ne sera pas nécessaire de générer un fichier dans le répertoire puis de lancer le compilateur de jasperreport. Il est possible par exemple de générer à la demande le flot XML et de l'envoyer directement par un 'pipe' au programme XmlJasperInterface et de récupérer l'etat généré dans le flot de sortie.

Un exemple est donnée ici en Ruby on rails :How to Integrate JasperReports with Ruby on Rails.

L'utilisation d'un flux distant est encore plus simple, une simple URL suffit.

Il faudrait donc remplacer l'entrepôt par une base clé/valeur capable de générer du XML et de faire de l'indexation à la volée: ce produit miracle existe c'est couchDB.

Nativement couchDB restitue ses résultats au format JSON ou XML . CouchDB sait utiliser des algorithmes MAP/REDUCE qui permettent de distribuer le travail d'indexation sur plusieurs processeurs ou sur plusieurs machines nativement grace au Erlang (voir la page de wikipédia). Cette technique qui est la poule aux oeufs d'or de google est la seule capable de traiter des gros volumes de manières distribuées (voir ici le détail).


Avec tous ses composants , l'intégration des restitutions du domaine décisionnelles dans une application de gestion devient possible.
(voir aussi les travaux sur ce thème de SAP )

lundi 1 mars 2010

Comment mesurer son impact sur internet

Des indicateurs ou des alertes sont disponibles sur le web pour mesurer l'audience , l'impact ou la notoriété d'un site ou d'un sujet.


Avec Google.
Le premier moyen et qui est le plus connu est de voir comment le moteur de recherche Google classe le sujet ou le site.

Avec Yahoo site explorer.
Le service 'yahoo site explorer' permet d'avoir une vision plus détaillée de l'usage qu'il est fait de vos pages ou de vos liens:

(extrait du site yahoo)

La base de données Yahoo! Search contient des informations détaillées sur les pages Web et leurs structures.
La base de données stocke des informations sur les liens hypertextes entre les pages et se fonde sur ces informations
(ainsi que sur des algorithmes additionnels) pour évaluer la popularité d'une page.
Yahoo! Site Explorer est un outil vous permettant d'accéder aux informations que
nous possédons sur la présence en ligne d'un site.
Vous pouvez y voir quels sites et quelles sous-pages sont indexées par Yahoo!
Search, ainsi que les liens entrants et sortants d'une page Web.
Et voir ainsi les pages les plus populaires de n'importe quel site.
Utilisez Site Explorer pour :

* Trouver quels sites et sous-pages sont indexés par Yahoo! Search.
* Trouver les pages qui pointent vers un site ou une page.
* Voir les pages les plus populaires de n'importe quel site.
* Soumettre et gérer les URL ou flux pour vos sites






Avec google analytics.

Après ajout de quelques lignes de javascript dans votre page HTML, google analytics collectera des données de consultation de votre site (visites,pages, provenance)



Exemple de restitutions:



Avec les alertes google.

Il est possible de demander à se service de scruter les nouvelles entrées relatives à des mots clés ou un chaine de caractères. Aussitôt que Google détecte une nouvelles référence à ce mot, il vous prévient par Mail.


Pour les autres composants du WEB 2.0 , les choses sont souvent plus simples pour mesurer la visibilité sur le Net: nombre d'ami sur Facebook , nombre de followers sur twitter.

(avec twittercounter)



On peut même mesurer sa valeur 'marchande' :(on est peu de chose)