SlideShare une entreprise Scribd logo
1  sur  50
Quelles stratégies de Recherche avec
Cassandra ?
Webinar 17 septembre 2015
Jé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.Contexte
2.Modélisation
3.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)
Ippon Technologies © 2015
Recherches sur les index en parallèle
Fusion par application
en mémoire
Ippon Technologies © 2015
Recherches unitaires en parallèle
Une 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 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 !
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
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 -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
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.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
Ippon Technologies © 2015
Merci
Questions &
Réponses
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

Contenu connexe

Tendances

Apache Kafka, Un système distribué de messagerie hautement performant
Apache Kafka, Un système distribué de messagerie hautement performantApache Kafka, Un système distribué de messagerie hautement performant
Apache Kafka, Un système distribué de messagerie hautement performantALTIC Altic
 
Realtime Web avec Akka, Kafka, Spark et Mesos - Devoxx Paris 2014
Realtime Web avec Akka, Kafka, Spark et Mesos - Devoxx Paris 2014Realtime Web avec Akka, Kafka, Spark et Mesos - Devoxx Paris 2014
Realtime Web avec Akka, Kafka, Spark et Mesos - Devoxx Paris 2014Ippon
 
DataStax et Apache Cassandra pour la gestion des flux IoT
DataStax et Apache Cassandra pour la gestion des flux IoTDataStax et Apache Cassandra pour la gestion des flux IoT
DataStax et Apache Cassandra pour la gestion des flux IoTVictor Coustenoble
 
Cartographie du big data
Cartographie du big dataCartographie du big data
Cartographie du big dataacogoluegnes
 
Architecture Big Data open source S.M.A.C.K
Architecture Big Data open source S.M.A.C.KArchitecture Big Data open source S.M.A.C.K
Architecture Big Data open source S.M.A.C.KJulien Anguenot
 
Azure Camp 9 Décembre - slides session développeurs webmedia
Azure Camp 9 Décembre - slides session développeurs webmediaAzure Camp 9 Décembre - slides session développeurs webmedia
Azure Camp 9 Décembre - slides session développeurs webmediaMicrosoft
 
[USI] Lambda-Architecture : comment réconcilier BigData et temps-réel
[USI] Lambda-Architecture : comment réconcilier BigData et temps-réel[USI] Lambda-Architecture : comment réconcilier BigData et temps-réel
[USI] Lambda-Architecture : comment réconcilier BigData et temps-réelMathieu DESPRIEE
 
Big Data: Hadoop Map / Reduce sur Windows et Windows Azure
Big Data: Hadoop Map / Reduce sur Windows et Windows AzureBig Data: Hadoop Map / Reduce sur Windows et Windows Azure
Big Data: Hadoop Map / Reduce sur Windows et Windows AzureMicrosoft
 
Azure Camp 9 Décembre 2014 - slides Keynote
Azure Camp 9 Décembre 2014 - slides KeynoteAzure Camp 9 Décembre 2014 - slides Keynote
Azure Camp 9 Décembre 2014 - slides KeynoteMicrosoft
 
Sahara : Hadoop as Service avec OpenStack
Sahara : Hadoop as Service avec OpenStackSahara : Hadoop as Service avec OpenStack
Sahara : Hadoop as Service avec OpenStackALTIC Altic
 
Azure Camp 9 Décembre 2014 - slides session développeurs IOT Big Data
Azure Camp 9 Décembre 2014 - slides session développeurs IOT Big DataAzure Camp 9 Décembre 2014 - slides session développeurs IOT Big Data
Azure Camp 9 Décembre 2014 - slides session développeurs IOT Big DataMicrosoft
 
Webinar - Enterprise Cloud Databases
Webinar - Enterprise Cloud DatabasesWebinar - Enterprise Cloud Databases
Webinar - Enterprise Cloud DatabasesOVHcloud
 
Paris stormusergroup intrudocution
Paris stormusergroup intrudocutionParis stormusergroup intrudocution
Paris stormusergroup intrudocutionParis_Storm_UG
 
Bases de données NoSQL
Bases de données NoSQLBases de données NoSQL
Bases de données NoSQLSamy Dindane
 

Tendances (20)

Apache Kafka, Un système distribué de messagerie hautement performant
Apache Kafka, Un système distribué de messagerie hautement performantApache Kafka, Un système distribué de messagerie hautement performant
Apache Kafka, Un système distribué de messagerie hautement performant
 
Realtime Web avec Akka, Kafka, Spark et Mesos - Devoxx Paris 2014
Realtime Web avec Akka, Kafka, Spark et Mesos - Devoxx Paris 2014Realtime Web avec Akka, Kafka, Spark et Mesos - Devoxx Paris 2014
Realtime Web avec Akka, Kafka, Spark et Mesos - Devoxx Paris 2014
 
