Quelle est la fiabilité D'ElasticSearch en tant que datastore primaire par rapport à des facteurs tels que la perte d'écriture, la disponibilité des données
je travaille sur un projet avec l'exigence de venir avec un tableau de bord générique où un utilisateur peut faire différents types de regroupement, filtrage et forer vers le bas sur différents domaines. Pour cela, nous recherchons un magasin de recherche qui permet des tranches et des dés de données.
il y aurait plusieurs sources de données et elles seraient stockées dans le magasin de recherche. Il peut y avoir un pré-calcul nécessaire sur les données source qui peut être fait par des composants intermédiaires.
j'ai regardé à travers plusieurs blogs pour comprendre si ES peut être utilisé de manière fiable comme un datastore primaire aussi. Cela dépend surtout du cas d'utilisation que nous recherchons. Certaines des informations sur le cas d'utilisation que nous avons:
- environ 300 millions d'enregistrements par an avec 1-2 KB.
- en supposant le stockage des données de 1 an, nous sommes aujourd'hui avec 300 Go mais cas d'utilisation peut aller jusqu'à 400-500 GO compte tenu de la croissance des données.
- à partir de maintenant pas sûr, comment nous allons pousser les données, mais à peu près, il 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 un premier Data store -
- 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 de dire que les ES ont quelques 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é la recherche élastique comme la seule vérité des données sans avoir un stockage primaire comme PostgreSQL, DynamoDB ou RDS? J'ai regardé vers le haut que ES a certains problèmes comme le cerveau divisé et la corruption d'index où il peut y avoir un problème avec la perte de données. Donc, je cherche à savoir si quelqu'un a utilisé ES et ont eu des problèmes avec les données
Merci.
2 réponses
réponse Courte: cela dépend de votre cas d'utilisation, mais vous ne voulez probablement pas à l'utiliser comme banque principale.
réponse plus longue: vous devez vraiment comprendre tous les problèmes possibles qui peuvent surgir autour de la résilience et la perte de données. Elastic a quelque grande documentation de ces questions que vous devriez vraiment comprendre avant de l'utiliser comme un magasin de données primaires. En outre Aphyr's post sur le thème est une bonne ressource.
si vous comprenez les risques que vous prenez et que vous croyez que ces risques sont acceptables (par exemple, parce que la perte de petites données n'est pas un problème pour votre application), alors vous devriez vous sentir libre d'aller de l'avant et de l'essayer.
c'est généralement une bonne idée de concevoir des solutions de stockage de données redondantes. Par exemple, il pourrait s'agir d'une approche rapide et fiable pour tout simplement pousser comme données plates à un stockage statique comme s3 puis avoir es pull et les données d'index à partir de là. Si vous avez besoin de plus de flexibilité en tirant parti d'un ORM, vous pouvez avoir une couche RDS ou Redshift entre les deux. De cette façon, les données peuvent toujours être reconstruites en ES.
cela dépend de vos besoins et exigences comment vous déterminez l'équilibre entre redondance et flexibilité/performance. Si il y a beaucoup de données, vous pouvez stocker les données brutes de manière statique et indexer certaines parties de l'ES.
Amazon Lambda offre de grandes fonctionnalités:
de nombreux développeurs stockent des objets dans Amazon S3 tout en utilisant Amazon DynamoDB pour stocker et indexer les métadonnées de l'objet et permettre la recherche à grande vitesse. AWS Lambda rend facile de garder tout en synchronisation par l'exécution d'un fonction pour mettre à jour automatiquement l'index dans Amazon DynamoDB chaque les objets time sont ajoutés ou mis à jour à partir D'Amazon S3.