Druid est une base de données distribuée, orientée colonnes et open source, écrite en Java. Druid est conçu pour ingérer rapidement d’énormes quantités de données d’événement et renvoyer les données avec un faible temps de latence[2]. Le nom Druid fait référence aux druides de nombreux jeux de rôle, par analogie à l'aptitude de l'architecture du système à se métamorphoser pour résoudre différents types de problèmes de données.
Druid a été lancé en 2011 pour alimenter le produit d'analyse de la société Metamarkets. Le projet a été open source sous licence GPL en [9],[10] et est passé à une licence Apache en [11],[12].
Au fil du temps, un certain nombre d’organisations et de sociétés ont intégré Druid dans leur back office[3] et des committers de nombreuses organisations différentes ont été ajoutés[13].
En , la société commerciale Imply a été lancée pour fournir un produit d'entreprise construit autour de Druid[14].
En , Spicule Ltd a publié une version prise en charge de Druid sur la plate-forme Juju de Canonical[15].
Architecture
Entièrement déployé, Druid s'exécute en tant que cluster de processus spécialisés (appelés nœuds dans Druid) afin de prendre en charge une architecture tolérante aux pannes[16] les données sont stockées de manière redondante et en l'absence de point de défaillance unique[17]. Le cluster inclut des dépendances externes pour la coordination (Apache ZooKeeper), le stockage de métadonnées (par exemple MySQL, PostgreSQL ou Derby) et une installation de stockage profond (par exemple HDFS ou Amazon S3) pour la sauvegarde permanente des données.
Gestion des requêtes
Les requêtes du client sont d’abord envoyées aux nœuds broker, qui les transfèrent ensuite aux nœuds appropriés (historiques ou en temps réel). Comme les segments Druid peuvent être partitionnés, une requête entrante peut nécessiter des données provenant de plusieurs segments et partitions stockés sur différents nœuds du cluster. Les brokers peuvent savoir quels nœuds ont les données requises et fusionner ensuite des résultats partiels avant de renvoyer le résultat agrégé.
Gestion de cluster
Les opérations relatives à la gestion des données dans les nœuds historiques sont supervisées par des nœuds de coordination. Apache ZooKeeper est utilisé pour enregistrer tous les nœuds, gérer certains aspects des communications entre nœuds et organiser des élections d'un leader.