Quelles stratégies de Recherche avec Cassandra ?

958 vues

Publié le

Webinar avec Ippon et DataStax sur les stratégies de recherches possibles avec Cassandra

Publié dans : Logiciels
  • Soyez le premier à commenter

Quelles stratégies de Recherche avec Cassandra ?

  1. 1. Quelles stratégies de Recherche avec Cassandra ? Webinar 17 septembre 2015 Jérôme Mainaud – Victor Coustenoble
  2. 2. Agenda 1.Recherche multi-critères avec Cassandra 2.Recherche avec DataStax Enterprise Search
  3. 3. Ippon Technologies © 2015 Présentation Recherche multi-critères avec Cassandra Jérôme Mainaud ➔@jxerome ➔Architecte logiciel chez Ippon Technologies ➔DataStax Solution Architect Certifié
  4. 4. Plan 1.Contexte 2.Modélisation 3.Résultats
  5. 5. Ippon Technologies © 2015 Contexte Application de facturation en mode SAAS ➔Tous les utilisateurs partagent la même base de données ➔Les données sont isolées par utilisateur Application volumineuse ➔un an de stockage ➔500 millions de factures ➔2 milliards de lignes de facturation
  6. 6. Ippon Technologies © 2015 Contexte
  7. 7. Ippon Technologies © 2015 Evolution du back-end
  8. 8. Modélisation
  9. 9. Ippon Technologies © 2015 Modèle conceptuel
  10. 10. Ippon Technologies © 2015 Modèle physique
  11. 11. Ippon Technologies © 2015 Recherche multi-critères Critères obligatoires ➔User (implicite) ➔Date de la facture (plage de dates) Critères supplémentaires ➔Nom du client ➔Prénom du client ➔Ville ➔Code postal
  12. 12. Ippon Technologies © 2015 Utiliser Solr ? ● Intégré dans DataStax Enterprise ● Mise à jour atomique et automatique ● Recherche documentaire
  13. 13. Ippon Technologies © 2015 Utiliser Solr ? ● On cherche sur des colonnes statiques ➔Solr ne les gère pas ● On cherche des partitions ➔Solr retourne des lignes
  14. 14. Ippon Technologies © 2015 Tables d’index Utilisation de tables d’index ➔Clé de partition : Les critères primaire et un critère secondaire ○ user_id ○ date de facturation (tronqué à la date) ○ le critère secondaire ➔Clustering columns : l’identifiant de la facture
  15. 15. Ippon Technologies © 2015 Tables d’index
  16. 16. Ippon Technologies © 2015 Vue dématérialisée CREATE MATERIALIZED VIEW invoice_by_firstname AS SELECT invoice_id FROM invoice WHERE firstname IS NOT NULL PRIMARY KEY ((user_id, invoice_day, firstname), invoice_id) WITH CLUSTERING ORDER BY (invoice_id DESC)
  17. 17. Ippon Technologies © 2015 Recherches sur les index en parallèle Fusion par application en mémoire
  18. 18. Ippon Technologies © 2015 Recherches unitaires en parallèle Une page de résultat (id)
  19. 19. Ippon Technologies © 2015 Recherche Recherche sur une plage de dates ➔boucle sur les jours en s’arrêtant dès qu’on a une page de résultat
  20. 20. Ippon Technologies © 2015 Complexité de la recherche Nombre de requêtes ➔Pour chaque jour dans la plage de dates ○ 1 requête par critère secondaire (partition by query) ➔1 requête par élément trouvé (partition by query) Complexité de la recherche ➔partitions by query Exemple: 3 critères, 7 jours, 100 par page ➔nombre de requêtes ≤ 3 × 7 + 100 = 121
  21. 21. Résultats
  22. 22. Ippon Technologies © 2015 Limitations ● C’est une recherche exacte ➔Pas de recherche plein texte ➔Pas de recherche « commence par » ➔Pas de recherche sur un pattern ● Nécessite des critères obligatoires fortement discriminants ➔user_id & invoice_day ● La pagination ne donne pas le nombre total de pages de résultats ➔Réalisable moyen coût de lecture plus important ● Pas de tri possible
  23. 23. Ippon Technologies © 2015 Matériel ● Hébergement chez Ippon Hosting ● 8 noeuds équivalents ➔16 Go de RAM ➔Deux disques durs SSD de 256 Go en RAID 0 ● 6 noeuds pour le cluster Cassandra ● 2 noeuds pour l’application
  24. 24. Ippon Technologies © 2015 Résultats ● 5000 utilisateurs simultanés ● 9 mois de données ➔Ancien système : 3 mois ➔Objectif : 3 ans ● Résultats en « temps réel » ➔Les données sont immédiatement disponibles ➔Ancien système : 24h de retard ● Réduction importante des coûts
  25. 25. Ippon Technologies © 2015 Présentation DataStax Enterprise Search Victor Coustenoble ➔@vizanalytics ➔Ingénieur Solutions chez DataStax
  26. 26. Plan 1.Qu’est-ce que la Recherche ? 2.DataStax Enterprise Search ? 3.Apache Solr ? 4.Pourquoi avec Cassandra ? 5.Comment ça fonctionne ?
  27. 27. Ippon Technologies © 2015Confidential Qu’est ce que la Recherche ? 27
  28. 28. Ippon Technologies © 2015 DataStax Enterprise Search ? DataStax Enterprise Search = Apache Solr complétement et finement intégré au dessus de Apache Cassandra = Un moteur de recherche d’entreprise sur des données Cassandra à travers le moteur Lucene et une intégration de Apache Solr
  29. 29. Ippon Technologies © 2015Confidential 29 Apache Solr ? • La base de presque tous les moteurs de recherches (comme Elastic search) • Rapide, haute performance et scalable • Indexation et Recherche • Options de recherche avancée comme full text, facet, geospatial, synonymes, proximités … • http://lucene.apache.org • Système de recherche d’entreprise Open Source • Enveloppe au dessus du moteur Lucene • Possibilité de customisation • Indexation et requêtes de recherche via une API HTTP
  30. 30. Ippon Technologies © 2015Confidential Indexation Solr – Efficace et rapide ! 30 Credit: https://developer.apple.com/library/mac/documentation/userexperience/conceptual/SearchKitConcepts/searchKit_basics/searchKit_basics.html Terms
  31. 31. Ippon Technologies © 2015Confidential Solr ne peut pas être tout seul 31
  32. 32. Ippon Technologies © 2015Confidential 32 Haute disponibilité Scalabilité Linaire Requêtes OLTP avec une faible latence C * Apache Cassandra
  33. 33. Ippon Technologies © 2015Confidential 33 + =
  34. 34. Ippon Technologies © 2015 Comment Solr est intégré à cassandra ? ● Même JVM entre Cassandra et Solr sur chaque nœud Cassandra ● Index Lucene stockés et répliqués sur les nœuds du cluster Cassandra
  35. 35. Ippon Technologies © 2015Confidential 35 • Cassandra stocke les données • Solr stocke les indexes pour une recherche rapide • Les données sont indéxés localement sur les noeuds • Vous pouvez oublier que Solr existe  • Vous pouvez faire des requêtes Solr à travers Cassandra  Comment Solr est intégré à cassandra ?
  36. 36. Ippon Technologies © 2015Confidential 36 C * / S o l r Comment Solr est intégré à cassandra ? 1 seul Data Center
  37. 37. Ippon Technologies © 2015Confidential 37 C * C * / S o l r Comment Solr est intégré à cassandra ? 2 Data Center : 1 OLTP + 1 Recherche (sans ETL) Replication automatique
  38. 38. Ippon Technologies © 2015 Par rapport à Solr tout seul • Pas de goulot d’étranglement • Le client peut lire/écrire sur tous les noeuds Solr • Partionnement et réplication des index de recherche pour la montée en charge et la disponibilité • Support Multi-Data Center • Durabilité de la donnée (Solr manque de log, les données peuvent être perdues) Architecture SolrCloud
  39. 39. Ippon Technologies © 2015Confidential Indexation temps réel avec DSE Search 39 Standard Solr Indexing DSE Search Live Indexing
  40. 40. Ippon Technologies © 2015Confidential 40 Terme Cassandra Terme Solr Column Family / Table Core Row Document Column Field SSTable Index Vocabulaire
  41. 41. Ippon Technologies © 2015Confidential Interface d’administration Solr 41
  42. 42. Ippon Technologies © 2015Confidential 42 Requêtage Solr – Indexation et Recherche API HTTP de Solr API CQL de Cassandraou • Select * from demo.users_product where solr_query='{"q":"product_name:livre","facet":{"field":"product_attrib"}}'; • Select title,body from wiki.solr where solr_query='(title:foot* AND body:Arthur*) OR title:sport*'; • select * from amazon.metadata where solr_query='{"q":"title:Maltese~","fq":"categories:book"}';
  43. 43. Ippon Technologies © 2015 // Videos by id CREATE TABLE videos ( videoid uuid, userid uuid, name text, description text, location text, location_type int, preview_image_location text, tags set<text>, added_date timestamp, PRIMARY KEY (videoid) ); Confidential 43 // Index for tag keywords CREATE TABLE videos_by_tag ( tag text, videoid uuid, added_date timestamp, userid uuid, name text, preview_image_location text, tagged_date timestamp, PRIMARY KEY (tag, videoid) ); Solution classique Cassandra • Maintenance manuelle des tables “d’index” ! • Attention aux index secondaires !
  44. 44. Ippon Technologies © 2015Confidential 44 // Videos by id CREATE TABLE videos ( videoid uuid, userid uuid, name text, description text, location text, location_type int, preview_image_location text, tags set<text>, added_date timestamp, PRIMARY KEY (videoid ); Solution Solr
  45. 45. Ippon Technologies © 2015Confidential 45
  46. 46. Ippon Technologies © 2015Confidential 46 1. Démarrer un cluster Cassandra avec la recherche activées en utilisant l’installeur de DSE. $ sudo service dse cassandra -s 2. Création du keyspace et de la table Cassandra en CQL. 3. Execution de dse_tool sur la table videos $ dsetool create_core killrvideo.videos generateResources=true 4. Utilisation de l’interface d’administration de Solr afin de vérifier la création du core Solr. 5. Ecriture d’une requête CQL avec une recherche Solr. select* from videos where solr_query='description:cassandra*'; Mise en place
  47. 47. Ippon Technologies © 2015 DataStax Enterprise • Support • Sécurité • Production ready • Administration • Supervision • Analytique • Recherche • In-Memory
  48. 48. Ippon Technologies © 2015 Plus sur DataStax et Cassandra DataStax: http://www.datastax.com Downloads: http://www.datastax.com/download Documentation: http://www.datastax.com/docs Developer Blog: http://www.datastax.com/dev/blog Academy: https://academy.datastax.com/ Community Site: http://planetcassandra.org
  49. 49. Ippon Technologies © 2015 Merci Questions & Réponses
  50. 50. PARIS BORDEAUX NANTES WASHINGTON NEW-YORK RICHMOND contact@ippon.fr www.ippon.fr - www.ippon-hosting.com - www.ippon-digital.fr @ippontech - 01 46 12 48 48

×