Note de lecture : Expert Cube Development with Microsoft SQL Server 2008 Analysis Services, parChris Webb, Alberto Ferrari & Marco Russo

Note : 6 ; Peut-être pas expert, mais certainement éclairé.

Comme son nom l’indique, ce livre a pour but de faire de vous un « expert » du décisionnel avec SQL Server et plus précisément avec son sous-ensemble Analysis Services. Expert est certainement prétentieux. Disons, raisonnablement opérationnel. Pour arriver à nos fins, ce texte compte 330 pages sur 10 chapitres. Voyons ce qu’il en est.

Le premier chapitre s’abstrait de SQL Server pour présenter les fondamentaux de la conception de modèles OLAP. Il est assez surprenant de pragmatisme et d’efficacité. La plupart des choses que l’on a besoin de savoir sont couvertes dans ses 36 pages.

Le second chapitre ressemble déjà plus à du Packt publishing : on est guidé pas par pas vers la création d’un premier cube simple. Le 3ème chapitre y fait suite avec des éléments plus complexes comme les SCD.

Les aspects mesures et groupes de mesures complètent le panel de ce que l’on peut faire sur les dimensions au chapitre 4.

Les chapitres 5 à 7 se focalisent sur les aspects analyse. D’abord avec le forage de données au chapitre 5, puis avec l’ajout d’indicateurs calculés au chapitre 6 et enfin avec des opérations de conversion au chapitre 7.

Les 3 derniers chapitres ont une coloration « production ». Ca commence au chapitre 8 avec l’exploration des aspects performance. On y parle partition, agrégations et tuning des requêtes MDX. Le chapitre 9 explore les aspects sécurité de façon assez approfondie, plus qu’on en a le plus souvent besoin. Par contre le sujet de l’accès au cube par http mérite le détour. Le chapitre 10 porte le doux nom de « productionization ». On y parle beaucoup gestion des partitions. Enfin le chapitre 11 aborde le monitoring mais n’est pas inoubliable.

Contrairement au livre de Larson, celui-ci fait le choix de se focaliser uniquement sur la construction du cube et non pas sur tout le processus décisionnel qui inclurait alors SSIS. Même si l’on peut arguer que les approches sont différentes et les livres difficilement comparables, je préfère Larson à la fois plus complet et plus pédagogique.

Parmi les points intéressants : des conseils d’usage pour ne pas se retrouver le bac dans l’eau et des liens vers des articles de blog développant tel ou tel aspect…

Expert Cube Developpement with Microsoft SQL Server 2008 Analysis Services

Référence complète : Expert Cube Development with Microsoft SQL Server 2008 Analysis Services – Chris Webb, Alberto Ferrari & Marco Russo – Packt Publishing 2009 – ISBN : 978-1-847197-221

Expert Cube Development with Microsoft SQL Server 2008 Analysis Services

https://www.goodreads.com/book/add_to_books_widget_frame/1847197221?atmb_widget%5Bbutton%5D=atmb_widget_1.png&atmb_widget%5Bhide_friends%5D=on

Facile à bien utiliser, difficile à mal utiliser: l’article

J’avais évoqué la chose en publiant le support de ma présentation de l’Agile Tour Bruxelles : voici cette présentation cette fois sous forme d’article. Je m’étais déjà livré à cet exercice suite à mon lighning talk sur l’émergence. Je souhaite systématiser cela, car le support de présentation éclaire assez peu sur la teneur d’une présentation.

Hélas, l’exercice est aussi très consommateur de temps, cela explique le retard conséquent que je peux avoir à produire ces articles.

2.0, I me mine (opus 2013)

Comme je l’avais fait sur les deux années précédantes(donc 2011 et 2012), voici mon l’état de mon usage du Web 2.0

Cette année écoulée est marquée des révélations de Snowden. La NSA a transformé l’Internet en source d’information, bien d’autres pays sont sur la voie. Je pensais déjà à ce que je met sur le Web en terme d’information pouvant être espionnée. Il faut se faire à l’idée que ce ne plus une question de pouvoir l’être, mais de l’être vraiment.

De moins en moins à plus du tout

Yammer : J’utilisais peu du temps du SUG. Je ne fais plus partie du SUG, donc maintenant c’est “plus du tout” !

