Date post: | 13-Apr-2017 |
Category: |
Technology |
Upload: | mario-leander-reimer |
View: | 334 times |
Download: | 1 times |
Automotive Information Research driven by Apache Solr
Mario-Leander Reimer Cheftechnologe, QAware [email protected] @LeanderReimer
| 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
| data2day 2016 | Automotive Information Research driven by Apache Solr | @LeanderReimer
Reverse Data Engineering und Daten-Exploration mit MIR
4
| 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.
| 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
| 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
Tree-View der Systeme, Tabellen
und Attribute
Wildcard-SucheDrill-Down über Facetten
Such- Ergebnisse
Mögliche Synonyme für Fahrgestell-Nr.
gefunden
| data2day 2016 | Automotive Information Research driven by Apache Solr | @LeanderReimer
Informationsrecherche im Aftersales mit AIR
9
| 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
| 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
| 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
| 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 th
is
with Oracle!
| data2day 2016 | Automotive Information Research driven by Apache Solr | @LeanderReimer
Nur ein überlegtes Schema-Design führt zu einer optimalen Solr Query-Performance.
17
| 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
RelationshipNavigation
| 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
| 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.
| 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‘
| 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"] }
| 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.htmlBa
se64
dec
ode {
"BRAND":"BMW PKW", "E_SERIES":"F10", "TRANSMISSION":"MECH" }
| 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
| data2day 2016 | Automotive Information Research driven by Apache Solr | @LeanderReimer
Auflösung von Stücklisten und Bedarfsrechner mit ZEBRA
25
| data2day 2016 | Automotive Information Research driven by Apache Solr | @LeanderReimer
Bills of Materials (BOMs) explained
26
| data2day 2016 | Automotive Information Research driven by Apache Solr | @LeanderReimer
BOMs werden gebraucht für …
27
Produktionsplanung Vorhersage von Bedarfen
Scenario-basierte PlanungSimulationen
| 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.
| 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.
| 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
Tim
e to
cal
cula
te th
e Bo
M fo
r one
ord
er
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.
XX
XX
| 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
Mario-Leander Reimer Cheftechnologe, QAware GmbH [email protected]
https://www.qaware.de https://slideshare.net/MarioLeanderReimer/ https://speakerdeck.com/lreimer/ https://twitter.com/leanderreimer/
&