ElasticSearch pour les Séries chronologiques de Données
Je suis de l'évaluation d'un certain nombre de différentes bases de données NoSQL pour stocker des séries chronologiques de données JSON. ElasticSearch a été très intéressant en raison de la requête du moteur, je ne sais pas comment il est adapté pour le stockage des données de séries chronologiques.
Les données est composé de plusieurs indicateurs et les statistiques recueillies à divers intervalles à partir de périphériques. Chaque élément de données est un objet JSON. Je m'attends à s'accumuler autour de 12 go/jour, mais seulement besoin de conserver les données en ES pour 180 jours.
Serait ElasticSearch être un bon ajustement pour ces données vs MongoDB ou Hbase?
Vous devez vous connecter pour publier un commentaire.
À l'aide du temps en fonction des indices, par exemple un indice d'un jour, en collaboration avec l'index-modèle de fonctionnalité et un alias pour interroger tous les indices à la fois, il pourrait être un bon match. Il y a encore tellement de facteurs que vous devez prendre en compte comme:
- type de requêtes
- La Structure du document et de la requête besoins de cette structure.
- Le montant de lectures /écritures
- La disponibilité, les sauvegardes, surveillance
- etc
Pas une question facile à répondre par oui ou par non, je crains que vous avez à faire plus de recherches avant de vous vraiment dire que c'est le meilleur outil pour le travail.
Vous pouvez lire sur ElasticSearch temps de la série de cas d'utilisation exemple ici.
Mais je pense que colonnaire les bases de données sont la solution la mieux adaptée à vos besoins.
Ma compréhension est que ElasticSearch fonctionne mieux lorsque vos demandes de retour d'un petit sous-ensemble de résultats, et il met en cache ces paramètres pour être utilisé plus tard. Si les mêmes paramètres sont utilisés dans les requêtes de nouveau, il peut utiliser ces résultats mis en cache, ensemble dans l'union, et donc de renvoyer des résultats très rapides. Mais dans les séries chronologiques de données, vous aurez généralement besoin de données agrégées, ce qui signifie que vous serez en traversant beaucoup de lignes et de colonnes. Un tel comportement est très structuré et est facile à modéliser, dans ce cas, il ne semble pas être une raison pour laquelle ElasticSearch devrait faire mieux que les colonnes de bases de données. D'autre part, il peut offrir la facilité d'utilisation, moins de tuning, etc tout ce qui peut rendre plus préférable.
Colonnes de bases de données fournissent généralement plus efficace structure de données pour les données de séries chronologiques. Si votre requête structures sont bien connu à l'avance, alors vous pouvez utiliser Cassandra. Attention, si vos requêtes de demande sans l'aide de la clé primaire, Cassandra ne sera pas performant. Vous devrez peut-être créer des tables différentes avec les mêmes données pour les requêtes différentes, comme sa vitesse de lecture dépend de la façon dont il écrit sur le disque. Vous avez besoin d'apprendre les subtilités, une série chronologique exemple est ici.
Une autre forme de colonne de base de données que vous pouvez essayer est le colonnaire extension prévue pour Postgresql. Considérant que votre max db taille sera d'environ 180 * 12 = 2.16 de la TUBERCULOSE, cette méthode devrait fonctionner parfaitement, et peut en fait être votre meilleure option. Vous pouvez également s'attendre à quelques significative de la taille de compression d'environ 3x. Vous pouvez en apprendre plus à ce sujet ici.