Quora : J’utilisais peu. Là il faut que je l’avoue tout net, j’ai fait une année complète sans y aller. Donc, termeiné ? On verra…

Diigo : J’étais parti avec pas mal d’enthousiasme sur cet outil de bookmarking. Au final, je me suis lassé de continuer son utilisation.

Producteev : C’était un peu mon outil GTD. Des détails ergonomiques un peu crispant ont fini par avoir raison de ma pugnacité. C’est bien dommage. Peut-être essaierai-je un outil concurrent ?

Ideascale : Je l’avais fait figurer ici car j’étais au bureau du SUG. Depuis que je n’y suis plus, mon usage en est devenu anecdotique.

Pas plus, pas moins … mais peu

Google Doc : J’aimais pas avant, j’aime toujours pas ! Je l’utilise pour partager des choses avec des collègues, mais c’est tout, et contraint et forcé !

Google plus : C’est surtout un outil de notification pour moi. Parfois je lis des posts dans certaines communautés… en fait, ce sont bel et bien les communautés que j’ai tendance à trouver pratiques.

github : Ca ne fait pas terrible de dire ça, mais j’utilise très peu github. Juste un peu les gist…

Stackoverflow : Il est et reste le site incontournable pour répondre à n’importe quelle question de développement. Même si c’est rare, je cntinue à en faire l’expérience !

Trello : Quelques boards personnels et quelques boards professionnels. Je garde un rythme modéré mais réel sur l’outil.

Meetup : Je n’administre plus le meetup du French SUG, mais je reste connecté à 3 ou 4 groupes qui y organisent leurs rencontres.

Slideshare : Là non plus, ce n’est pas un site que je fréquente régulièrement. Juste pour y poster mes présentations 4 ou 5 fois par an…

Disqus : J’ai connecté mon blog à Disqus. Mais pour être honnête, j’ai très peu de commentaire par ce biais. J’en ai bien plus par LinkedIn d’abord, et par Google plus ensuite !

Capitaine Train : La plupart de mes déplacements en train sont pris en charge par l’entreprise. Mais j’utilise bien volontier cet excellent service quand je dois le faire moi-même. Donc peut-être 2 fois par an ou quelque chose comme ça…

Viadeo : Le LinkedIn Français est un incontournable. On y accepte des contacts, j’y notifie les posts de mes blogs (ça ne semble pas porter beaucoup…). Et dans tout ça, mon profil n’y est même pas à jour !

LinkedIn : Si Viadeo est le LinkedIn Français, LinkedIn est le Viadeo international. J’entretiens avec beaucoup d’attention mes contacts. Et mes informations y sont à jour. L’un dans l’autre, je l’utilise un petit peu plus que Viadeo, également pour les notifications de post. Mais ce n’est pas mortel quand même…

Pas plus, pas moins … mais plutôt pas mal

Dropbox : Le stockage en ligne reste un de mes très gros usages. J’y stocke vraiment beaucoup de choses. Bref, usage quaotidien et intensif. Aussi bien “pro” que “perso” !

Evernote : Je suis toujours un utilisateur intensif de DropBox. Et même si cela ne se justifie pas toujours pas, j’ai désormais un abonnement Premium. Et aussi un Livescribe (sur lequel je ferais bientôt un post). Bref, je l’utilise quotidiennement : usage professionnel, personnel, brouillons de mes posts (y compris celui-ci), etc.

GMail : Il faut bien l’avouer, aujourd’hui pratiquement tous mes mails sont sur GMail. Autant pour la confidentialité…

Twitter : Il s’agit surtout d’un usage pro, qui tourne autour de la thématique de l’agilité. C’est aussi pour moi un outil de notification. Pour moi, le web “social” tourne presqu’exclusivement autour de Twitter. Bien que je ne sois pas un fondu des réseaux sociaux…

Tumblr : Mon volume de posts est disons … intéressant. Avec plus de 200 posts par an, on peut dire que c’est une plateforme que j’utilise intensivement !

Plus aujourd’hui qu’hier

