Wir suchen das Unbekannte in den unendlichen Weiten relationaler Datensilos. Wie findet man versteckte und bisher unbekannte Entitäten mit deren Beziehungen? Wie sucht man die relevanten Informationen in einem 10^56 dimensionalen Datenraum? Welche Vorteile bietet hier der Einsatz von Apache Solr als Index-Maschine und NoSQL Storage gegenüber traditionellen, relationalen Ansätzen? Wie erzeugt man ein konsistentes, täglich aktuelles Informationsnetz in über 20 Sprachen? Dieser Vortrag gibt die Antworten und präsentiert eine detaillierte Case Study wie auf Basis von Solr eine globale Informationsrecherche Applikation für einen führenden deutschen Automobilhersteller erfolgreich umgesetzt wurde. Dieser Vortrag wurde auf der #data2day 2016 in Karlsruhe gehalten.
2. | data2day 2016 | Automotive Information Research driven by Apache Solr | @LeanderReimer
Agenda
• Reverse Data Engineering und Daten-Exploration mit MIR
• Informationsrecherche im Aftersales mit AIR
• System-Architektur und Herausforderungen
• Lösungen für das Problem der kombinatorischen Explosion
• Datenaktualität und Konsistenz
• Auflösung von Stücklisten und Bedarfsrechner mit ZEBRA
2
3.
4. | data2day 2016 | Automotive Information Research driven by Apache Solr | @LeanderReimer
Reverse Data Engineering und
Daten-Exploration mit MIR
4
5. | data2day 2016 | Automotive Information Research driven by Apache Solr | @LeanderReimer
In welchem Daten-Silo sind die gesuchten Daten?
5
System A System B System C System D
Fahrzeugdaten
Weitere Daten
Wo sind die gesuchten Fahrzeugdaten?
60 potentielle Systeme und 5000 Entitäten.
6. | data2day 2016 | Automotive Information Research driven by Apache Solr | @LeanderReimer
Welche versteckten Relationen gibt es zwischen
den Silos und deren Daten?
6
Wie sind die Daten miteinander verbunden?
400.000 potentielle Relationen.
Fahrzeugdaten
Weitere Daten
System A System B System C System D
Teile
Dokumente
7. | data2day 2016 | Automotive Information Research driven by Apache Solr | @LeanderReimer
Reverse Data Engineering und Exploration mit MIR
• MIR indiziert und verwaltet die Beschreibung der Datenmodelle und Records aller
relevanten Quell-Systeme (RDBMS, XML, WSDL, …)
• MIR ermöglicht die Suche und Navigation in den Meta-Informationen, der Drill-
Down funktioniert über Solr Facets
• MIR verwaltet das Datenmodell und das Solr XML Schema des Zielsystems AIR
7
8. Tree-View der
Systeme, Tabellen
und Attribute
Wildcard-Suche
Drill-Down über
Facetten
Such-
Ergebnisse
Mögliche
Synonyme für
Fahrgestell-Nr.
gefunden
9. | data2day 2016 | Automotive Information Research driven by Apache Solr | @LeanderReimer
Informationsrecherche im
Aftersales mit AIR
9
10. | data2day 2016 | Automotive Information Research driven by Apache Solr | @LeanderReimer
Die richtige Information in nur 3 Klicks.
Die Ausgangssituation:
• Benutzer müssen bis zu 7 verschiedene Applikationen gleichzeitig benutzen.
• Die Bestandsapplikationen sind nicht wirklich gut integriert.
• Die Suche nach den richtigen Informationen ist aufwändig und fehleranfällig.
Die Projektvision:
• Aggregation aller relevanten Daten in ein konsistentes Informationsnetz
• Freie Suche nach Informationen und Navigation zu den verknüpften Informationen
• Ablöse der Bestandsapplikationen durch eine einfache Suchanwendung
10
11. | data2day 2016 | Automotive Information Research driven by Apache Solr | @LeanderReimer11
12. | data2day 2016 | Automotive Information Research driven by Apache Solr | @LeanderReimer12
13. | data2day 2016 | Automotive Information Research driven by Apache Solr | @LeanderReimer
–Unbekannt
„Aber Apache Solr ist doch eine Volltext-
Suchmaschine. Für die Anwendungsdaten müsst ihr
Oracle verwenden.“
13
14. | data2day 2016 | Automotive Information Research driven by Apache Solr | @LeanderReimer
Apache Solr schlägt Oracle deutlich im direkten Vergleich
in Sachen Query-Performance und Index-Größe.
14
SELECT * FROM VEHICLE WHERE VIN='V%'
INFO_TYPE:VEHICLE AND VIN:V*
SELECT * FROM MEASURE WHERE TEXT='engine'
INFO_TYPE:MEASURE AND TEXT:engine
SELECT * FROM VEHICLE WHERE VIN='%X%'
INFO_TYPE:VEHICLE AND VIN:*X*
| 038 ms | 000 ms | 000 ms
| 383 ms | 384 ms | 383 ms
| 092 ms | 000 ms | 000 ms
| 389 ms | 387 ms | 386 ms
| 039 ms | 000 ms | 000 ms
| 859 ms | 379 ms | 383 ms
Disk space: 132 MB Solr vs. 385 MB OracleTest Datenset: 150.000 Records
15. Der Dirt Race Use-Case:
•Keine Internet-Verbindung
•Low-End Devices
16. | data2day 2016 | Automotive Information Research driven by Apache Solr | @LeanderReimer
Solr und AIR auf einem Raspberry Pi Model B als
Proof of Concept lief 1A.
16
Running Debian Linux + JDK8
Jetty Servlet Container mit den Solr
und AIR Webapps
Reduziertes offline Datenset mit
~1.5 Mio Solr Documents
Model B Hardware Specs:
• ARMv6 CPU 700Mhz
• 512MB RAM
• 32GB SD Card
And now try this
with Oracle!
17. | data2day 2016 | Automotive Information Research driven by Apache Solr | @LeanderReimer
Nur ein überlegtes Schema-Design führt zu einer
optimalen Solr Query-Performance.
17
18. | data2day 2016 | Automotive Information Research driven by Apache Solr | @LeanderReimer
Naive Denormalisierung der Daten führt schnell zu
kombinatorischer Explosion.
18
33.071.137
Fahrzeuge14.830.197
Arbeitswerte
1.678.667
Pakete
5.078.411
AW Gruppen
18.573
Reparatur-
Anleitungen
648.129
Technische
Dokumente
55.000
Teile
648.129
Maßnamen
41.385
Typen
6.180
Fehler Indikationen
Relationship
Navigation
19. | data2day 2016 | Automotive Information Research driven by Apache Solr | @LeanderReimer
Multi-valued Felder können 1..n Relationen effizient
abbilden, ergeben aber manchmal False Positives.
19
{
"INFO_TYPE":"AWPOS_GROUP",
"NUMMER" :[ "1134190" , "1235590" ]
"BAUSTAND" :["1969-12-31T23:00:00Z","1975-12-31T23:00:00Z"]
"E_SERIES" :[ "F10" , "E30" ]
}
Dieser Ansatz erfordert ein Nachfiltern der Suchergebnisse. Bei wenigen Treffern kein Problem.
Alternative: neuere Versionen von Solr unterstützen Nested Child Documents.
Index 0 Index 1
fq=INFO_TYPE:AWPOS_GROUP AND NUMMER:1134190 AND E_SERIES:F10
fq=INFO_TYPE:AWPOS_GROUP AND NUMMER:1134190 AND E_SERIES:E30
20. | data2day 2016 | Automotive Information Research driven by Apache Solr | @LeanderReimer
Die Gültigkeiten von Technischen Dokumenten sind
als Boolsche Ausdrücke in binärer Form abgelegt.
• Gültigkeits-Ausdrücke haben bis zu 46 verschiedene Terme.
• Gültigkeits-Ausdrücke nutzen bis zu fünf Operatoren (AND, NOT, …)
• Gültigkeits-Ausdrücke sind geschachtelt und komplex.
• Einige Terme sind dynamisch und somit unbekannt zum Zeitpunkt
der Indizierung.
20
Die Lösung: Transformation der Ausdrücke in einen equivalenten, ternären Ausdruck.
Auswertung der Ausdrücke zum Abfrage-Zeitpunkt über eine Custom Function Query.
21. | data2day 2016 | Automotive Information Research driven by Apache Solr | @LeanderReimer
Beispiel für einen binären Gültigkeits-Ausdruck
21
Type(53078923) = ‚Brand‘, Value(53086475) = ‚BMW PKW‘
Type(53088651) = ‚E-Series‘, Value(53161483) = ‚F10‘
Type(64555275) = ‚Transmission‘, Value(53161483) = ‚MECH‘
22. | data2day 2016 | Automotive Information Research driven by Apache Solr | @LeanderReimer
Transformation der binären Gültigkeits-Ausdrücke in
ihr JavaScript Equivalent während der Indizierung.
22
((BRAND=='BMW PKW')&&(E_SERIES=='F10')&&(TRANSMISSION=='MECH'))
AND(Brand='BMW PKW', E-Series='F10'‚ Transmission='MECH')
{
"INFO_TYPE": "TECHNISCHES_DOKUMENT",
"DOKUMENT_TITEL": "Getriebe aus- und einbauen",
"DOKUMENT_ART": " reparaturanleitung",
"VALIDITY": "((BRAND=='BMW PKW')&&((E_SERIES=='F10')&&(...))",
„BRAND": [„BMW PKW"]
}
23. | data2day 2016 | Automotive Information Research driven by Apache Solr | @LeanderReimer
Auswertung der JavaScript Gültigkeits-Ausdrücke zum
Abfrage-Zeitpunkt über eine Custom Function Query.
23
&fq=INFO_TYPE:TECHNISCHES_DOKUMENT
&fq=DOKUMENT_ART:reparaturanleitung
&fq={!frange l=1 u=1 incl=true incu=true cache=false cost=500}
jsTerm(VALIDITY,eyJNT1RPUl9LUkFGVFNUT0ZGQVJUX01PVE9SQVJCRUlUU
1ZFUkZBSFJFTiI6IkIiLCJFX01BU0NISU5FX0tSQUZUU1RPRkZBUlQiOm51bG
wsIlNJQ0hFUkhFSVRTRkFIUlpFVUciOiIwIiwiQU5UUklFQiI6IkFXRCIsIkV
kJBVVJFSUhFIjoiWCcifQ==)
http://qaware.blogspot.de/2014/11/how-to-write-postfilter-for-solr-49.html
Base64decode
{
"BRAND":"BMW PKW",
"E_SERIES":"F10",
"TRANSMISSION":"MECH"
}
24. | data2day 2016 | Automotive Information Research driven by Apache Solr | @LeanderReimer
Ein flexibler ETL Prozess, Continuous Delivery und
DevOps sorgen für Datenaktualität und Konsistenz.
24
25. | data2day 2016 | Automotive Information Research driven by Apache Solr | @LeanderReimer
Auflösung von Stücklisten und
Bedarfsrechner mit ZEBRA
25
26. | data2day 2016 | Automotive Information Research driven by Apache Solr | @LeanderReimer
Bills of Materials (BOMs) explained
26
27. | data2day 2016 | Automotive Information Research driven by Apache Solr | @LeanderReimer
BOMs werden gebraucht für …
27
Produktionsplanung Vorhersage von
Bedarfen
Scenario-basierte PlanungSimulationen
28. | data2day 2016 | Automotive Information Research driven by Apache Solr | @LeanderReimer
Die grobe Architektur von ZEBRA
28
Teile /
abstrakte
Bedarfe
Bestellungen /
tatsächliche
Bedarfe
Analytics
BOMs /
Abhängige
Bedarfe
Demand
Resolver
Produktions-
Planung
7 Mio.2 Mio. 21 Mrd.
29. | data2day 2016 | Automotive Information Research driven by Apache Solr | @LeanderReimer
Die wesentlichen Solr Optimierungen für ZEBRA
29
Bulk RequestHandler
Binary DocValue Support
Boolean Interpreter als Post-Filter
Massen-Data Response Format
Search Komponenten für
Custom JOIN Algorithmus
Auflösung von tausenden
Orders mit einem Request.
Effizienter Datenspeicher
mit Custom JOIN Logik
Drastische Verbesserung
der Zugriffszeiten auf die
gespeicherten Daten über
Binary DocValues.
0111 0111
Nutzt den Default Solr Binary
Codec mit einem optimierten
Datenmodell. Reduziert die
Datenmenge um Faktor 8.
Computing
BOMs
Eigene Post-Filter Implementierung
zur Auswertung der am Dokumente
gespeicherten Boolean Ausdrücke.
30. | data2day 2016 | Automotive Information Research driven by Apache Solr | @LeanderReimer
Low-Level Optimierungen der Solr-Interna führten
zu einer drastischen Steigerung der Performance.
30
October 14 January 15 May 15 October 15
4,9 ms 0,28 ms
24 ms
TimetocalculatetheBoMforoneorder
0,08 ms
Scoring (-8%)
Default Query Parser (-25%)
Stat-Cache (-8%)
String DocValues (-28%)
Development of the processing time Demand Calulation Service PoC Profiling result and the some improvements to reduce the query time.
X
X
X
X
31. | data2day 2016 | Automotive Information Research driven by Apache Solr | @LeanderReimer
Solr ist ein leistungsfähiges Werkzeug
das für den Bau von Enterprise und Datenanalyse
Anwendungen eingesetzt werden kann.
Seien Sie kreativ!
31