Introduction à Cassandra
Introduction à CassandraIntroduction à Cassandra
Introduction à Cassandra
 
DataStax et Apache Cassandra pour la gestion des flux IoT
DataStax et Apache Cassandra pour la gestion des flux IoTDataStax et Apache Cassandra pour la gestion des flux IoT
DataStax et Apache Cassandra pour la gestion des flux IoT
 
Cartographie du big data
Cartographie du big dataCartographie du big data
Cartographie du big data
 
Architecture Big Data open source S.M.A.C.K
Architecture Big Data open source S.M.A.C.KArchitecture Big Data open source S.M.A.C.K
Architecture Big Data open source S.M.A.C.K
 
NoSQL et Big Data
NoSQL et Big DataNoSQL et Big Data
NoSQL et Big Data
 
DataStax Enterprise BBL
DataStax Enterprise BBLDataStax Enterprise BBL
DataStax Enterprise BBL
 
Azure Camp 9 Décembre - slides session développeurs webmedia
Azure Camp 9 Décembre - slides session développeurs webmediaAzure Camp 9 Décembre - slides session développeurs webmedia
Azure Camp 9 Décembre - slides session développeurs webmedia
 
[USI] Lambda-Architecture : comment réconcilier BigData et temps-réel
[USI] Lambda-Architecture : comment réconcilier BigData et temps-réel[USI] Lambda-Architecture : comment réconcilier BigData et temps-réel
[USI] Lambda-Architecture : comment réconcilier BigData et temps-réel
 
Big Data: Hadoop Map / Reduce sur Windows et Windows Azure
Big Data: Hadoop Map / Reduce sur Windows et Windows AzureBig Data: Hadoop Map / Reduce sur Windows et Windows Azure
Big Data: Hadoop Map / Reduce sur Windows et Windows Azure
 
Azure Camp 9 Décembre 2014 - slides Keynote
Azure Camp 9 Décembre 2014 - slides KeynoteAzure Camp 9 Décembre 2014 - slides Keynote
Azure Camp 9 Décembre 2014 - slides Keynote
 
Sahara : Hadoop as Service avec OpenStack
Sahara : Hadoop as Service avec OpenStackSahara : Hadoop as Service avec OpenStack
Sahara : Hadoop as Service avec OpenStack
 
Azure Camp 9 Décembre 2014 - slides session développeurs IOT Big Data
Azure Camp 9 Décembre 2014 - slides session développeurs IOT Big DataAzure Camp 9 Décembre 2014 - slides session développeurs IOT Big Data
Azure Camp 9 Décembre 2014 - slides session développeurs IOT Big Data
 
Hadoop
HadoopHadoop
Hadoop
 
Webinar - Enterprise Cloud Databases
Webinar - Enterprise Cloud DatabasesWebinar - Enterprise Cloud Databases
Webinar - Enterprise Cloud Databases
 
Paris stormusergroup intrudocution
Paris stormusergroup intrudocutionParis stormusergroup intrudocution
Paris stormusergroup intrudocution
 
DataStax Enterprise - Cas d'usage
DataStax Enterprise - Cas d'usageDataStax Enterprise - Cas d'usage
DataStax Enterprise - Cas d'usage
 
Bases de données NoSQL
Bases de données NoSQLBases de données NoSQL
Bases de données NoSQL
 
noSQL
noSQLnoSQL
noSQL
 

En vedette

Spark, ou comment traiter des données à la vitesse de l'éclair
Spark, ou comment traiter des données à la vitesse de l'éclairSpark, ou comment traiter des données à la vitesse de l'éclair
Spark, ou comment traiter des données à la vitesse de l'éclairAlexis Seigneurin
 
HTML5, Spring, NoSQL et mobilité
HTML5, Spring, NoSQL et mobilitéHTML5, Spring, NoSQL et mobilité
HTML5, Spring, NoSQL et mobilitéJulien Dubois
 
Requêtes multi-critères avec Cassandra
Requêtes multi-critères avec CassandraRequêtes multi-critères avec Cassandra
Requêtes multi-critères avec CassandraJulien Dubois
 
Cassandra pour les développeurs java
Cassandra pour les développeurs javaCassandra pour les développeurs java
Cassandra pour les développeurs javaJérémy Sevellec
 
201301 - Focus Neo4j
201301 - Focus Neo4j201301 - Focus Neo4j
201301 - Focus Neo4jlyonjug
 