Flickr : Depuis que j’ai fait l’acquisition d’un appareil numérique digne de ce nom (un Olympus Pen), mon volume de photo a bien grimpé. Notament lors des évènements pro. Je poste toutes mes photos pro sur Flickr, ne serait-ce qu’à cause du redimensionnement qu’effectue ce service pour faire rentrer mes prises de vues dans le blog. Ce redimensionnement est réellement d’excellente qualité.

Dashlane : J’ai pratiquement cessé d’avoir un même mot de passe pour plusieurs services. J’ai aussi arrêté les mots de pase triviaux. Tout cela grâce au coffre-fort électronique. Esérons que la confidentialité affichée soit réelle … et que le service dure très longtemps !

Issuu : J’utilise désormais exclusivement ce service pour partager des PDF sur mon blog (malgré un techno Flash…). Donc de plus en plus, que ce soit pour mes propres textes, ou d’autres du domaine public que je souhaite partager.

Les nouveaux venus

Goodreads : Le seul nouveau venu de l’année écoulée ! Goodreads permet de partager sa liste de lecture et de consulter celles des autres. Bref, tout ce que l’on a envie d’échanger sur la lecture !

Donc peu de grosses nouveautés pour cette année. En fait, j’ai même un peu fait le ménage. A l’année prochaine !

Meetup Neo4J de décembre 2013 : Des recommandations en temps réel avec Recolytic

Ce sont deux sujets qui seront abordés lors de ce meetup. En effet, en introduction à la présentation de Rochdi Chakroun, Cédric Fauvet a évoqué le concours GraphGist, concours où il y a peu à gagner. Mais ce n’est pas l’objectif. Ici, il s’agit plutôt de monter de petits cas d’utilisation originaux. Neo4J souhaite visiblement pouvoir montrer beaucoup de cas d’utilisation créatifs et variés de sa base de données.

Cédric Fauvet débute généralement ces rencontres par une présentation de la société, des cas d’usage de Neo4… Celle-ci ne fit pas exception.

image

Bien sûr il nous présente les mêmes concepts, les même cas d’utilisation ou presque, mais le propos évolue quand même un peu à chaque fois. Et de plus, il y avait aujourd’hui Neo4J 2.0 à évoquer ! Il n’y a rien non plus de rébarbatif dans sa façon de présenter les choses. Après tout, avant d’être responsable de Neo4J France, Cédric était un développeur comme nous !

Mais avant de passer à la suite : Pizza time !

image

Recolytic

Rochdi Chakroun est architecte logiciel chez Vente Privée. Mais ce n’est pas à ce titre qu’il venait aujourd’hui, mais plutôt pour présenter le fruit d’un projet personnel : Recolytic.

image

Le constat de Rochdi est que les systèmes de recommandation sont aujourd’hui obscures : "nous allons faire progresser votre chiffre d’affaire, vous n’avez pas à savoir comment". Une position qu’il juge insupportable au regard de l’aspect stratégique de ce traitement.

Autre aspect que l’orateur a voulu adresser : la recommandation en temps réel. Les moteurs de recommandation s’appuient sur la plupart sur des algorithmes et des traitements de machine learning qui demandent de longs temps de traitement en différé pour fournir de nouveaux modèles mis à jour.

Recolytic se veut performant, facile à intégrer et transparent sur la stratégie. Il s’appuie bien sûr sur Neo4J, ici le modèle c’est le graphe. Et ce graphe est composé de triplets utilisateur – action -ressource. Il est à noter que Rocolytic est complètement agnostique sur la nature des ressources. Des poids peuvent être accorder aux actions ou aux ressources, par exemple pour donner plus d’importance à un achat par rapport à une consultation.

Pour ce qui est des APIs, Rocolytic en propose 3 catégories :

  1. Les API de collecte : pour récupérer les actions des utilisateurs.
  2. Les APi de recommandation. Elles permettent plusieurs stratégies.
  3. Les API de mesure. Afin de mesurer après coup la pertinence de recommandations et ajuster le paramétrage en conséquence.

A l’initialisation de Recolytic, on débute sans informations de l’utilisateur. Il est donc pertinent de commencer avec la stratégie par défaut : les plus populaires.

Il sera ensuite possible de basculer vers une autre stratégie, par exemple la similarité de panier.

