mardi 12 juillet 2016

Tech use case Neo4j

     Tout d'abord une petite introduction car cela fait un petit moment que je n'ai pas pris ma plume numérique pour gratter quelques mots sur ce blog .... le grand problème des temps modernes : le temps.

     Du coup ce retour n'est pas pour un long article mais pour y inscrire quelques références et laisser une trace dans le temps d'une utilisation qui me semble intéressante de Neo4j (oui oui, toujours java, jvm, datastorage, ... cela n'a pas changé). Ce qui me permettra d'y revenir pour creuser plus en avant ces pistes si l'occasion se présente.

Neo4j pour une utilisation côté développeur

     C'est parti d'une réflexion simple lors d'une soirée discussion développeur : quand je veux analyser mon heap java, c'est un graph d'objet (avec ses dominators, ....).

     Pour avancer en runtime des profiler proposent des vues sur le contenu, en statique via heapdump une photo qui peut être analysée (jdk tool, MAT, ...). Soit mais la console Neo4j est quand même bien jolie et Cypher plutôt sympa comme langage à utiliser, du coup je me dis qu'il y a bien quelqu'un qui a travaillé sur le sujet.

Différente utilisation en analyse de code, repo maven, ... :
http://neo4j-contrib.github.io/asciidoc-slides/content/presentation/software_analytics/software_analytics.html

Analyser un java heap avec Neo4J
https://www.infoq.com/presentations/neo4j-java-heap-analysis
https://speakerdeck.com/npryce/looking-for-smoking-guns-in-a-haystack-jvm-heap-analysis-with-neo4j

En complément :
Génération d'un heapdump en programmatique
https://github.com/neo4j/neo4j/tree/6280974efc9b082d5f40044df362355134a8632b/community/kernel/src/test/java/org/neo4j/test/rule/dump
https://searchcode.com/codesearch/view/71592610/

Quand on ne le fait pas en Cypher, on peut le faire en OQL (Object Query Language)
https://visualvm.java.net/oqlhelp.html

Un HPROF c'est écrit comment
https://blogs.oracle.com/kto/entry/the_hprof_manual
https://blogs.oracle.com/kto/resource/manual.html
https://java.net/downloads/heap-snapshot/hprof-binary-format.html

Projet de parsing d'HPROF
https://github.com/eaftan/hprof-parser

Voilà, voilà avec tout cela on doit pouvoir générer un heapdump, le parser, insérer le graph dans Neo4j afin qu'il soit à disposition pour être requêter en Cypher ... ya plus qu'à .... avec un peu de temps.

2e cas qui peut être sympa, parsing du code (antlr, ...) et représentation des dépendances en vision statique code écris.

Et en dehors de Neo4j

Une histoire des datastorage du file system au NoSQL
https://published-rs.lanyonevents.com/published/oracleus2015/sessionsFiles/3659/CON7557_Remani-bigdata-javaone.pdf

Comparatif des solutions de streaming
http://fr.slideshare.net/GyulaFra/largescale-stream-processing-in-the-hadoop-ecosystem-hadoop-summit-2016-60887821

Perspective ecosystem Hadoop et une photo du premier Hadoop, l'éléphant peluche
http://fr.slideshare.net/cloudera/apache-hadoop-at-10-59397028