Quelle est la fiabilité d’ElasticSearch en tant que magasin de données primaire contre des facteurs tels que la perte d’écriture, la disponibilité des données

Je travaille sur un projet avec la nécessité de créer un tableau de bord générique où les utilisateurs peuvent effectuer différents types de regroupement, de filtrage et de recherche dans différents domaines. Pour cela, nous recherchons un magasin de recherche permettant de découper et de découper des données.

Il y aurait plusieurs sources de données et le stockerait dans le magasin de recherche. Il peut y avoir un pré-calcul nécessaire sur les données sources qui peut être effectué par des composants intermédiaires.

J’ai parcouru plusieurs blogs pour savoir si ES peut également être utilisé de manière fiable comme magasin de données primaire. Cela dépend surtout du cas d’utilisation que nous recherchons. Quelques informations sur le cas d’utilisation que nous avons:

  • Environ 300 millions de disques chaque année avec 1-2 Ko.
  • En supposant que l’on stocke des données sur un an, nous sums aujourd’hui à 300 Go, mais le cas d’utilisation peut atteindre 400 à 500 Go compte tenu de la croissance des données.
  • Pour l’instant, nous ne soaps pas comment nous allons pousser les données, mais en gros, cela peut aller jusqu’à 2-3 millions d’enregistrements par 5 minutes.
  • La demande de recherche est faible, mais nécessite des requêtes complexes qui peuvent rechercher des données pour les 6 dernières semaines à 6 mois.
  • Le document sera indexé dans presque tous les champs du document.

Certains blogs disent qu’il est suffisamment fiable pour être utilisé comme magasin de données primaire –

  • http://chrisberkhout.com/blog/elasticsearch-as-a-primary-data-store/
  • http://highscalability.com/blog/2014/1/6/how-hipchat-stores-and-indexes-billions-of-messages-using-el.html
  • https://karussell.wordpress.com/2011/07/13/jetslide-uses-elasticsearch-as-database/

Et certains blogs disent que les ES ont peu de limitations –

  • https://www.found.no/foundation/elasticsearch-as-nosql/
  • https://www.found.no/foundation/crash-elasticsearch/
  • http://www.quora.com/Why-should-I-NOT-use-ElasticSearch-as-my-primary-datastore

Est-ce que quelqu’un a utilisé Elastic Search comme la seule vérité des données sans avoir un stockage principal tel que PostgreSQL, DynamoDB ou RDS? J’ai constaté que ES a certains problèmes, comme la division des cerveaux et la corruption d’index, où il peut y avoir un problème de perte de données. Donc, je cherche à savoir si quelqu’un a utilisé ES et a eu des problèmes avec les données

Merci.

Réponse courte: cela dépend de votre cas d’utilisation, mais vous ne voulez probablement pas l’utiliser comme magasin principal.

Réponse plus longue: Vous devez vraiment comprendre tous les problèmes possibles liés à la résilience et à la perte de données. Elastic a une excellente documentation sur ces problèmes que vous devez vraiment comprendre avant de l’utiliser comme magasin de données principal. En outre, le post d’Aphyr sur le sujet est une bonne ressource.

Si vous comprenez les risques que vous prenez et que vous pensez que ces risques sont acceptables (par exemple, parce que de petites pertes de données ne constituent pas un problème pour votre application), vous pouvez vous sentir libre d’essayer et d’essayer.

Il est généralement recommandé de concevoir des solutions de stockage de données redondantes. Par exemple, il peut s’agir d’une approche rapide et fiable consistant à tout transférer en tant que données plates vers un stockage statique tel que s3, puis à obtenir des données d’extrait et d’indexation ES. Si vous avez besoin de plus de flexibilité en exploitant un ORM, vous pourriez avoir une couche RDS ou Redshift entre les deux. De cette manière, les données peuvent toujours être reconstruites dans ES.

Cela dépend de vos besoins et exigences, de la manière dont vous définissez l’équilibre entre la redondance et la flexibilité / performance. Si de nombreuses données sont impliquées, vous pouvez stocker les données brutes de manière statique et en indexer certaines parties par ES.

Amazon Lambda offre d’excellentes fonctionnalités:

De nombreux développeurs stockent des objects dans Amazon S3 tout en utilisant Amazon DynamoDB pour stocker et indexer les métadonnées de l’object et permettre une recherche rapide. AWS Lambda facilite la synchronisation de tous les éléments en exécutant une fonction de mise à jour automatique de l’index dans Amazon DynamoDB chaque fois que des objects sont ajoutés ou mis à jour à partir d’Amazon S3.