Pour démontrer le produit, Rochdi nous propose de nous promener dans un site d’e-commerce de démonstration.
Rochdi ne s’est pas encore fixé d’objectif pour les prochaines étapes : en faire un open-source, ou une startup… Il avoue surtout avoir besoin de récupérer de ses efforts. On le comprend : il a quand même réalisé tout cela en gardant son activité chez Vente Privée !

En Janvier, nous rencontrerons un autre cas d’utilisation avec Structr.

Co-création du Scrum Day 2014, en images

Changement d’approche pour le ScrumDay 2014 : inviter la communauté à s’impliquer dans cette nouvelle édition. A vue de nez, je dirais qu’Arnaud Villenave ne doit pas être étranger à cette idée…

C’est vrai, je ne fais plus partie du bureau. Cela ne veut pas dire que je me désintéresse du SUG ou du Scrum Day ! Et puis, on est à peu près sûr de croiser des gens sympa à ces soirées !

Cogitations avec Bruno Marguerita

C’est essentiellement des thèmes que nous avons parlé. Prévu pour être en mode “open space”, les choses se sont enclenchées différemment. Ce qui n’est pas réellement un problème : les personnes qui sont présentes sont les bonnes personnes, ce qui s’y passe est aussi la bonne chose.

Cogitations avec Xavier Galleri

Prévu pour presque 40 personnes, nous étions finalement une quinzaine. Cela nous ramène aux ratios de participation des Scrum Beer, n’est-ce pas ? Ce qu’on a perdu en nombre, on l’a gagné en convialité. Au final, nous avons bien couvert le tableau blanc d’idées en tout genre

David au tableau blanc

Idées que nous avons synthétisé par la suite.

Arnaud mène les débats (3)

Mes contributions auront surtout porté sur autre chose que les thèmes :

  • La réduction (même légère) du temps alloué à la performance des conférenciers. Cela permettrait d’allouer plus de temps entre les sessions pour les rencontres et discussions informelles. Ce dernier point ne vient pas de moi.
  • Malgré l’échec de l’an dernier nous avons quand même évoqué les Lightning Talk. Nous semblons tous d’accord que jusqu’à présent seul l’Agile Tour Nantes a su bien les gérer. En enseignement dont il faut tirer parti si nous souhaitons malgré tout remettre le couvert.
  • La présence d’animations en tout genre en marge de la conférence : podcast, interviews, scribers, etc..

Je ne vais pas citer l’ensemble des idées, je vais plutôt vous laisser en prendre connaissance.

Résultat des cogitations (3)

Comme vous le voyez, on est pas en peine de ce côté.

Résultat des cogitations (4)

La question suivante est bien sûr celle de la prochaine étape :

  • Trier, construire à partir de cela.
  • Impliquer ou non ces volontaires dans les prochaines étapes de construction et pourquoi pas, d’organisation !

Bref, je suis curieux de voir la suite !

Note de lecture : SQL Avancé, par Joe Celko

Note : 8 ; La grande référence du SQL

Joe Celko, c’est un peu le pape du SQL. Avec lui, on est certain que le sujet ne sera pas traité superficiellement. L’ouvrage accuse près de 20 ans d’âge, mais le sujet ne subit pas des mutations telles que l’ouvrage en devienne obsolète. Voyons ce qu’il en est. L’ouvrage comprends 450 pages incluant 2 courtes annexes. Il est découpé en pas moins de 29 chapitres, donc avec une moyenne d’environ 15 pages pour chacun d’entre eux.

La courte introduction du chapitre 1 nous amène directement au solide chapitre 2 qui pose les bases de la modélisation de bases de données. On y parle formes normales, normalisation … et dénormalisation.

Les chapitre 3, 4 et 5 sont consacrés aux types de données numériques, temps et chaines de caractères respectivement. Ce sont des exemples de précision et de qualité. Nombre de subtilités que l’on peine à maîtriser sont développées ici. Les subtilités des représentations en virgules flottantes ne sont pas esquivées, tout comme les aspects les plus pointus sur les calculs de dates.

