Escolar Documentos
Profissional Documentos
Cultura Documentos
Motivation
Prof. Hasso Plattner Stephan Mller
Research Group of Prof. Hasso Plattner Hasso Plattner Institute for Software Engineering University of Potsdam
Our focus
3
Buffer pool
Changes in Hardware
give an opportunity to re-think the assumptions of yesterday because of what is possible today.
Multi-Core Architecture (96 cores per server) One blade ~$50.000 = 1 Enterprise Class Server Parallel scaling across blades A 64 bit address space 2TB in current servers 25GB/s per core Cost-performance ratio rapidly declining Memory hierarchies
Lightweight Compression
Reducing data amount, while.. Increasing processing speed through late materialization
Data Management
Modern enterprise resource planning (ERP) systems are challenged by mixed workloads, including OLAP-style queries. For example:
OLTP-style: create sales order, invoice, accounting documents, display customer master data or sales order OLAP-style: dunning, available-to-promise, cross selling, operational reporting (list open sales orders)
But: Todays data management systems are optimized either for daily transactional or analytical workloads (storing their data along rows or columns)
OLAP/sub system does not have the latest data OLAP/sub system does only have predefined subset of the data
Cost-intensive ETL process has to synch both systems There is a lot of redundancy
10
Workarounds in OTLP
As in OLAP-systems OLTP-systems facilitate redundant data to overcome shortcoming in todays data management
Materialized Views Materialized Aggregates Pre-computed and materialized result sets
Since the database has been the bottleneck, complex data processing is done on application server
Simple SQL statements Nested loop joins (SELECT . SELECT SINGLE ENDSELECT)
Batch-processing lead to
Long running business processes Inflexibility (e.g. ATP rescheduling)
11
Complex processes
Increased data set (but real-world events driven) Separated into transactional (OLTP) and analytical (OLAP) applications Enterprise Data Management Wide schemas Sparse data with limited domain Workload consists of complex analytical queries Workload characteristics Set processing Read access
13
78 % 64 %
14
0%
1 - 32
Workload
OLTP
OLAP
Workload
TPC-C
Approach
Change overall data management system assumption
In-Memory only Start with read-optimized data structures Transactional features as needed Vertically partitioned (column store) CPU-cache optimized Only one optimization objective main memory access
Column
ROW
TEXT
Backup
18
0.5ns 5ns 7ns 100ns 20,000ns 150,000ns 250,000ns 10,000,000ns 150,000,000ns 0.1s 20s 150s 250s 10ms 150ms
V1
V2
V3
V4
V5
V6
V7
V8
V9
V10
Cache Line 1
Cache Line 2
Basics (1)
Memory in todays computers has a linear address layout: addresses start at 0x0 and go to 0xFFFFFFFFFFFFFFFF for 64bit Not every system is 64bit addressable, e.g. modern Intel systems use only 48bits which allows up to 256TB RAM on a single machine Virtual memory allocated by the program can distribute over this space Each UNIX process has its own view on the address space Address translation is done in hardware by the CPU
22
Basics (2)
The memory layout is only linear, every higher-dimensional access is mapped to this linear band.
23
Column-store
Doc Doc Sold- Value Sales Num Date To Status Org
24
Row 4
25
26
Row-oriented storage
A1
A2 A3
B1
B2 B3
C1
C2 C3
A4
27
B4
C4
Row-oriented storage
A1 B1 C1
A2 A3
B2 B3
C2 C3
A4
28
B4
C4
Row-oriented storage
A1 B1 C1 A2 B2 C2
A3
B3
C3
A4
29
B4
C4
Row-oriented storage
A1 B1 C1 A2 B2 C2 A3 B3 C3
A4
30
B4
C4
Row-oriented storage
A1 B1 C1 A2 B2 C2 A3 B3 C3
A4 B4 C4
31
Column-oriented storage
A1
A2 A3
B1
B2 B3
C1
C2 C3
A4
32
B4
C4
Column-oriented storage
A1 A2 A3 A4
B1
B2 B3
C1
C2 C3
B4
33
C4
Column-oriented storage
A1 A2 A3 A4 B1 B2 B3 B4
C1
C2 C3
C4
34
Column-oriented storage
A1 A2 A3 A4 B1 B2 B3 B4 C1 C2 C3 C4
35
36
B1 B2 B3 B4
C1 C2 C3 C4
Cache line
37
38
B1 B2 B3 B4
C1 C2 C3 C4
Cache line
39
Mixed Workloads
Mixed Workloads involve attribute- and entity-focused queries OLTP-style queries
A1 A2 A3 A4 B1 B2 B3 B4 C1 C2 C3 C4
OLAP-style queries
A1 A2 A3 A4 B1 B2 B3 B4 C1 C2 C3 C4
40
OLTP-style queries
A1 A2 A3
41
OLAP-style queries
A1 A2 A3 A4 B1 B2 B3 B4 C1 C2 C3 C4
B1 B2 B3 B4
C1 C2 C3 C4
A4
Dictionary Encoding
Motivation
Main memory access is the new bottleneck
Idea: Trade CPU time to compress and decompress data
Operation directly on compressed data Offsetting with bit-encoded fixed-length data types Based on limited value domain
43
Sample Data
rec ID 39 40 41 42 43 fname John Mary Jane John Peter lname Smith Brown Doe Doe Schmidt gender m f f m m city Chicago London Palo Alto Palo Alto Potsdam country USA UK USA USA GER birthday 12.03.1964 12.05.1964 23.04.1976 17.06.1952 11.11.1975
45
39
40 41 42 43
23
24 25 23 26
42
43
46
John
Peter
25
26
Jane
Peter
39
40 41 42 43
23
24 25 23 26
25
26
47
Jane
Peter
Sorted Dictionary
Dictionary entries are sorted either by their numeric value or lexicographically
Dictionary lookup complexity: O(log(n)) instead of O(n)
Dictionary entries can be compressed to reduce the amount of required storage Selection criteria with ranges are less expensive (orderpreserving dictionary)
48
Compression Rate
Depends on cardinality / entropy Cardinality
Table cardinality: number of tuples in a relation Column cardinality: number of distinct values in a column
Entropy
measure for information density Entropy = column cardinality / table cardinality
49
50
Attributes
First Name Last Name Gender Country City Birthday 200 byte
52
Table size = 8 billion tuples x 200 bytes per tuple 1.6 TB Scan through all rows with 2MB/ms/core 800 seconds with 1 core
53
Table size = 8 billion tuples x 200 bytes per tuple 1.6 TB Scan through all rows with 2MB/ms/core 800 seconds with 1 core
54
55
Table size
Total: 92 GB
Compression factor: 17
56
Size of attribute vector gender = 8 billion tuples x 1 bit per tuple 1 GB Scan through attribute vector with 2MB/ms/core 0.5 seconds with 1 core
57
Size of attribute vector birthday = 8 billion tuples x 2 byte per tuple = 16 GB Scan through column with 2MB/ms/core 8 seconds with 1 core
58
Column Store
Row Store
Stride access
256 512x slower
SELECT Example
SELECT first_name, last_name FROM world_population WHERE country=IT and gender=m id 2394 3010 3040 fname Gianluigi Lena Mario lname Buffon Gercke Balotelli country Italy Germany Italy gender m f m
m m m
60
Query Plan
s s
Predicates are evaluated and generate position lists Intermediate position lists are logically combined Final position list is used for materialization
61
Query Execution
Value ID Dictionary for country Algeria France Germany Italy Netherlands id 2394 3010 3040 3949 4902 20102 fname Gianluigi Lena Mario Manuel Lukas Klaas-Jan lname Buffon Gercke Balotelli Neuer Podolski Huntelaar country 3 2 3 2 2 4 gender 1 0 1 1 1 1 1 m Value ID 0 Dictionary for gender f 0 1 2 3 4
gender = 1 (m)
Position 0
country = 3 (Italy)
Position
2
3 4
0
3
AND
Position 0 3
62
Tuple Reconstruction
Prof. Hasso Plattner Stephan Mller
Research Group of Prof. Hasso Plattner Hasso Plattner Institute for Software Engineering University of Potsdam
Tuple Reconstruction #1
Accessing a record in a row store
All attributes are stored consecutively 200 byte 4 cache accesses 64 byte 256 byte
Read with 2MB/ms/core 0.128 microseconds with 1 core
64
Tuple Reconstruction #2
Virtual Record IDs
All attributes are stored in separate columns Implicit record IDs are used to reconstruct rows
65
Tuple Reconstruction #3
Virtual Record IDs
66
Insert
Example
world_population
rowID fname lname gender country city birthday
0
1 2 3 4 ...
Martin
Michael Hanna Anton Sophie ...
Albrecht
Berg Schulze Meyer Schulze ...
m
m f m f ...
GER
GER GER AUT GER ...
Berlin
Berlin Hamburg Innsbruck Potsdam ...
08-05-1955
03-05-1970 04-04-1968 10-20-1992 09-03-1977 ...
68
D
Albrecht Berg Meyer Schulze
0 1 2 3 4 ... fname Martin Michael Hanna Anton Sophie ... lname Albrecht Berg Schulze Meyer Schulze ... gender m m f m f ... country GER GER GER AUT GER ... city Berlin Berlin Hamburg Innsbruc k Potsdam ... birthday 08-05-1955 03-05-1970 04-04-1968 10-20-1992 09-03-1977 ...
2
3 4
3
2 3
69
D
Albrecht Berg
0 1 2 3 4 ... fname Martin Michael Hanna Anton Sophie ... lname Albrecht Berg Schulze Meyer Schulze ... gender m m f m f ... country GER GER GER AUT GER ... city Berlin Berlin Hamburg Innsbruc k Potsdam ... birthday 08-05-1955 03-05-1970 04-04-1968 10-20-1992 09-03-1977 ...
2
3 4
3
2 3
2
3
Meyer
Schulze
1.
70
D
Albrecht Berg
0 1 2 3 4 5 fname Martin Michael Hanna Anton Sophie lname Albrecht Berg Schulze Meyer Schulze Schulze ... ... ... ... gender m m f m f country GER GER GER AUT GER city Berlin Berlin Hamburg Innsbruc k Potsdam birthday 08-05-1955 03-05-1970 04-04-1968 10-20-1992 09-03-1977
2
3 4 5
3
2 3 3
2
3
Meyer
Schulze
1.
2.
...
...
...
Dictionary (D)
71
D
Berlin Hamburg
0 1 2 3 4 5 ... ... fname Martin Michael Hanna Anton Sophie lname Albrecht Berg Schulze Meyer Schulze Schulze ... ... ... ... ... gender m m f m f country GER GER GER AUT GER city Berlin Berlin Hamburg Innsbruck Potsdam birthday 08-05-1955 03-05-1970 04-04-1968 10-20-1992 09-03-1977
2
3 4
1
2 3
2
3
Innsbruck
Potsdam
Dictionary (D)
72
D
Berlin Hamburg
0 1 2 3 4 5 fname Martin Michael Hanna Anton Sophie lname Albrecht Berg Schulze Meyer Schulze Schulze ... ... ... ... ... ... gender m m f m f country GER GER GER AUT GER city Berlin Berlin Hamburg Innsbruck Potsdam birthday 08-05-1955 03-05-1970 04-04-1968 10-20-1992 09-03-1977
2
3 4
1
2 3
2
3
Innsbruck
Potsdam
1.
...
Dictionary (D)
73
D
Berlin Hamburg
0 1 2 3 4 5 ... ... fname Martin Michael Hanna Anton Sophie lname Albrecht Berg Schulze Meyer Schulze Schulze ... ... ... ... ... gender m m f m f country GER GER GER AUT GER city Berlin Berlin Hamburg Innsbruck Potsdam birthday 08-05-1955 03-05-1970 04-04-1968 10-20-1992 09-03-1977
2
3 4
1
2 3
2
3 4
Innsbruck
Potsdam Rostock
1.
2.
Dictionary (D)
74
D
Berlin Hamburg
0 1 2 3 4 5 ... ... fname Martin Michael Hanna Anton Sophie lname Albrecht Berg Schulze Meyer Schulze Schulze ... ... ... gender m m f m f country GER GER GER AUT GER city Berlin Berlin Hamburg Innsbruck Potsdam Rostock ... ... birthday 08-05-1955 03-05-1970 04-04-1968 10-20-1992 09-03-1977
2
3 4 5
1
2 3 4
2
3 4
Innsbruck
Potsdam Rostock
1.
2. 3.
Look-up on D no entry found Append new value to D (no re-sorting necessary) Append ValueID to AV
Dictionary (D)
75
D
0
1 2 3 4
Anton
Hanna Martin Michael Sophie
0 1 2 3 4 5 ...
gender m m f m f
2
3 4
1
0 4
...
...
...
...
...
...
Dictionary (D)
76
D
0
1 2 3 4
Anton
Hanna Martin Michael Sophie
0 1 2 3 4 5
gender m m f m f
2
3 4
1
0 4
1.
...
...
...
...
...
...
...
Dictionary (D)
77
D
0
1 2 3 4 5
Anton
Hanna Martin Michael Sophie Karen
0 1 2 3 4 5 ...
gender m m f m f
2
3 4
1
0 4
1.
2.
...
...
...
...
...
...
Dictionary (D)
78
D (old)
0
1 2 3 4 5
D (new)
0 1 2 3 Anton Hanna Karen Martin
0 1 2 3 4 5 ... ... fname Martin Michael Hanna Anton Sophie lname Albrecht Berg Schulze Meyer Schulze Schulze ... ... ... gender m m f m f country GER GER GER AUT GER city Berlin Berlin Hamburg Innsbruck Potsdam Rostock ... ... birthday 08-05-1955 03-05-1970 04-04-1968 10-20-1992 09-03-1977
Anton
Hanna Martin Michael Sophie Karen
2
3 4
1
0 4
4
5
Michael
Sophie
1.
2. 3.
Dictionary (D)
79
AV (new)
0 1 3 4 0 1 2 3
D (new)
Anton Hanna Karen Martin
0 1 2 3 4 5 ... ... fname Martin Michael Hanna Anton Sophie lname Albrecht Berg Schulze Meyer Schulze Schulze ... ... ... gender m m f m f country GER GER GER AUT GER city Berlin Berlin Hamburg Innsbruck Potsdam Rostock ... ... birthday 08-05-1955 03-05-1970 04-04-1968 10-20-1992 09-03-1977
2
3 4
1
0 4
2
3 4
1
0 5
4
5
Michael
Sophie
1.
2. 3. 4.
Dictionary (D)
80
D
0
1 2 3 4 5
Anton
Hanna Karen Martin Michael Sophie
0 1 2 3 4 5 ...
gender m m f m f
2
3 4 5
1
0 5 2
1.
2. 3. 4. 5.
Look-up on D no entry found Append new value to D Sort D Change ValueIDs in AV Append new ValueID to AV
...
...
...
...
Dictionary (D)
81
RESULT
world_population
rowID fname lname gender country city birthday
0
1 2 3 4 5 ...
Martin
Michael Hanna Anton Ulrike Karen ...
Albrecht
Berg Schulze Meyer Schulze Schulze ...
m
m f m f f ...
GER
GER GER AUT GER GER ...
Berlin
Berlin Hamburg Innsbruck Potsdam Rostock ...
08-05-1955
03-05-1970 04-04-1968 10-20-1992 09-03-1977 06-20-2012 ...
82
Insert-Only
Principles
Never delete any data Invalidate outdated tuples instead Logical Update is changed to an technical Insert/Append Gap-less time travel possible, Legal requirements, e.g. for auditability can easily be met Implicit logging Snapshot Isolation and locking is simplified but applied compression reduces overhead
Advantages
84
Implementation possibilities
1.
Point Representation
Store complete tuple on attribute change Save insert timestamp in column valid_from Writes faster, reads slower Store complete tuple on attribute change Update replaced tuple, store current timestamp in valid_to Same timestamp is stored into valid_from in new tuple Reads faster, writes slower Update existing tuple on changes (not insert-only any longer) Store outdated values in separate history table
2.
Interval representation
3.
85
Status updates can be done in-place with timestamps Timestamps are not compressed
Insert-Only 1
Point Representation
id 0 1 2 3
4
5 1 ...
Ulrike
Sophie Michael ...
Schulze
Schulze Berg ... Perdopolus
f
f m ... m
GER
GER GER ... GRE
Potsdam
Rostock Potsdam ... Athen
09-03-1977
06-20-2012 03-05-1970 ... 03-12-1979
10-11-2011
10-11-2011 07-02-2012 ... 10-11-2011
8 10 9 Zacharias
86
Primary key is composed of id and valid_from Insert is easy: valid_from = current timestamp Select, Group By, Join: requires nested join to determine the valid_from timestamp for each object
Insert-Only 2
Interval Representation
id 0 1 2 3
4
5 1 ...
Ulrike
Sophie Michael ...
Schulze
Schulze Berg ... Perdopolus
f
f m ... m
GER
GER GER ... GRE
Potsdam
Rostock Potsdam ... Athen
09-03-1977
06-20-2012 03-05-1970 ... 03-12-1979
10-11-2011
10-11-2011 07-02-2012 ... 10-11-2011 ...
8 10 9 Zacharias
87
Primary key is composed of id and valid_from Insert requires update of the formerly current tuple Select, Group By, Join is easy: Where clause eliminates tuples out of range Finding up-to-date entries can be supported by an additional bit-vector on column valid_to
Snapshot Isolation
Snapshot Isolation guarantees consistent reads during a transaction, all reads retrieve the values that were active in the moment the transaction started Conflicts like lost updates may happen theoretically, but are prevented through
time
88
Status Updates
When updates of status fields are changed by replacement, do we need to insert a new version of the tuple? Insert Only would lead to an overhead (e.g. clearing in FI) Most status fields are binary Uncompressed in-place updates with row timestamp
t = NULL
t = 2009/06/30
Unpaid
89
Paid
Motivation
Inserting new tuples directly into a compressed structure can be expensive
New values can require reorganizing the dictionary Number of bits required to encode all dictionary values can change, attribute vector has to be reorganized
91
Differential Buffer
New values are written to a dedicated differential buffer (Delta) Cache Sensitive B+ Tree (CSB+) used for faster search on Delta
Read
world_population
fname
Attribute Vector
0 0 1 1 0 1 2 3
Write
fname
Dictionary
Anton Hanna Michael Sophie
Attribute Vector
0 1 2 3 0 1 1 2
Dictionary
(compressed)
1 2
0
1 2
Angela
Klaus Andre
CSB+
3
4 5
3
2 1
8 Billion entries 92
up to 50,000 entries
Main Store
Differential Buffer
Inserts of new values are faster, because dictionary and attribute vector does not need to be resorted Range select on differential buffer expensive, based on unsorted dictionary Differential Buffer requires more memory:
no attribute vector compression additional CSB+ Tree for dictionary
93
Tuple Lifetime
Michael moves from Berlin to Potsdam Main Table: world_population
recId fname lname gender country city birthday
0
1 2 3 4 5 ... 8 * 109
Martin
Michael Hanna Anton Ulrike Sophie
Albrecht
Berg Schulze Meyer Schulze Schulze
m
m f m f f
GER
GER GER AUT GER GER
Berlin
Berlin Hamburg Innsbruck Potsdam Rostock
08-051955
03-051970 04-041968 10-201992 09-031977 06-202012 ... 03-121979
Main Store
Differential Buffer
... ... ... ... ... UPDATE world_population Zacharias Perdopolus m GRE Athen SET city=Potsdam WHERE fname= Michael AND lname=Berg
94
Tuple Lifetime
Michael moves from Berlin to Potsdam Main Table: world_population
recId fname lname gender country city birthday
0
1 2 3 4 5 ... 8 * 109
Martin
Michael Hanna Anton Ulrike Sophie
Albrecht
Berg Schulze Meyer Schulze Schulze
m
m f m f f
GER
GER GER AUT GER GER
Berlin
Berlin Hamburg Innsbruck Potsdam Rostock
08-051955
03-051970 04-041968 10-201992 09-031977 06-202012 ... 03-121979
Main Store
Differential Buffer
... ... ... ... ... UPDATE world_population Zacharias Perdopolus m GRE Athen SET city=Potsdam WHERE fname= Michael AND lname=Berg
95
Tuple Lifetime
Michael moves from Berlin to Potsdam Main Table: world_population
recId fname lname gender country city birthday
0
1 2 3 4 5 0 ... 8 * 109
Martin
Michael Hanna Anton Ulrike Sophie Michael
Albrecht
Berg Schulze Meyer Schulze Schulze Berg
m
m f m f f m
GER
GER GER AUT GER GER
Berlin
Berlin Hamburg Innsbruck Potsdam Rostock Potsdam
08-051955
03-051970 04-041968 10-201992 09-031977 06-2003-052012 1970 ... 03-121979
Main Store
Differential Buffer
... ... ... ... ... UPDATE world_population Zacharias Perdopolus m GRE Athen SET city=Potsdam WHERE fname= Michael AND lname=Berg
96
Tuple Lifetime
Problem: Tuples are now available in Main Store and Differential Buffer Tuples of a table are marked by a validity vector to reduce the required amount of reorganization steps
Like an attribute vector for validity
Invalidated tuples stay in the database table, until the next reorganization takes place Search results are reduced using the validity vector 1 bit required per database tuple
97
Tuple Lifetime
Michael moves from Berlin to Potsdam Main Table: world_population
recId fname lname gender country city birthday valid
Main Store
0
1 2 3 4 5 0 ... 8 * 109
Martin
Michael Hanna Anton Ulrike Sophie Michael
Albrecht
Berg Schulze Meyer Schulze Schulze Berg
m
m f m f f m
GER
GER GER AUT GER GER
Berlin
Berlin Hamburg Innsbruck Potsdam Rostock Potsdam
08-051955
03-051970 04-041968 10-201992 09-031977 06-2003-052012 1970 ... 03-121979
1
0 1 1 1 1
... ... ... ... ... UPDATE world_population Zacharias Perdopolus m GRE Athen SET city=Potsdam WHERE fname= Michael AND lname=Berg
Differential Buffer
98
Tuple Lifetime
Michael moves from Berlin to Potsdam Main Table: world_population
recId fname lname gender country city birthday valid
Main Store
0
1 2 3 4 5 0 ... 8 * 109
Martin
Michael Hanna Anton Ulrike Sophie Michael
Albrecht
Berg Schulze Meyer Schulze Schulze Berg
m
m f m f f m
GER
GER GER AUT GER GER
Berlin
Berlin Hamburg Innsbruck Potsdam Rostock Potsdam
08-051955
03-051970 04-041968 10-201992 09-031977 06-2003-052012 1970 ... 03-121979
1
0 1 1 1 1
... ... ... ... ... UPDATE world_population Zacharias Perdopolus m GRE Athen SET city=Potsdam WHERE fname= Michael AND lname=Berg
Differential Buffer
99
Stored Procedures
101
Advantages
Performance
No data transfer between database and application server
Code reduction
Share stored procedure written in a generic way Less code in the application layer
Improved security
No SQL injection possible in stored procedures
102
Our focus
Differential Store
Combined Column Column Column
Indexes
Inverted
Column
Column
Merge
Data aging
Time travel
Logging
Recovery
Log
105
Non-Volatile Memory
Snapshots
Prebuilt aggregates
Raw data
106
109
110
111
dunning data
sum tables
BKPF BSEG
secondary indices
MHNK MHND
change documents
BSAD
BSAK BSAS BSID BSIK BSIS
GLT0
CDHDR
CDPOS
LFC1
KNC1
112
BKPF BSEG
113
Reduction by a Factor 10
DBMS BKPF BSEG 8.7 GB 255 GB 263.7 GB Secondary Indices Sum Tables Complete
114
51.5 GB
115
Dunning Run
Dunning run determines all open and due invoices Customer defined queries on 250M records Current system: 20 min New logic: 1.5 sec
In-memory column store Parallelized stored procedures Simplified Financials
116
Why?
Being able to perform the dunning run in such a short time lowers TCO Add more functionality! Run other jobs in the meantime! - in a multi-tenancy cloud setup hardware must be used wisely
117
118
31000 Entries
119
120
Calculated onthe-fly
121
27s
~19s
1.1s
0.5s
~15s
0.8s
0.4s
done in #1
1.2s
Done in #1
done in #1
140ms
Done in #1
122
Total
~20 minutes
~1 minute
~3.0s
(#3, #4 exec. in parallel)
~1.5s
(#2, #3, #4 exec. in parallel)
Dunning Application
123
Dunning Application
124
Available-to-Promise Check
Can I get enough quantities of a requested product on a desired delivery date? Goal: Analyze and validate the potential of in-memory and highly parallel data processing for Available-to-Promise (ATP) Challenges
Dynamic aggregation Instant rescheduling in minutes vs. nightly batch runs Real-time and historical analytics
Outcome
Real-time ATP checks without materialized views Ad-hoc rescheduling No materialized aggregates
125
In-Memory Available-toPromise
126
Demand Planning
Flexible analysis of demand planning data Zooming to choose granularity Filter by certain products or customers Browse through time spans Combination of location-based geo data with planning data in an in-memory database External factors such as the temperature, or the level of cloudiness can be overlaid to incorporate them in planning decisions 127
GORFID
HANA for Streaming Data Processing Use Case: In-Memory RFID Data Management Evaluation of SAP OER Prototypical implementation of:
RFID Read Event Repository on HANA Discovery Service on HANA (10 Billion data records with ca. 3 seconds response time) Frontends for iPhone, iPad2
Key Findings:
HANA is suited for streaming data (using bulk inserts) Analytics on streaming data is now possible
128
129
Thanks!
Questions?