Upload
victor-coustenoble
View
830
Download
0
Embed Size (px)
Citation preview
Quelles stratégies de Recherche avec Cassandra ?
Webinar 17 septembre 2015Jérôme Mainaud – Victor Coustenoble
Agenda
1.Recherche multi-critères avec Cassandra
2.Recherche avec DataStax Enterprise Search
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é
Plan
1.Contexte2.Modélisation3.Résultats
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
Ippon Technologies © 2015
Contexte
Ippon Technologies © 2015
Evolution du back-end
Modélisation
Ippon Technologies © 2015
Modèle conceptuel
Ippon Technologies © 2015
Modèle physique
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
Ippon Technologies © 2015
Utiliser Solr ?
●Intégré dans DataStax Enterprise●Mise à jour atomique et automatique●Recherche documentaire
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
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
Ippon Technologies © 2015
Tables d’index
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)
new in
3.0
Ippon Technologies © 2015
Recherches sur les index en parallèle
Fusion par application
en mémoire
Ippon Technologies © 2015
Recherches unitaires en parallèleUne page de résultat (id)
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
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
Résultats
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
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
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
Ippon Technologies © 2015
Présentation DataStax Enterprise Search
Victor Coustenoble➔ @vizanalytics➔ Ingénieur Solutions chez DataStax
Plan
1.Qu’est-ce que la Recherche ?
2.DataStax Enterprise Search ?
3.Apache Solr ?4.Pourquoi avec
Cassandra ?5.Comment ça fonctionne ?
Ippon Technologies © 2015Confidential
Qu’est ce que la Recherche ?
27
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
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
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
Ippon Technologies © 2015Confidential
Solr ne peut pas être tout seul
31
Ippon Technologies © 2015Confidential 32
Haute disponibilité Scalabilité Linaire Requêtes OLTP avec une faible
latence
C *
Apache Cassandra
Ippon Technologies © 2015Confidential 33
+ =
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
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 ?
Ippon Technologies © 2015Confidential 36
C * / S o l r
Comment Solr est intégré à cassandra ?
1 seul Data Center
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
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
Ippon Technologies © 2015Confidential
Indexation temps réel avec DSE Search
39
Standard Solr Indexing
DSE Search Live Indexing
Ippon Technologies © 2015Confidential 40
Terme Cassandra Terme Solr
Column Family / Table Core
Row Document
Column Field
SSTable Index
Vocabulaire
Ippon Technologies © 2015Confidential
Interface d’administration Solr
41
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"}';
Ippon Technologies © 2015
// Videos by idCREATE 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
Not a great idea
Possible Index
// Index for tag keywordsCREATE 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 !
Ippon Technologies © 2015Confidential 44
// Videos by idCREATE 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);
And th
is?This?
This?
Solution Solr
Ippon Technologies © 2015Confidential 45
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 -s2. 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=true4. 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
Ippon Technologies © 2015
DataStax Enterprise
• Support• Sécurité• Production ready• Administration• Supervision• Analytique• Recherche• In-Memory
Ippon Technologies © 2015
Plus sur DataStax et Cassandra
DataStax: http://www.datastax.comDownloads: http://www.datastax.com/downloadDocumentation: http://www.datastax.com/docs Developer Blog: http://www.datastax.com/dev/blogAcademy: https://academy.datastax.com/Community Site: http://planetcassandra.org
Ippon Technologies © 2015
Merci
Questions & Réponses
PARISBORDEAUX
NANTESWASHINGTON
NEW-YORKRICHMOND
[email protected] - www.ippon-hosting.com - www.ippon-digital.fr
@ippontech-
01 46 12 48 48