Consacrer un chapitre à NULL pourrait paraître exagéré, mais le chapitre 6 couvre le sujet de manière particulièrement pointue voir ardue, puisque l’on aborde les logiques d’opération avec NULL. Par comparaison, le chapitre 7 consacré aux « autres objets du schéma » est un joyeux fourre-tout traité de manière plutôt succincte.

Le chapitre 8 couvrant les opérations sur les tables nous permet de souffler un peu. Pas grand chose de nouveau pour moi, mais le sujet des delete, insert et update est couvert de manière plus que convenable.

Du chapitre 9 au chapitre 15, on couvre les prédicats au sens large. D’abord avec les opérateurs de comparaison au chapitre 9, également appelés « thêta » par Codd (j’ignorais cela). Les aspects de conversion de données qui y sont corrélés sont aussi couverts. Les prédicats avec valeurs et les prédicats like sont éjectés en quelques pages. Between et overlap sont des prédicats que j’utilise très peu, ils sont particulièrement bien appréhendés dans le chapitre 12, exemples et schémas à l’appuis !

Au chapitre 13, on appends que « in » (et « not in ») sont sujets à des questions de performance et l’auteur nous offre quelques pistes de réflexion. Fort logiquement, le chapitre 14 aborde « exists » et couvre des questions telles que le comportement avec des valeurs nulles ou le choix d’utilisation d’exists par rapport à une jointure. On termine le tour du propriétaire avec des questions sur les sous-requêtes, l’usage de « unique », etc… au chapitre 15.

Le chapitre 16 est un incontournable : il traite du « select ». Cela conduit à un chapitre d’une trentaine de pages qui inclut fort naturellement des éléments tels que les jointures de tout poil et autres « group by ». Dans le même ordre d’idées, les vues traitées au chapitre 17 nécessitent un peu plus de 20 pages dans lesquelles sont évoquées les vues en lecture seule ou en écriture, les indexations, les vues matérialisées ou les vues imbriquées. Le chapitre 18 sur les partitions est un peu plus ésotérique pour moi, mais il est assez court.

Du chapitre 19 au chapitre 22 on évoque les opérations sur les agrégats. Ca commence doucement au chapitre 19 avec les opérations sur les groupes avec « group by » et « having », même si l’auteur va bien plus loin que ce dont j’ai l’habitude. Les fonctions d’agrégats (count, avg, etc…) sont des grands classiques. Ils sont traités sans surprises au chapitre 20. Les surprises, on en a plus au chapitre 21 avec les statistiques. Franchement, ça arrache bien la gueule avec les médianes de Murchison ou de Celko (eh oui !). Variance, écart-type, pourcentages cumulés : on peut faire tout ça avec SQL ! Les régions, suites et séquences traitées au chapitre 22 sont au-delà de ce que j’ai l’habitude de voir. Mais le chapitre est assez court.

Le chapitre 23 est une petite curiosité car il aborde un sujet hérétique en SQL : la représentation des tableaux dans les tables. Amusant.
Les chapitre 24 et 25 parlent des opérations sur les ensembles. D’abord avec les fameuses clauses union et intersect. Ensuite avec les sous-ensembles au chapitre 25.

La représentation des graphes en bases relationnelles est un sujet complexe, essentiellement parce que ce type de base n’est pas fait pour cela. Les chapitres 26 et 27 sont plutôt velus car ils abordent directement cette question. D’abord avec les arbres au chapitre 26. L’auteur n’est pas avare de schémas, de représentation et d’algorithmes de recherche. On y traite aussi des fonction d’insertion, de suppression et de rééquilibrage !

Le chapitre 27 dédié aux graphes paraît presque simple par comparaison. Aussi solidement traité cela soit-il, Joe Celko n’a pas tout dit sur le sujet : il a consacré un autre ouvrage spécifiquement sur cette question.

Les deux derniers chapitres du livre peuvent être considérés comme des conseils d’expert. Le chapitre 28 est dédié aux performances : à quelles éléments de la requête doit-on prêter attention, que faut-il éviter, etc… Le dernier chapitre est consacré à des considération de conception assez pointues : échelles de valeur, codification, clés de vérification, etc… C’est pas pour les enfants !