C* Summit 2013: Data Modelers Still Have Jobs - Adjusting For the NoSQL Envir...
C* Summit 2013: Data Modelers Still Have Jobs - Adjusting For the NoSQL Envir...C* Summit 2013: Data Modelers Still Have Jobs - Adjusting For the NoSQL Envir...
C* Summit 2013: Data Modelers Still Have Jobs - Adjusting For the NoSQL Envir...DataStax Academy
 
Cassandra Day Denver 2014: A Cassandra Data Model for Serving up Cat Videos
Cassandra Day Denver 2014: A Cassandra Data Model for Serving up Cat VideosCassandra Day Denver 2014: A Cassandra Data Model for Serving up Cat Videos
Cassandra Day Denver 2014: A Cassandra Data Model for Serving up Cat VideosDataStax Academy
 
A Shortcut to Awesome: Cassandra Data Modeling By Example (Jon Haddad, The La...
A Shortcut to Awesome: Cassandra Data Modeling By Example (Jon Haddad, The La...A Shortcut to Awesome: Cassandra Data Modeling By Example (Jon Haddad, The La...
A Shortcut to Awesome: Cassandra Data Modeling By Example (Jon Haddad, The La...DataStax
 
Cassandra Summit 2014: Fuzzy Entity Matching at Scale
Cassandra Summit 2014: Fuzzy Entity Matching at ScaleCassandra Summit 2014: Fuzzy Entity Matching at Scale
Cassandra Summit 2014: Fuzzy Entity Matching at ScaleDataStax Academy
 
Moteurs de recommendation avec Neo4j et GraphAwareReco
Moteurs de recommendation avec Neo4j et GraphAwareRecoMoteurs de recommendation avec Neo4j et GraphAwareReco
Moteurs de recommendation avec Neo4j et GraphAwareRecoChristophe Willemsen
 
Ippevent - Regarde les instances tomber - 20 mai 2014
Ippevent - Regarde les instances tomber - 20 mai 2014Ippevent - Regarde les instances tomber - 20 mai 2014
Ippevent - Regarde les instances tomber - 20 mai 2014vberetti
 
2010 presentation ippon_corp
2010 presentation ippon_corp2010 presentation ippon_corp
2010 presentation ippon_corpGeoffray Gruel
 
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et mobilité
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et mobilitéNouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et mobilité
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et mobilitéJulien Dubois
 
Malakocktail 72 (été 2013)
Malakocktail 72 (été 2013)Malakocktail 72 (été 2013)
Malakocktail 72 (été 2013)Malakocktail
 
Microservices IRL - Devoxx-fr 2016
Microservices IRL - Devoxx-fr 2016Microservices IRL - Devoxx-fr 2016
Microservices IRL - Devoxx-fr 2016Stephan Lagraulet
 
Accessibilité & e-recrutement
Accessibilité & e-recrutementAccessibilité & e-recrutement
Accessibilité & e-recrutementSébastien Delorme
 

En vedette (20)

Cassandra 2.2 & 3.0
Cassandra 2.2 & 3.0Cassandra 2.2 & 3.0
Cassandra 2.2 & 3.0
 
Spark, ou comment traiter des données à la vitesse de l'éclair
Spark, ou comment traiter des données à la vitesse de l'éclairSpark, ou comment traiter des données à la vitesse de l'éclair
Spark, ou comment traiter des données à la vitesse de l'éclair
 
HTML5, Spring, NoSQL et mobilité
HTML5, Spring, NoSQL et mobilitéHTML5, Spring, NoSQL et mobilité
HTML5, Spring, NoSQL et mobilité
 
Requêtes multi-critères avec Cassandra
Requêtes multi-critères avec CassandraRequêtes multi-critères avec Cassandra
Requêtes multi-critères avec Cassandra
 
Cassandra pour les développeurs java
Cassandra pour les développeurs javaCassandra pour les développeurs java
Cassandra pour les développeurs java
 
201301 - Focus Neo4j
201301 - Focus Neo4j201301 - Focus Neo4j
201301 - Focus Neo4j
 
C* Summit 2013: Data Modelers Still Have Jobs - Adjusting For the NoSQL Envir...
C* Summit 2013: Data Modelers Still Have Jobs - Adjusting For the NoSQL Envir...C* Summit 2013: Data Modelers Still Have Jobs - Adjusting For the NoSQL Envir...
C* Summit 2013: Data Modelers Still Have Jobs - Adjusting For the NoSQL Envir...
 
Cassandra Day Denver 2014: A Cassandra Data Model for Serving up Cat Videos
Cassandra Day Denver 2014: A Cassandra Data Model for Serving up Cat VideosCassandra Day Denver 2014: A Cassandra Data Model for Serving up Cat Videos
Cassandra Day Denver 2014: A Cassandra Data Model for Serving up Cat Videos
 
A Shortcut to Awesome: Cassandra Data Modeling By Example (Jon Haddad, The La...
A Shortcut to Awesome: Cassandra Data Modeling By Example (Jon Haddad, The La...A Shortcut to Awesome: Cassandra Data Modeling By Example (Jon Haddad, The La...
A Shortcut to Awesome: Cassandra Data Modeling By Example (Jon Haddad, The La...
 
Cassandra Summit 2014: Fuzzy Entity Matching at Scale
Cassandra Summit 2014: Fuzzy Entity Matching at ScaleCassandra Summit 2014: Fuzzy Entity Matching at Scale
Cassandra Summit 2014: Fuzzy Entity Matching at Scale
 
Moteurs de recommendation avec Neo4j et GraphAwareReco
Moteurs de recommendation avec Neo4j et GraphAwareRecoMoteurs de recommendation avec Neo4j et GraphAwareReco
Moteurs de recommendation avec Neo4j et GraphAwareReco
 
Ippevent - Regarde les instances tomber - 20 mai 2014
Ippevent - Regarde les instances tomber - 20 mai 2014Ippevent - Regarde les instances tomber - 20 mai 2014
Ippevent - Regarde les instances tomber - 20 mai 2014
 
Pierre et Alexandre
Pierre et AlexandrePierre et Alexandre
Pierre et Alexandre
 
2010 presentation ippon_corp
2010 presentation ippon_corp2010 presentation ippon_corp
2010 presentation ippon_corp
 
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et mobilité
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et mobilitéNouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et mobilité
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et mobilité
 
Malakocktail 72 (été 2013)
Malakocktail 72 (été 2013)Malakocktail 72 (été 2013)
Malakocktail 72 (été 2013)
 
Microservices IRL - Devoxx-fr 2016
Microservices IRL - Devoxx-fr 2016Microservices IRL - Devoxx-fr 2016
Microservices IRL - Devoxx-fr 2016
 
Accessibilité & e-recrutement
Accessibilité & e-recrutementAccessibilité & e-recrutement
Accessibilité & e-recrutement
 
Cassandra 3.0
Cassandra 3.0Cassandra 3.0
Cassandra 3.0
 
Introduction spark
Introduction sparkIntroduction spark
Introduction spark
 

Similaire à Quelles stratégies de Recherche avec Cassandra ?

SplunkLive! Paris 2018: Getting Data In
SplunkLive! Paris 2018: Getting Data InSplunkLive! Paris 2018: Getting Data In
SplunkLive! Paris 2018: Getting Data InSplunk
 
Université de la performance - Devoxx France
Université de la performance - Devoxx FranceUniversité de la performance - Devoxx France
Université de la performance - Devoxx FranceMarc Bojoly
 
Université de la performance
Université de la performanceUniversité de la performance
Université de la performancepkernevez
 
Session en ligne: Découverte du Logical Data Fabric & Data Virtualization
Session en ligne: Découverte du Logical Data Fabric & Data VirtualizationSession en ligne: Découverte du Logical Data Fabric & Data Virtualization
Session en ligne: Découverte du Logical Data Fabric & Data VirtualizationDenodo
 
Introduction au #MicrosoftGraph demarrez vite et livrez rapidemment #MWCP18
Introduction au #MicrosoftGraph demarrez vite et livrez rapidemment #MWCP18Introduction au #MicrosoftGraph demarrez vite et livrez rapidemment #MWCP18
Introduction au #MicrosoftGraph demarrez vite et livrez rapidemment #MWCP18Vincent Biret
 
2018-10-17 J1 7D - Introduction au Microsoft Graph démarrez vite et livrez ra...
2018-10-17 J1 7D - Introduction au Microsoft Graph démarrez vite et livrez ra...2018-10-17 J1 7D - Introduction au Microsoft Graph démarrez vite et livrez ra...
2018-10-17 J1 7D - Introduction au Microsoft Graph démarrez vite et livrez ra...Modern Workplace Conference Paris
 
Oxalide MorningTech #1 - BigData
Oxalide MorningTech #1 - BigDataOxalide MorningTech #1 - BigData
Oxalide MorningTech #1 - BigDataLudovic Piot
 
La voie du succès avec les bases de données de graphes, la Graph Data Scie...
 La voie du succès avec les bases de données de graphes, la Graph Data Scie... La voie du succès avec les bases de données de graphes, la Graph Data Scie...
La voie du succès avec les bases de données de graphes, la Graph Data Scie...Neo4j
 
2014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp01
2014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp012014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp01
2014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp01MongoDB
 
AWS Summit Paris - Track 4 - Session 2 - Migration Cloud, modernisation des a...
AWS Summit Paris - Track 4 - Session 2 - Migration Cloud, modernisation des a...AWS Summit Paris - Track 4 - Session 2 - Migration Cloud, modernisation des a...
AWS Summit Paris - Track 4 - Session 2 - Migration Cloud, modernisation des a...Amazon Web Services
 
Denodo 2022 : le meilleur time-to-Data du marché
Denodo 2022 : le meilleur time-to-Data du marchéDenodo 2022 : le meilleur time-to-Data du marché
Denodo 2022 : le meilleur time-to-Data du marchéDenodo
 
Ippon: Doing multi-criteria queries on a Cassandra application (Français)
Ippon: Doing multi-criteria queries on a Cassandra application (Français)Ippon: Doing multi-criteria queries on a Cassandra application (Français)
Ippon: Doing multi-criteria queries on a Cassandra application (Français)DataStax Academy
 
Morning tech #2 - Démarche performance slides
Morning tech #2 - Démarche performance slidesMorning tech #2 - Démarche performance slides
Morning tech #2 - Démarche performance slidesOxalide
 
Oxalide Morning tech #2 - démarche performance
Oxalide Morning tech #2 - démarche performanceOxalide Morning tech #2 - démarche performance
Oxalide Morning tech #2 - démarche performanceLudovic Piot
 
Cours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdfCours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdfboulonvert
 
Devcon Ile Maurice présentation Use Cases Elasticsearch par Spoon Consulting
Devcon Ile Maurice présentation Use Cases Elasticsearch par Spoon ConsultingDevcon Ile Maurice présentation Use Cases Elasticsearch par Spoon Consulting
Devcon Ile Maurice présentation Use Cases Elasticsearch par Spoon ConsultingJeremy Gachet
 
Global Office Bootcamp Montreal 2018 Introduction au Microsoft Graph
Global Office Bootcamp Montreal 2018 Introduction au Microsoft GraphGlobal Office Bootcamp Montreal 2018 Introduction au Microsoft Graph
Global Office Bootcamp Montreal 2018 Introduction au Microsoft GraphVincent Biret
 
ORACLE - La vue 360 de vos clients dans le cloud - Data forum MICROPOLE 2016
ORACLE - La vue 360  de vos clients dans le cloud -  Data forum MICROPOLE 2016 ORACLE - La vue 360  de vos clients dans le cloud -  Data forum MICROPOLE 2016
ORACLE - La vue 360 de vos clients dans le cloud - Data forum MICROPOLE 2016 Micropole Group
 

Similaire à Quelles stratégies de Recherche avec Cassandra ? (20)

Perf university
Perf universityPerf university
Perf university
 
SplunkLive! Paris 2018: Getting Data In
SplunkLive! Paris 2018: Getting Data InSplunkLive! Paris 2018: Getting Data In
SplunkLive! Paris 2018: Getting Data In
 
Université de la performance - Devoxx France
Université de la performance - Devoxx FranceUniversité de la performance - Devoxx France
Université de la performance - Devoxx France
 
Université de la performance
Université de la performanceUniversité de la performance
Université de la performance
 
Session en ligne: Découverte du Logical Data Fabric & Data Virtualization
Session en ligne: Découverte du Logical Data Fabric & Data VirtualizationSession en ligne: Découverte du Logical Data Fabric & Data Virtualization
Session en ligne: Découverte du Logical Data Fabric & Data Virtualization
 
Introduction au #MicrosoftGraph demarrez vite et livrez rapidemment #MWCP18
Introduction au #MicrosoftGraph demarrez vite et livrez rapidemment #MWCP18Introduction au #MicrosoftGraph demarrez vite et livrez rapidemment #MWCP18
Introduction au #MicrosoftGraph demarrez vite et livrez rapidemment #MWCP18
 
2018-10-17 J1 7D - Introduction au Microsoft Graph démarrez vite et livrez ra...
2018-10-17 J1 7D - Introduction au Microsoft Graph démarrez vite et livrez ra...2018-10-17 J1 7D - Introduction au Microsoft Graph démarrez vite et livrez ra...
2018-10-17 J1 7D - Introduction au Microsoft Graph démarrez vite et livrez ra...
 
Oxalide MorningTech #1 - BigData
Oxalide MorningTech #1 - BigDataOxalide MorningTech #1 - BigData
Oxalide MorningTech #1 - BigData
 
La voie du succès avec les bases de données de graphes, la Graph Data Scie...
 La voie du succès avec les bases de données de graphes, la Graph Data Scie... La voie du succès avec les bases de données de graphes, la Graph Data Scie...
La voie du succès avec les bases de données de graphes, la Graph Data Scie...
 
2014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp01
2014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp012014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp01
2014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp01
 
AWS Summit Paris - Track 4 - Session 2 - Migration Cloud, modernisation des a...
AWS Summit Paris - Track 4 - Session 2 - Migration Cloud, modernisation des a...AWS Summit Paris - Track 4 - Session 2 - Migration Cloud, modernisation des a...
AWS Summit Paris - Track 4 - Session 2 - Migration Cloud, modernisation des a...
 
Denodo 2022 : le meilleur time-to-Data du marché
Denodo 2022 : le meilleur time-to-Data du marchéDenodo 2022 : le meilleur time-to-Data du marché
Denodo 2022 : le meilleur time-to-Data du marché
 
Cerberus Testing
Cerberus TestingCerberus Testing
Cerberus Testing
 
Ippon: Doing multi-criteria queries on a Cassandra application (Français)
Ippon: Doing multi-criteria queries on a Cassandra application (Français)Ippon: Doing multi-criteria queries on a Cassandra application (Français)
Ippon: Doing multi-criteria queries on a Cassandra application (Français)
 
Morning tech #2 - Démarche performance slides
Morning tech #2 - Démarche performance slidesMorning tech #2 - Démarche performance slides
Morning tech #2 - Démarche performance slides
 
Oxalide Morning tech #2 - démarche performance
Oxalide Morning tech #2 - démarche performanceOxalide Morning tech #2 - démarche performance
Oxalide Morning tech #2 - démarche performance
 
Cours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdfCours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdf
 
Devcon Ile Maurice présentation Use Cases Elasticsearch par Spoon Consulting
Devcon Ile Maurice présentation Use Cases Elasticsearch par Spoon ConsultingDevcon Ile Maurice présentation Use Cases Elasticsearch par Spoon Consulting
Devcon Ile Maurice présentation Use Cases Elasticsearch par Spoon Consulting
 
Global Office Bootcamp Montreal 2018 Introduction au Microsoft Graph
Global Office Bootcamp Montreal 2018 Introduction au Microsoft GraphGlobal Office Bootcamp Montreal 2018 Introduction au Microsoft Graph
Global Office Bootcamp Montreal 2018 Introduction au Microsoft Graph
 
ORACLE - La vue 360 de vos clients dans le cloud - Data forum MICROPOLE 2016
ORACLE - La vue 360  de vos clients dans le cloud -  Data forum MICROPOLE 2016 ORACLE - La vue 360  de vos clients dans le cloud -  Data forum MICROPOLE 2016
ORACLE - La vue 360 de vos clients dans le cloud - Data forum MICROPOLE 2016
 

Plus de Victor Coustenoble

Préparation de Données pour la Détection de Fraude
Préparation de Données pour la Détection de FraudePréparation de Données pour la Détection de Fraude
Préparation de Données pour la Détection de FraudeVictor Coustenoble
 
Préparation de Données dans le Cloud
Préparation de Données dans le CloudPréparation de Données dans le Cloud
Préparation de Données dans le CloudVictor Coustenoble
 
Préparation de Données Hadoop avec Trifacta
Préparation de Données Hadoop avec TrifactaPréparation de Données Hadoop avec Trifacta
Préparation de Données Hadoop avec TrifactaVictor Coustenoble
 
Webinaire Business&Decision - Trifacta
Webinaire  Business&Decision - TrifactaWebinaire  Business&Decision - Trifacta
Webinaire Business&Decision - TrifactaVictor Coustenoble
 
BI, Reporting and Analytics on Apache Cassandra
BI, Reporting and Analytics on Apache CassandraBI, Reporting and Analytics on Apache Cassandra
BI, Reporting and Analytics on Apache CassandraVictor Coustenoble
 
DataStax - Analytics on Apache Cassandra - Paris Tech Talks meetup
DataStax - Analytics on Apache Cassandra - Paris Tech Talks meetupDataStax - Analytics on Apache Cassandra - Paris Tech Talks meetup
DataStax - Analytics on Apache Cassandra - Paris Tech Talks meetupVictor Coustenoble
 
Spark + Cassandra = Real Time Analytics on Operational Data
Spark + Cassandra = Real Time Analytics on Operational DataSpark + Cassandra = Real Time Analytics on Operational Data
Spark + Cassandra = Real Time Analytics on Operational DataVictor Coustenoble
 
Lightning fast analytics with Cassandra and Spark
Lightning fast analytics with Cassandra and SparkLightning fast analytics with Cassandra and Spark
Lightning fast analytics with Cassandra and SparkVictor Coustenoble
 

Plus de Victor Coustenoble (8)

Préparation de Données pour la Détection de Fraude
Préparation de Données pour la Détection de FraudePréparation de Données pour la Détection de Fraude
Préparation de Données pour la Détection de Fraude
 
Préparation de Données dans le Cloud
Préparation de Données dans le CloudPréparation de Données dans le Cloud
Préparation de Données dans le Cloud
 
Préparation de Données Hadoop avec Trifacta
Préparation de Données Hadoop avec TrifactaPréparation de Données Hadoop avec Trifacta
Préparation de Données Hadoop avec Trifacta
 
Webinaire Business&Decision - Trifacta
Webinaire  Business&Decision - TrifactaWebinaire  Business&Decision - Trifacta
Webinaire Business&Decision - Trifacta
 
BI, Reporting and Analytics on Apache Cassandra
BI, Reporting and Analytics on Apache CassandraBI, Reporting and Analytics on Apache Cassandra
BI, Reporting and Analytics on Apache Cassandra
 
DataStax - Analytics on Apache Cassandra - Paris Tech Talks meetup
DataStax - Analytics on Apache Cassandra - Paris Tech Talks meetupDataStax - Analytics on Apache Cassandra - Paris Tech Talks meetup
DataStax - Analytics on Apache Cassandra - Paris Tech Talks meetup
 
Spark + Cassandra = Real Time Analytics on Operational Data
Spark + Cassandra = Real Time Analytics on Operational DataSpark + Cassandra = Real Time Analytics on Operational Data
Spark + Cassandra = Real Time Analytics on Operational Data
 
Lightning fast analytics with Cassandra and Spark
Lightning fast analytics with Cassandra and SparkLightning fast analytics with Cassandra and Spark
Lightning fast analytics with Cassandra and Spark
 

Quelles stratégies de Recherche avec Cassandra ?

  • 1. Quelles stratégies de Recherche avec Cassandra ? Webinar 17 septembre 2015 Jérôme Mainaud – Victor Coustenoble
  • 2. Agenda 1.Recherche multi-critères avec Cassandra 2.Recherche avec DataStax Enterprise Search
  • 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é
  • 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. Ippon Technologies © 2015 Contexte
  • 7. Ippon Technologies © 2015 Evolution du back-end
  • 9. Ippon Technologies © 2015 Modèle conceptuel
  • 10. Ippon Technologies © 2015 Modèle physique
  • 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. Ippon Technologies © 2015 Utiliser Solr ? ● Intégré dans DataStax Enterprise ● Mise à jour atomique et automatique ● Recherche documentaire
  • 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. 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. Ippon Technologies © 2015 Tables d’index
  • 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. Ippon Technologies © 2015 Recherches sur les index en parallèle Fusion par application en mémoire
  • 18. Ippon Technologies © 2015 Recherches unitaires en parallèle Une page de résultat (id)
  • 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. 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
  • 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. 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. 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. Ippon Technologies © 2015 Présentation DataStax Enterprise Search Victor Coustenoble ➔@vizanalytics ➔Ingénieur Solutions chez DataStax
  • 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. Ippon Technologies © 2015Confidential Qu’est ce que la Recherche ? 27
  • 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. 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. 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. Ippon Technologies © 2015Confidential Solr ne peut pas être tout seul 31
  • 32. Ippon Technologies © 2015Confidential 32 Haute disponibilité Scalabilité Linaire Requêtes OLTP avec une faible latence C * Apache Cassandra
  • 33. Ippon Technologies © 2015Confidential 33 + =
  • 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. 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. Ippon Technologies © 2015Confidential 36 C * / S o l r Comment Solr est intégré à cassandra ? 1 seul Data Center
  • 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. 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. Ippon Technologies © 2015Confidential Indexation temps réel avec DSE Search 39 Standard Solr Indexing DSE Search Live Indexing
  • 40. Ippon Technologies © 2015Confidential 40 Terme Cassandra Terme Solr Column Family / Table Core Row Document Column Field SSTable Index Vocabulaire
  • 41. Ippon Technologies © 2015Confidential Interface d’administration Solr 41
  • 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. 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. 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. Ippon Technologies © 2015Confidential 45
  • 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. Ippon Technologies © 2015 DataStax Enterprise • Support • Sécurité • Production ready • Administration • Supervision • Analytique • Recherche • In-Memory
  • 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. Ippon Technologies © 2015 Merci Questions & Réponses

Notes de l'éditeur

  1. Search is eveywhere. Tell story about kids with search and recommendations. Properly written queries, on the other hand, are completely precise. A query will give you exactly the result you ask for. Exactly what you asked for, which may or not be exactly what you want. The hardest part of a query is asking the right question. Search, on the other hand, is not precise. A dumb search just gives you a randomly ordered list of items in which your search term occurs. A smart search will provide you a ranked list of items that are strongly related to the search terms you entered, even if they do not match the exactly. This means that even though some of the results will doubtless be unrelated, and sometimes absurd, there is a very good chance that there is data you can use pretty high up in those results, even if you didn’t ask quite the right question. And there may well be relevant data you didn’t even think to ask for. Being smart in this way is a key benefit of search. Queries cannot be smart. Queries must always give you exactly what you asked for. There can be no tolerance for serendipity in query results. Search can be smart, but query must be dumb and strictly obedient. “Find me all webpages that contain “Cassandra” and “Optimization”” “Recommend artists who are “like” “Taylor Swift”” “Highlight the keywords “Awesome,” “Good,” and “Amazing.”” Find me all shoes with: Size: 12 Price: $15 - $60 Brand: Nike
  2. Lucene is the base to nearly every popular search engine out there, including elastic search (which is more a of fried taco shell) Fast, high performance, scalable search/IR library Open source Initially developed by Doug Cutting (Also author of Hadoop) Indexing and Searching Inverted Index of documents Provides advanced Search options like synonyms, stopwords, based on similarity, proximity. http://lucene.apache.org/ Created by Yonik Seeley for CNET Enterprise Search platform for Apache Lucene Open source Highly reliable, scalable, fault tolerant Support distributed Indexing (SolrCloud), Replication, and load balanced querying http://lucene.apache.org/solr To search! (duh) Note: Not the same as querying. Querying implies you are searching with a specific value in mind. Search is fuzzier, about finding likeness. Full text search and highlighting Faceted search (search by price, size, manufacturer, etc.) Geospatial search (combining location information, filtering by distance, and more) Solr is an open source enterprise search system Solr “wraps” the Lucene open source information retrieval engine You customize Solr via configuration & plug-ins Free-form text search includes wildcards and phrases Query support includes filtering (ranges, geo-spatial) and sorting You can run Solr as a webapp, or in stand-alone (embedded) mode You make search requests using HTTP GET requests Documents are added and deleted via HTTP POST requests Document updates work the same way (internally as delete+add) ----- Meeting Notes (6/5/15 14:33) ----- Lucene is assembly to Solr's Java
  3. These are extremely efficient and fast structures that live on disk. Simple queries are typically fulfilled in < 1ms. More complex ones, < 10ms
  4. no built in datastore, it is a just a jar file that runs in a servlet container like Jetty and Tomcat Give me some documents and let me index them for you! But how does that solve your scaling problem? Your uptime problem? It doesn’t. data is stored completely on disk No built in way to shard or distribute Even with SolrCloud or ElasticSearch, you will need to move your data around SolrCloud = zookeeper makes Solr clusterable. Just like mysql sharding… not transparent
  5. SolrCloud = zookeeper makes Solr clusterable. Just like mysql sharding… not transparent
  6. Cassandra is storing your data, solr is storing the indexes for fast search. Again, no ETLs and your data model doesn’t change. Data is indexed locally. You could completely forgot that solr exists. You could just write your queries through Cassandra.
  7. You get a lot of the benefits from using Solr on top of C* - No ETL! Just load the data in cassandra and it’s automatically replicated to Solr! Data is automatically replicated from the Cassandra DC to the Solr DC No single point of failure No ETL
  8. You get a lot of the benefits from using Solr on top of C* - No ETL! Just load the data in cassandra and it’s automatically replicated to Solr! Data is automatically replicated from the Cassandra DC to the Solr DC No single point of failure No ETL
  9. Real time indexing!! Push down predicates Locality awareness with the sharding Netty vs HTTP communication Using docvalues all the time lockless agortithms on accessing ram buffer to provide linear scalability, each thread can search a different portion of a segment, so you can have larger ram buffers All this plus some other enhancements means indexing twice as fast as OSS lucene
  10. Solr is an enterprise search solution meaning you have access to many API’s, there’s an administrative UI, support for importing data from different sources, and customizations (Solr is a bunch of JARS!) It was built on top of the Lucene information retrieval engine and was developed by Cnet as a product search engine.
  11. Solr is an enterprise search solution meaning you have access to many API’s, there’s an administrative UI, support for importing data from different sources, and customizations (Solr is a bunch of JARS!) It was built on top of the Lucene information retrieval engine and was developed by Cnet as a product search engine.
  12. This ONLY allows search on tags, and the “index” table needs to be maintained manually. This is fine if this is all you want to do, and is very common. Location_type, currently ith only 2 values, will work with a2i, name on the other hand, would not. So how do you search by name? Secondary indexes will allow you to search on the whole field, but those aren’t efficient for higher cardinality values, like email address Secondary index creates additional data structures on each node that hold table partitions Each ‘local index’ indexes values in rows stored locally Query on an indexed column requires accessing ‘local indexes’ on all nodes Expensive Query on a partition key and an indexed column requires accessing a ‘local index’ on one (or a few) nodes Efficient But say you want to search the text in description or title? What now?