Keď už relačná databáza nestačí...
Peter Krátky
1463736028948;640;542;mouseover;486;447;div;
1463736028997;641;541;mousemove;487;446;div;
1463736029010;642;541;mousemove;487;446;div;
1463736029015;642;540;mousemove;487;445;div;
1463736029064;643;539;mousemove;488;444;div;
1463736029115;644;539;mousemove;489;444;div;
1463736029123;645;538;mousemove;490;443;div;
1463736029137;645;537;mousemove;490;442;div;
1463736029139;646;537;mousemove;490;442;div;
1463736029147;647;537;mousemove;491;442;div;
1463736029153;647;536;mousemove;491;441;div;
1463736029159;647;535;mousemove;491;440;div;
1463736029167;648;535;mousemove;492;440;div;
1463736029191;649;534;mousemove;493;439;div;
1463736029196;649;533;mousemove;493;438;div;
1463736029225;650;532;mousemove;493;437;div;
1463736029239;650;531;mouseout;493;436;div;
1463736029239;650;531;mouseover;493;436;p;
1463736029239;650;531;mousemove;493;436;p;
1463736029241;650;530;mousemove;493;435;p;
1463736029242;651;530;mousemove;494;435;p;
1463736029247;651;529;mousemove;494;434;p;
1463736029252;652;528;mousemove;495;433;p;
1463736029255;653;528;mousemove;496;433;p;
1463736029259;653;527;mousemove;496;432;p;
1463736029262;653;526;mousemove;496;431;p;
1463736029268;654;525;mousemove;496;430;p;
1463736029274;654;524;mousemove;496;429;p;
1463736029276;655;524;mousemove;497;429;p;
1463736029281;655;523;mousemove;497;428;p;
1463736029283;655;522;mousemove;497;427;p;
1463736029293;655;521;mousemove;497;426;p;
1463736029297;656;521;mousemove;498;426;p;
1463736029303;656;520;mousemove;498;425;p;
1463736029307;657;519;mousemove;499;424;p;
1463736029313;657;518;mousemove;499;423;p;
1463736029319;657;517;mousemove;499;422;p;
1463736029325;658;516;mouseout;499;421;p;
1463736029325;658;516;mouseover;499;421;div;
1463736029325;658;516;mousemove;499;421;div;
1463736029328;658;515;mousemove;499;420;div;
1463736029330;658;514;mousemove;499;419;div;
1463736029335;658;513;mousemove;499;418;div;
1463736029341;659;511;mousemove;500;416;div;
1463736029345;659;510;mousemove;500;415;div;
1463736029349;659;509;mousemove;500;414;div;
1463736029350;659;508;mousemove;500;413;div;
1463736029353;659;507;mousemove;500;412;div;
1463736029355;660;506;mousemove;501;411;div;
1463736029356;660;505;mousemove;501;410;div;
1463736029358;661;504;mouseout;502;409;div;
1463736029359;661;504;mouseover;502;409;p;
1463736029359;661;504;mousemove;502;409;p;
1463736029363;661;502;mousemove;502;407;p;
1463736029366;661;501;mousemove;502;406;p;
1463736029369;662;499;mousemove;503;404;p;
1463736029373;662;497;mousemove;503;402;p;
1463736029375;662;496;mousemove;503;401;p;
1463736029379;663;495;mousemove;503;400;p;
1463736029381;663;494;mousemove;503;399;p;
1463736029382;663;493;mousemove;503;398;p;
1463736029386;663;492;mousemove;503;397;p;
1463736029388;663;491;mousemove;503;396;p;
1463736029391;663;490;mousemove;503;395;p;
1463736029395;663;489;mousemove;503;394;p;
1463736029397;663;488;mousemove;503;393;p;
1463736029403;663;487;mousemove;503;392;p;
1463736029407;663;486;mousemove;503;391;p;
1463736029409;664;486;mousemove;504;391;p;
1463736029410;664;485;mousemove;504;390;p;
1463736029413;664;484;mousemove;504;389;p;
1463736029419;664;483;mousemove;504;388;p;
1463736029424;664;482;mousemove;504;387;p;
1463736029431;664;481;mousemove;504;386;p;
1463736029437;664;480;mousemove;504;385;p;
1463736029509;663;480;mousemove;503;385;p;
1463736029515;662;480;mousemove;503;385;p;
1463736029523;661;480;mousemove;502;385;p;
Jednotlivec vygeneruje ~100kB za minútu
Relačná databáza (RDBMS)
NoSQL databázy
Stĺpcové
Dokumentové
Grafové
Key-value
Dokumentové databázy
{
"Id":1002,
"Product": {
"Name": "Samsung S8"
"Price": 500.0,
"Category": "Smartphones"
"Camera": {
"Resolution": "12 Mpix",
"Autofocus": true,
}
}}
{
"Id":26572,
"Product": {
"Name": "Whirlpool AWE 50510"
"Price": 300.0,
"Category": "Washing machines"
"Energy data": {
"Class": "A++",
"Input": 2.3 W,
}
}}
Kľúč-hodnota databázy (key-value)
Grafové databázy
Name: John
Age: 32
Name: Peter
Age: 29
Name: Martin
Age: 40
knows
knows
Sĺpcové databázy
Peter
Jane
Martin
Mark
Daniela
...
male
female
male
male
female
...
29
29
32
28
35
...
name
gender
age
Ako sme vytvorili vlastnú špecializovanú databázku
„ReachEngine“
Úloha: počet unikátnych ľudí podľa atribútov+geo
gender=male
AND age=18-25
AND age=26-35
AND home_locationXA > =149000
AND home_locationXB <= 149500
AND home_locationYA > =115000
AND home_locationYB <= 115200
hardware=Android
AND work_locationXB <= 149500
AND work_locationXA > =149000
AND work_locationYA > =115000
AND work_locationYB <= 115200
...
∩
∩
userId x18A y18A gender age
14241 144218 90754 Male 35 - 45
27813 144984 90384 Male 26 - 35
7276 143496 90832 Female 55 - 65
25577 143564 90956 Female 35 - 45
61 143560 90984 Male 35 - 45
9881 146464 90240 Female 35 - 45
8612 144640 89792 Female 35 - 45
25897 144944 90324 Male 26 - 35
9954 143616 90960 Female 45 - 55
26029 144672 89848 Female 65 -
26317 146652 90408 Male 35 - 45
10704 146492 90320 Male 26 - 35
19848 143516 90956 Male 26 - 35
19029 144226 90780 Female 45 - 55
14087 146484 90412 Male 35 - 45
478 143544 90928 Male 18 - 26
24514 143568 91056 Female 35 - 45
23208 143548 91048 Male 26 - 35
14172 143564 91008 Female 55 - 65
5583 143548 90922 Female 45 - 55
24565 146560 90336 Male 26 - 35
18026 143472 90940 Male 26 - 35
9443 146596 90016 Female 65 -
21025 144720 89776 Female 45 - 55
14051 146592 90328 Female 35 - 45
2095 143500 90900 Male 26 - 35
11652 143448 90816 Male 35 - 45
3244 146544 90368 Male 26 - 35
179 143444 90912 Male 35 - 45
2521 146524 90308 Male 26 - 35
Vhodná stĺpcová databáza
3 podproblémy:
[„ReachEngine“]
Výber podľa atribútov
INDEX
DATA
muž
žena
<30
>30
<30
>30
5
4
8
7
2
1
6
3
6
1
2
8
5
6
4
3
pohlavie
vek
VRSTVA 1
muž
žena
<30
>30
<30
>30
5
4
8
7
2
1
6
3
6
1
2
8
5
6
4
3
INDEX
DATA
pohlavie
vek
1
2
3
4
5
6
7
8
9
10
ZOZNAM USEROV
VRSTVA 1
muži, >30
áno
nie
Android
iPhone
Android
iPhone
5
4
8
7
2
1
6
3
6
1
2
8
5
6
4
3
INDEX
USERI
dáta
hardware
VRSTVA 2
Android aj iPhone, NEpoužívajú dáta
1
2
3
4
5
6
7
8
9
10
ZOZNAM USEROV
áno
nie
5
4
8
7
2
1
6
3
6
1
2
8
5
6
4
3
INDEX
USERI
dáta
národnosť
VRSTVA 2
Android aj iPhone, NEpoužívajú dáta
1
2
3
4
5
6
7
8
9
10
ZOZNAM USEROV
Android
iPhone
Android
iPhone
vlákno 1
vlákno 2
vlákno 3
1
2
3
4
5
6
7
8
9
10
ZOZNAM USEROV
Paralelizácia
[„ReachEngine“]
Geografický výber
Priestorový index
1000
3
2
1
6
7
3
4
8
7
1
2
8
4
3
9
INDEX
USERI
X
1001
1002
1003
1004
1005
1006
1007
1000
3
2
1
6
7
3
4
8
7
1
2
8
4
3
9
INDEX
USERI
Y
1001
1002
1003
1004
1005
1006
1007
Priestorový index
1000
3
2
1
6
7
3
4
8
7
1
2
8
4
3
9
INDEX
USERI
f(X,Y)
1001
1002
1003
1004
1005
1006
1007
Quadkey
zdroj: msdn.microsoft.com
Quadkey
(
qk >= 26525438207
AND qk <= 26525466623
) --approximate filtering
AND �(
x18b > 143455
AND y18b > 90911
AND x18a < 143615
AND y18a < 91007
) --finer filtering�
1000
3
2
1
6
7
3
4
8
7
1
2
8
4
3
9
2
INDEX
USERI
Quadkey (x,y)
VRSTVA 1
GEO výber
1
2
3
4
5
6
7
8
9
10
ZOZNAM USEROV
1001
1002
1003
1004
1005
1006
1007
1
2
3
4
5
6
7
8
9
10
ZOZNAM USEROV
Vektorizácia
Porovnanie
100 dopytov
Zhrnutie
Stay in touch
Instarea s.r.o. �29. Augusta 36/A
811 09 Bratislava
www.instarea.com
Peter Krátky
Data Scientist & Software Developer
Instarea
peter.kratky@instarea.com
https://www.linkedin.com/in/peterkratky/
Thank you