Quid ?
“MarkLogic Server is a document-centric, transactional, search-centric, structure-aware, schema-agnostic, programmatic, high performance, clustered, database server.”
Marklogic est donc une base de données de type documentaire. On peut y stocker des To de documents XML, JSON (sans transformation en XML dans la version 8), de textes brut ou données binaires (dont les métadonnées sont indexées).
Marklogic peut se comparer à un SGBDR de classe SQLServer, Oracle ou DB2 pour ses capacités transactionnelles.
Marklogic peut également se comparer à Elasticsearch pour ses fonctionnalités de recherche évoluées (y compris la recherche à facettes) et ses capacités de montée en charge (le fonctionnement en cluster est natif).
On peut accéder aux bases de données de multiples façons :
1/ via une API Java
2/ via une API Node.js
3/ via une API REST
4/ via une interface WebDAV
5/ via une interface SQL/ODBC (pour interfacer par exemple un outil de BI)
On programme donc des applications sur Marklogic en Java, Javascript (Node.js), Xquery (mais oui c’est un langage de programmation), .Net (ODBC) ou tout langage pouvant utiliser une API REST (Python etc.). Large choix …
Les requêtes peuvent être écrites sous forme de QBE (Query By Example), ce qui satisfait pas mal de besoins. Mais pour utiliser Marklogic à 100 %de ses capacités, il est indispensable de maîtriser la boite à outils XML : XQuery et XSLT. XQuery va être utilisé comme langage de requête, alors que XSLT va être plutôt utilisé lors des ingestions et exports de documents.
Chose intéressante : différents langages sont liés dans Marklogic via des extensions : ainsi une transformation XSLT peut faire appel à des fonctions XQuery, et vice-versa, un code XQuery peut faire appel à du code javascript et vice-versa.
Parmi les fonctionnalités avancées de Marklogic, je note aussi l’existence de « reverse queries », qui soumettent un document à une série de requêtes et permettent ainsi de gérer par exemple des alertes en temps-réel, ou même des alertes liées à la comparaison d’un profil et d’une offre (d’emploi en particulier).
Pour tester Marklogic, il suffit de demander une licence développeur, gratuite, d’une durée de 6 mois renouvelables.
Installation
Pour le tester à fond, je désire l’installer sur mon système Ubuntu 14.04.
Surprise, Marklogic n’est pas officiellement supporté sous Ubuntu et on ne trouve pas d’archive en téléchargement pour ce système. Marklogic propose par contre un package RPM (Red Had / CentOS / SUSE).
Téléchargez par exemple la version SUSE du package MarkLogic et transformez là en paquet Debian avant installation, cela fonctionne très bien.
Pour cela, lancez les commandes suivantes :
# récupérez l'app de transformation de paquet rpm-deb $ sudo apt-get alien # lancez cette app $ sudo alien --to-deb --verbose Téléchargements/MarkLogic-8.0-3.x86_64.rpm # installez le paquet .deb résultant (l'incrémentation de version est automatique) $ sudo dpkg -i marklogic_8.0-4_amd64.deb # lancez Marklogic $ sudo /etc/init.d/MarkLogic start
A noter, lancer Marklogic en sudo permet au logiciel de créer /opt/var/MarkLogic, i.e le répertoire qui contiendra les données.
Il ne reste plus alors qu’à tester l’IHM Web du logiciel (http://localhost:8001) et initialiser la database via cette interface.
Initialisation
On me demande de lancer l’initialisation du système ; après quelques secondes, on me demande si je veux joindre un cluster (non), puis d’entrer un nom et mot de pass Admin et un « realm » (utilisé dans la génération de password digests, et que je laisse dans cette install de test à « public »).
L’écran devant lequel je me trouve est un peu intimidant pour un premier contact, et ses couleurs sont un peu … américaines années 90.
Mais le système est déjà prêt à recevoir des données.
Intégrer un lot de données XML dans Marklogic
Afin de commencer à tester le produit, faisons lui ingérer un lot de documents XML. J’ai sous la main 10.000 fichiers de métadonnées de photos AFP au format NewsML-G2, ils vont m’être utiles ici.
Marklogic propose plusieurs outils d’ingestion : la Query Console ne permet d’importer qu’un document ; XML Content Pump est un outil en mode commande, qui nécessite une petite formation ; Information Studio paraît plus indiqué pour mon lot de documents.
On trouve l’outil à l’URL http://localhost:8000/appservices/ (Note : le design de l’interface est beaucoup plus sympathique que l’interface d’admin, qui mériterait d’être alignée). Je suis les indications données dans « 5 minute Information Studio walkthrough ».
Les 10.000 documents sont importés en moins de 30 secondes sur mon Dell XPS 13 (1 minute sur mon PC Windows plus ancien). Facile et fiable.