OOP 2013 NoSQL Suche

Embed Size (px)

DESCRIPTION

Diese Präsentation hat Kai Spichale auf der OOP 2013 gehalten und erläutert verschiedene Ansätze für die Suche in NoSQL-Datenbanken.

Text of OOP 2013 NoSQL Suche

  • 1. Datensuche mit NoSQLKai Spichale27.01.2013
  • 2. ber mich Kai Spichale Softwarearchitekt und -entwickler bei adesso AG Schwerpunkt: Java-Technologien Autor verschiedener Fachartikel, Sprecher auf Konferenzen adesso gehrt zu den fhrenden IT-Dienstleistern im deutschsprachigen Raum Beratung und individuelle Softwareentwicklung Mehr als 1000 Mitarbeiter Zu den wichtigsten Kunden zhlen die Allianz, Hannover Rck, Union Investment, Westdeutsche Lotterie, Zurich Versicherung, DEVK und DAK27.01.2013 1 OOP 2013 Kai Spichale
  • 3. Motivation NoSQL Suche Exponentielles Datenwachstum Datenzugriff ndert sich: Semistrukturierte Daten > Volltextsuche wird wichtiger > Benutzererwartungen steigen Strker vernetzt Suche ber bekannte 80% der unternehmensrelevanten Schlsselbegriffe oder ber ein Informationen in unstrukturierter Katalogsystem sind fr groe Form, hauptschlich Text Datenbestnde unpraktisch27.01.2013 2 OOP 2013 Kai Spichale
  • 4. Agenda Lucene Volltextsuchen NoSQL: > Architekturtreiber > MongoDB > Neo4j > Apache Cassandra > Apache Hadoop Schlussbemerkung27.01.2013 3 OOP 2013 Kai Spichale
  • 5. Volltextsuchen Aufgabe: Auffinden von Texten in einer Vielzahl von Dateien oder Datenstzen Naiver Ansatz mit linearer Suche la grep: > O(n), langsam > Negation ist schwierig > Fehlende Unterscheidung von Phrasen und Schlsselwrtern Invertierter Index: > Term Dokument > Jedem Term werden Informationen ber das Vorkommen des Terms in den Dokumenten zugeordnet27.01.2013 4 OOP 2013 Kai Spichale
  • 6. Apache Lucene Java-Bibliothek fr Volltextsuchen De-facto-Standard im Bereich Open-Source-Suchlsungen Merkmale: > Anwendungsneutral > Gute Performance Funktionalitt: > Bewertete und nach Rang sortierte Suchen > Viele Abfragetypen, Facettennavigation > Suche nach einzelnen Feldern > Sortierung > Multi-Index-Suchen > Parallele Suche und Update27.01.2013 5 OOP 2013 Kai Spichale
  • 7. Textanalyse Extrahieren, ParsenDokumente Character Filter Tokenizer Token Filter de.GermanAnalyzer: StandardTokenizer > StandardFilter Invertierter > LowerCaseFilter > StopFilter > GermanStemFilter Index 27.01.2013 6 OOP 2013 Kai Spichale
  • 8. Textanalyse Stopword List Eat your ID Term Document own dog food. a 1 come 2 and around 2 dog 1 every 3 eat 1 for from 4 exception 3 First in come, 5 first 2 is first it 5 food 1 served. not 6 own 1 on one 7 prove 3 the to 8 rule 3 The under 9 serve 2 exception proves the 10 your 1 rule.27.01.2013 7 OOP 2013 Kai Spichale
  • 9. Abfragetypen Abfrage Beispiel Termsuche +dog snoopy (MUST, MUST_NOT, SHOULD) Phrasensuche foo bar Wildcard fo*a? Fuzzy fobar~ Range [A TO Z]27.01.2013 8 OOP 2013 Kai Spichale
  • 10. NoSQL und DatensucheOne size fits all-Ansatz Welche NoSQL-Datenbank erfllt die Anforderungen am besten? Wird Volltextsuche untersttzt? Performance Volumen Konsistenz Datenstruktur Datenzugriff Verfgbarkeit nderungen27.01.2013 9 OOP 2013 Kai Spichale
  • 11. NoSQL und DatensucheWas bieten diese Datenbanken? MongoDB Neo4j Apache Cassandra Apache Hadoop27.01.2013 10 OOP 2013 Kai Spichale
  • 12. Dokumentenorientierte Datenbanken Speichern Daten in Form von Dokumenten Semistrukturierte Inhalte JSON, YAML, XML { "_id" : ObjectId(42"), "firstname" : "John", "lastname" : "Lennon", "address" : { "city" : "Liverpool", "street" : "251 Menlove Avenue } }27.01.2013 11 OOP 2013 Kai Spichale
  • 13. MongoDB Ad-hoc-Abfragen fr Dokumente oder einzelne Felder db.things.find({firstname:"John"}) Abfragen mit serverseitig ausgefhrten JavaScript-Funktionen Aggregationen, MapReduce Einfache Textsuchen > Mit Multikeys knnen Werte eines Arrays indiziert werden { article : some long text", _keywords : [ some" , long" , text] }27.01.2013 12 OOP 2013 Kai Spichale
  • 14. MongoDB Mongo-Connector synchronisiert Daten aus MongoDB mit einem Zielsystem (z.B.: Solr, Elastic Search) Architektur mit separaten Suchserver mglich Doc update sync erstellen indizieren suchen 1 2 3 4 5 Mongo MongoDB Connector Solr27.01.2013 13 OOP 2013 Kai Spichale
  • 15. MongoDBMongoDB MongoDB + Lucene Lucene Kein Ergebnis-Mergen Volltextsuchen mit Kein Ergebnis-Mergen Stemming, Faceting Komplexe Queries mit Komplexe Queries mit Volltextsuchen mit Aggregationen Aggregationen Stemming, Faceting Nur einfache Mergen notwendig Keine Transaktion Textsuchen Erhhte Komplexitt Keine partiellen (Entwicklung, Betrieb) Dokumentupdates Verwendet Schema 27.01.2013 14 OOP 2013 Kai Spichale
  • 16. Graphendatenbanken Informationen werden als Graphen modelliert > Knoten > Kanten (auch Relationships) > Eigenschaften (auch Properties) Universelles Datenmodell id=1 id=3 Traversierung name=John name=Paul Beispiel: Neo4j fri