Quand on plonge dans ce livre, on comprend rapidement que la réputation de Joe Celko en tant qu’autorité du SQL n’est pas usurpée. C’est du très, très solide ! La prose est assez accessible, mais l’auteur ne fait aucune concession au niveau d’information fourni. Et quand les explications sont pointues (donc assez souvent), il convient de bien s’accrocher. Heureusement, la matière s’appuie de très nombreux exemples en code SQL, avec des données et des représentations graphiques. Cette édition est bien sûr assez ancienne. Il est d’ailleurs amusant de voir l’auteur se référer très souvent au Cobol (parfois même au PL/1) et à de rares occasions au C. Des éditions ultérieures ont vu le jour, la dernière date de 2010 et compte près de 900 pages !

Je ne saurais trop conseiller Joe Celko pour quiconque veut rentrer sérieusement dans le SQL. Mais cette lecture est aussi un sérieux investissement de temps et d’auto-formation !

SQL Avancé, 2nd édition

Référence complète : SQL Avancé – Joe Celko – Vuibert 1999 (V.O. : Joe Celko’s SQL for Smarties : Advanced SQL programming ; Morgan Kauffman pub. 1995 ; ISBN : 94104-3205) – ISBN : 9782711786367

Harry Potter and the Goblet of Fire (Harry Potter, #4)

https://www.goodreads.com/book/add_to_books_widget_frame/0439139600?atmb_widget%5Bbutton%5D=atmb_widget_1.png&atmb_widget%5Bhide_friends%5D=on

L’agilité à grande échelle chez Spotify, par Henrik Kniberg & Anders Ivarsson

Dans cet article, les auteurs décrivent la façon dont Spotify est parvenu à maintenir une dynamique agile malgré une montée en taille importante et rapide sur les 6 dernières années. Elle s’appuie sur un petit nombre de concepts organisationnels

Les squads

A mi-chemin entre la Scrum Team et la Feature Team, le squad est doté d’une mission sur le long terme, possède un espace de travail en propre et regroupe toutes les compétences nécessaires à sa mission. Son mode de travail s’inspire du Lean Startup, mais ici on appelle cela “think it, build it, ship it, tweak it”. Les squads bénéficient aussi des 10% hack days inspirés des 20% ou des exploration days de Jurgen Appelo (c’est la même chose).

L’objectif, sinon la clé est d’avoir des squads autonomes.

Les tribus

Les squads sont nombreux : il y en a 30 chez Spotify. Ils sont regroupés en tribus. Une tribu est focalisée sur une problématique métier particulière est fonctionne un peu en “incubateur de startup”. Elles sont de taille variées mais ne dépassent pas 100 personnes.

Les tribus organisent leur propres rassemblements et partagent outils, idées, etc… 

Les chapitres

Ce sont des regroupements “transverses” de personnes de même domaine d’expertise. Ils se rencontrent régulièrement pour partager outils, expérience, challenges, etc.. Chaque chapitre est géré par un manager qui est de fait le responsable hiérarchique de ses membres … mais est lui-même membre d’un squad avec des responsabilités opérationnelles ! Les chapitres sont locaux aux tribus.

Les guildes

Ce sont des communautés d’intérêt, plus informelles que les chapitres. Elles sont transversales à l’entreprise et regroupent souvent les chapitres correspondant des différentes tribus. L’animateur d’une guilde l’est à temps plein. 

Là aussi, la lecture du Management Workout de Jurgen Appelo peut être instructive…

L’organisation dans son ensemble

Elle est en quelque sorte matricielle. La dimension dominante est celle du “quoi”, l’axe opérationnel, donc les squads et les tribus. Il y a une seconde dimension, celle du “comment” qui correspond aux chapitres et aux guildes.

Et bien d’autres choses…

Voilà, il s’agit juste de l’apéritif pour vous encourager à lire cet article par ailleurs fort bien écrit et illustré. Il y a de nombreux éléments que j’ai passé sous silence, comme la gestion des dépendances entre les squads.

Spotify est une entreprise dont la structure dominante est tournée vers l’opérationnel. Elle rompt avec les structures traditionnelles orientées compétences qui fragmentent l’organisation en silos, obligeant les projets à franchir les obstacles entre ces silos, consommant temps et énergie et souvent aussi hélas, vidant les projets de leur substance !