Documente Academic
Documente Profesional
Documente Cultură
)
)
BOGDAN GEORGE TUDORICA
)
CALATORIE
PRIN LUMEA BIG DATA
9 786062 306052
”Călătorie prin lumea Big Data”, scrisă
de Bogdan George Tudorică, este disponibilă
sub o Licență internațională Creative
Commons Attribution 4.0.
CALATORIE
PRIN LUMEA BIG DATA
Editura PRINTECH
2016
Editura PRINTECH
© Copyright 2016
Toate drepturile prezentei editii sunt rezervate autorului.
Nicio parte din aceasta lucrare nu poate fi reprodusa,
stocata sau transmisa indiferent prin ce forrna, ftira acordul
prealabil scris al autorului.
Cuprins
Introducere ................................................................................ 3
Partea întâi – trecut și prezent în Big Data.............................. 13
1 Aspecte privind modalitățile de structurare a volumelor
mari de date ......................................................................... 13
1.1 Organizarea structurată a volumelor mari de date.
Baze de date relaționale. Depozite de date ..................... 13
1.2 Organizarea semistructurată a volumelor mari de
date. Baze de date NoSQL (Not Only SQL) ................... 47
1.3 Concluzii parţiale .................................................. 64
2 Prelucrarea volumelor mari de date ............................ 65
2.1 Suportul fizic utilizat pentru prelucrarea volumelor
mari de date ..................................................................... 65
2.2 Prelucrarea volumelor mari de date structurate .. 119
2.3 Măsurarea performanței în prelucrarea volumelor
mari de date ................................................................... 150
2.4 Concluzii parţiale ................................................ 169
Partea a doua – viitorul Big Data .......................................... 171
3 Soluții de structurare a volumelor mari de date în
sistemele NoSQL .............................................................. 171
3.1 Trecerea de la organizarea structurată a volumelor
mari de date la organizarea semistructurată .................. 171
3.2 Soluții de organizare semistructurată a volumelor
mari de date ................................................................... 184
3.3 Implementarea unei soluții de organizare
semistructurată a volumelor mari de date ..................... 191
3.4 Concluzii parţiale ................................................ 201
4 Soluții de prelucrare a volumelor mari de date în
sistemele NoSQL .............................................................. 203
4.1 Soluții de prelucrare a volumelor mari de date
organizate semistructurat. Soluţii hibride depozit de date /
bază de date NoSQL ..................................................... 203
1
4.2 Implementarea unei soluții de măsurare a
performanței în prelucrarea volumelor mari de date
organizate semistructurat .............................................. 242
4.3 Concluzii parţiale ................................................ 260
Partea a treia - Abordarea programatică a Big Data ............. 261
5 Proiectarea și implementarea unei aplicații de interfață
pentru organizarea și prelucrarea volumelor mari de date
semistructurate .................................................................. 261
5.1 Proiectarea aplicației. Facilități urmărite ........... 264
5.2 Implementarea aplicației ASMDB. Rezultate
obținute ......................................................................... 277
5.3 Analiza stadiului la care a ajuns aplicaţia ASMDB
(concluzii parţiale) ........................................................ 307
Concluzii ............................................................................... 311
Referințe bibliografice .......................................................... 315
Lista figurilor și a tabelelor ................................................... 327
2
Călătorie prin lumea Big Data
Introducere
Scopul lucrării de față, intitulată „Călătorie prin lumea
Big Data”, este studierea modului în care creşterea volumului
de date influenţează operaţiile uzuale efectuate asupra datelor
şi toate procedurile tehnologice asociate acestor operaţii. De
asemenea, lucrarea îşi propune găsirea unor metode de
organizare a volumelor mari de date (Big Data) de aşa natură
încât siguranţa şi performanţa în utilizarea acestora să crească.
Trebuie subliniat că în cadrul conceptului de volume
mari de date avut în vedere în această lucrare au fost incluse
toate formele de organizare a datelor care pot duce la
acumularea de date în cantităţi care să justifice eticheta de
„volum mare”, nu numai aplicaţiile considerate tradiţional ca
fiind bazate pe cantităţi mari de date (ex. depozite de date).
Autorul a apelat la această extindere datorită faptului că, în
ultimii ani, aceste aplicaţii tradiţionale au fost depăşite cu mult
în ceea ce priveşte volumele de date vehiculate de către tipuri
de aplicaţii nou apărute, fie că e vorba de aplicaţii web, fie că e
vorba de aplicaţii cloud, sau de diverse alte aplicaţii bazate pe
tehnologii asemănătoare. O astfel de mutare a centrului de
greutate a avut loc şi în domeniul bazelor de date care suportă
aceste aplicaţii, unde au căpătat o prioritate mare bazele de date
NoSQL.
Domeniul organizării datelor în general este un
domeniu intens studiat, fiind de altfel unul dintre cele mai
vechi domenii din informatică. Astfel, sunt bine cunoscute
aspectele legate de stocarea datelor pe diverse suporturi de
stocare, împreună cu toate detaliile ce decurg din aceasta (mod
şi tehnologii de stocare, densitate de stocare, calităţi şi
dezavantaje ale diverselor tehnologii) şi respectiv de
organizarea datelor (formate de fişiere, colecţii, baze de date),
metode de optimizare a acesteia (compresia datelor pentru
3
Tudorică Bogdan George
4
Călătorie prin lumea Big Data
5
Tudorică Bogdan George
6
Călătorie prin lumea Big Data
Vocabular utilizat
9
Tudorică Bogdan George
1
Termenul nu a mai fost tradus / utilizat în limba română până acum.
Consider că traducerea alternativă „consistenţă eventuală” induce un sens
eronat în sensul că presupune şi cazul în care consistenţa nu ar fi atinsă.
10
Călătorie prin lumea Big Data
11
Tudorică Bogdan George
Mulţumiri
12
Călătorie prin lumea Big Data
Consideraţii generale
13
Tudorică Bogdan George
14
Călătorie prin lumea Big Data
15
Tudorică Bogdan George
Scalabilitatea
17
Tudorică Bogdan George
18
Călătorie prin lumea Big Data
19
Tudorică Bogdan George
20
Călătorie prin lumea Big Data
21
Tudorică Bogdan George
22
Călătorie prin lumea Big Data
23
Tudorică Bogdan George
24
Călătorie prin lumea Big Data
Oracle Clusterware
Începând de la versiunea Oracle Database 10g, Oracle
furnizează Oracle Clusterware (Figura 2), o soluţie portabilă de
clusterizare integrată şi proiectată specific pentru Oracle
Database. Oracle Clusterware oferă o soluţie completă de
clusterizare şi acceptă orice aplicaţii proiectate pentru Oracle
10g. Instalarea Oracle Clusterware trebuie să premeargă
oricărei implementări Oracle RAC (deşi există şi terţe soluţii
care suportă Oracle RAC, chiar şi în prezenţa acestora, Oracle
Clusterware este, încă, utilizat ca interfaţă de administrare).
Oracle Clusterware monitorizează şi administrează bazele de
date Oracle Real Application Cluster. Atunci când un server
din Server Pool este pornit, toate instanţele, listenerii şi
serviciile pentru acesta sunt automat pornite. Dacă o instanţă
eşuează, Oracle Clusterware va restarta automat instanţa astfel
încât serviciul să fie restaurat încă înainte de anunţarea
administratorului bazei de date.
Odată cu Oracle Database 10g Release 2, Oracle a
adăugat la produsele sale şi un API de înaltă disponibilitate
(High Availability API) astfel ca aplicaţiile non-Oracle să
poată fi administrate prin framework-ul de disponibilitate
ridicată furnizat de Oracle Clusterware.
27
Tudorică Bogdan George
28
Călătorie prin lumea Big Data
30
Călătorie prin lumea Big Data
31
Tudorică Bogdan George
Unitate de lucru
O unitate de lucru (UOW – Unit of Work) este o
singură tranzacţie logică care este alcătuită dintr-o secvenţă de
declaraţii în care fie toate operaţiile sunt îndeplinite cu succes,
fie întreaga secvenţă ca întreg este considerată eşuată.
32
Călătorie prin lumea Big Data
33
Tudorică Bogdan George
34
Călătorie prin lumea Big Data
Server de aplicaţii
Program de aplicaţie
Protocolul DRDA DRDA
Solicitant de aplicaţie Sistem de gestiune a
DRDA bazelor de date
35
Tudorică Bogdan George
36
Călătorie prin lumea Big Data
38
Călătorie prin lumea Big Data
39
Tudorică Bogdan George
40
Călătorie prin lumea Big Data
41
Tudorică Bogdan George
42
Călătorie prin lumea Big Data
43
Tudorică Bogdan George
44
Călătorie prin lumea Big Data
45
Tudorică Bogdan George
46
Călătorie prin lumea Big Data
47
Tudorică Bogdan George
48
Călătorie prin lumea Big Data
49
Tudorică Bogdan George
50
Călătorie prin lumea Big Data
52
Călătorie prin lumea Big Data
53
Tudorică Bogdan George
Vizualizări
56
Călătorie prin lumea Big Data
Sistem distribuit
57
Tudorică Bogdan George
58
Călătorie prin lumea Big Data
59
Tudorică Bogdan George
60
Călătorie prin lumea Big Data
61
Tudorică Bogdan George
62
Călătorie prin lumea Big Data
63
Tudorică Bogdan George
65
Tudorică Bogdan George
67
Tudorică Bogdan George
68
Călătorie prin lumea Big Data
2
Tabel de sinteză. Valorile sunt obţinute din specificaţiile
supercalculatoarelor analizate
69
Tudorică Bogdan George
7/1/1996
2/1/1998
9/1/1999
4/1/2001
11/1/2002
6/1/2004
1/1/2006
8/1/2007
3/1/2009
5/1/2012
12/1/1994
10/1/2010
Windows
70
Călătorie prin lumea Big Data
71
Tudorică Bogdan George
3
Tabel de sinteză. Valorile sunt obţinute din specificaţiile
supercalculatoarelor analizate
72
Călătorie prin lumea Big Data
4
Tabel de sinteză. Valorile sunt obţinute din specificaţiile
supercalculatoarelor analizate
73
Tudorică Bogdan George
Series
"Interlagos"
Opteron 6100-
series "Magny- 19 3.8 5,505,506 7,581,114 815,432
Cours"
Xeon 5500-
series 18 3.6 3,342,090 4,421,213 328,948
(Nehalem-EP)
POWER7 12 2.4 4,907,650 6,153,312 200,896
Xeon 5400-
series 10 2 2,442,592 3,378,569 273,157
"Harpertown"
Opteron Quad
6 1.2 778,812 1,022,993 116,736
Core
POWER6 4 0.8 446,123 593,178 31,552
PowerPC 450 4 0.8 1,184,521 1,420,492 417,792
Intel Xeon E5
3 0.6 34,488,963 55,599,648 3,152,280
(IvyBridge)
SPARC64 IXfx 2 0.4 1,209,700 1,317,077 89,088
Opteron Six
2 0.4 1,033,900 1,335,240 128,400
Core
Opterons 6300
Series ("Abu 1 0.2 97,574 114,509 10,224
Dhabi")
NEC 1 0.2 122,400 131,072 1,280
SPARC64 VII 1 0.2 110,600 121,282 12,032
Xeon 5300-
series 1 0.2 132,800 172,608 14,384
"Clovertown"
SPARC64
1 0.2 10,510,000 11,280,384 705,024
VIIIfx
74
Călătorie prin lumea Big Data
Xeon 5500-
series 1 0.2 1,050,000 1,254,550 138,368
(Nehalem-EX)
ShenWei 1 0.2 795,900 1,070,160 137,200
În acelaşi timp, problemele a căror soluţionare impune
utilizarea unei puteri mari de calcul corespund, de fapt,
formelor de paralelizare cu „cu granulaţie mare” care nu
necesită transferuri masive de informaţie între noduri. Din
acest motiv, în cadrul aplicaţiilor moderne, supercalculatoarele
propriu-zise au fost înlocuite, de regulă, de sisteme cluster
alcătuite din sisteme de calcul „comerciale”.
Aplicaţii
76
Călătorie prin lumea Big Data
77
Tudorică Bogdan George
Arhitecturi
78
Călătorie prin lumea Big Data
între maşini care pot servi atât ca clienţi, cât şi ca servere, după
necesităţi. Nu este un tip de arhitectură foarte intens folosit.
Arhitecturi strâns cuplate (clustere) - se referă la un
grup de maşini de calcul care lucrează împreună, rulând un
singur proces în paralel. Taskul este subdivizat în părţi care
sunt rezolvate individual de către maşinile componente, după
care rezultatele sunt combinate pentru a constitui rezultatul
final.
Arhitectura pe trei nivele - sistemele pe trei nivele
mută logica de lucru de pe maşina client, pe un strat
intermediar pentru a putea fi utilizaţi clienţi fără stări distincte
(stateless). Acest lucru simplifică instalarea aplicaţiilor şi, de
aceea, majoritatea aplicaţiilor web sunt de acest tip.
Arhitectură pe n-nivele - se referă la aplicaţii web care
trimit cererile lor către alte servicii. De obicei, acest tip de
arhitectură este utilizată în aplicaţiile cloud sau de tip online
office.
Arhitecturi bazate pe spaţiu – sistemele sunt bazate
pe infrastructuri care creează prin virtualizare un singur spaţiu
de adrese. Datele sunt replicate pe maşinile componente ale
arhitecturii în mod transparent, după necesităţile aplicaţiei.
Maşina virtuală generată este independentă temporal, spaţial şi
din punct de vedere al referinţei faţă de maşinile componente.
Ca şi arhitectura peer-to-peer, nu este un tip de arhitectură
foarte intens folosit.
În continuare vor fi analizate cele trei categorii care
constituie în viziunea autorului cele trei subdiviziuni majore ale
sistemelor distribuite: sistemele cluster, sistemele grid şi
sistemele cloud.
79
Tudorică Bogdan George
Sisteme cluster
80
Călătorie prin lumea Big Data
Tehnologii
81
Tudorică Bogdan George
82
Călătorie prin lumea Big Data
5
Tabel de sinteză. Valorile sunt obţinute din specificaţiile
supercalculatoarelor analizate
83
Tudorică Bogdan George
1/1/2010
2/1/2012
12/1/2007
10/1/2003
11/1/2005
Constelaţie
Sisteme grid
84
Călătorie prin lumea Big Data
Definiţii
85
Tudorică Bogdan George
86
Călătorie prin lumea Big Data
87
Tudorică Bogdan George
88
Călătorie prin lumea Big Data
89
Tudorică Bogdan George
90
Călătorie prin lumea Big Data
91
Tudorică Bogdan George
92
Călătorie prin lumea Big Data
Sisteme cloud
93
Tudorică Bogdan George
94
Călătorie prin lumea Big Data
95
Tudorică Bogdan George
96
Călătorie prin lumea Big Data
97
Tudorică Bogdan George
98
Călătorie prin lumea Big Data
99
Tudorică Bogdan George
Avantaje
100
Călătorie prin lumea Big Data
101
Tudorică Bogdan George
102
Călătorie prin lumea Big Data
Aplicaţie (SaaS)
Platformă (PaaS)
Hardware şi software la furnizor
Infrastructură (IaaS)
Server
Figura 12 este reprezentat un model al unui sistem
cloud, cu cele 5 componente tehnice şi cele 2 entităţi
participante la tranzacţie.
Hardware şi software la utilizator Client (CdaaS)
Aplicaţie (SaaS)
Platformă (PaaS)
Hardware şi software la furnizor
Infrastructură (IaaS)
Server
Figura 12 – Model generic al unui sistem cloud
103
Tudorică Bogdan George
104
Călătorie prin lumea Big Data
105
Tudorică Bogdan George
106
Călătorie prin lumea Big Data
6
Rezultat al analizei efectuate pe datele din SCS, Development over Time,
Top 500 SuperComputer Sites, 2013
7
Tabel de sinteză. Valorile sunt obţinute din specificaţiile
supercalculatoarelor analizate
107
Tudorică Bogdan George
500
N/A 446 89.2 148,187,171 200,527,111 13,894,107
Nvidia
31 6.2 12,106,171 24,481,254 905,202
Fermi
Intel Xeon
11 2.2 42,131,863 67,790,175 3,830,503
Phi
Nvidia
8 1.6 20,094,200 30,957,401 645,340
Kepler
ATI Radeon 3 0.6 938,700 1,832,963 62,832
Hybrid 1 0.2 196,234 262,560 8,412
Termeni utilizaţi
108
Călătorie prin lumea Big Data
109
Tudorică Bogdan George
110
Călătorie prin lumea Big Data
111
Tudorică Bogdan George
Prelucrarea stream-urilor
112
Călătorie prin lumea Big Data
Resurse computaţionale
113
Tudorică Bogdan George
Texturile ca stream
Kernel-urile
114
Călătorie prin lumea Big Data
Controlul execuţiei
115
Tudorică Bogdan George
116
Călătorie prin lumea Big Data
Structuri de date
117
Tudorică Bogdan George
118
Călătorie prin lumea Big Data
119
Tudorică Bogdan George
Modernitatea soluţiei
Facilităţi oferite
Figura 13 – Prezenţa pe piaţă a diverselor soluţii comerciale de tip
depozit de date (februarie 2016)
În evoluţia domeniului depozitelor de date s-au
înregistrat două perioade importante: perioada depozitelor date
tradiţionale, cunoscută şi sub numele şi generaţia 1.0, care a
început în momentul apariţiei celor două definiţii şi filosofii
concurente ale depozitelor de date elaborate de William H.
Inmon şi Ralph Kimball (Inmon, Building the Data Warehouse,
2002) (Kimball & Ross, 2002) şi perioada celei de-a doua
generaţii de depozite de date, denumită şi generaţia 2.0,
descrisă de Inmon (Inmon, DW 2.0 - Architecture for the Next
120
Călătorie prin lumea Big Data
Arhitectura datelor
2. analiza datelor
Datele din diverse surse OLTP sunt analizate pentru a
evidenţia tipurile de date, regulile de afacere, calitatea
şi granularitatea datelor. La acest pas vor fi descoperite
şi documentate orice fel de cerinţe speciale.
3. modelarea datelor
Modelele datelor din aplicaţiile OLTP sursă sunt
mapate la un model al depozitului de date care, de
obicei, este un model relaţional, aşa cum s-a precizat
anterior. Modelul destinaţie poate fi un model de date în
FN 3, o schemă stea / galaxie sau un „fulg de zăpadă”.
De asemenea, în această etapă sunt proiectate zonele
cheie din depozitul de date, în funcţie de subiectul
analizelor dorite şi, respectiv, relaţiile între aceste zone.
Tot în această etapă, se definesc ierarhiile, se realizează
proiectarea fizică a bazei de date utilizate, se creează
zona de acumulare a datelor şi schema depozitului de
date. În cazul în care va fi utilizat un Operational Data
Store (ODS), cunoscut şi sub numele de magazin de
date operaţional care reprezintă o bază de date care
integrează date din multiple surse, atunci se defineşte şi
se creează modelul ODS-ului.
4. mutarea datelor
Această etapă presupune proiectarea, dezvoltarea şi
implementarea activităţilor de extragere, încărcare şi
transformare a datelor. Ea este împărţită în trei procese
distincte: extragerea datelor din surse, încărcarea zonei
de acumulare, extragerea datelor din zona de acumulare
şi încărcarea depozitului de date, precum şi
122
Călătorie prin lumea Big Data
123
Tudorică Bogdan George
Infrastructură
124
Călătorie prin lumea Big Data
125
Tudorică Bogdan George
Performanţă
126
Călătorie prin lumea Big Data
127
Tudorică Bogdan George
128
Călătorie prin lumea Big Data
129
Tudorică Bogdan George
o este centralizată;
o aplică global regulile şi controlul;
o permite actualizarea datelor într-un singur
punct;
o prezintă o performanţă ridicată;
o poate fi construită în mai mulţi paşi;
Dezavantaje:
o riscuri ridicate de defectare;
o operaţiile de îmbunătăţire a calităţii datelor pot
întârzia procesarea datelor şi trimiterea către
depozitul de date;
o întreţinerea este scumpă;
o necesită o infrastructură foarte scalabilă.
132
Călătorie prin lumea Big Data
133
Tudorică Bogdan George
Dezavantaje:
o datamart-urile au raza de acţiune limitată la
subiectul pentru care au fost construite;
o trebuie ca toate cerinţele să fie îndeplinite
înainte de pornirea propriu-zisă a proiectului;
o crearea unor fluxuri operaţionale
corespunzătoare pentru analize complexe de
inteligenţa afacerii este complicată.
135
Tudorică Bogdan George
DW 2.0
137
138
Date tranzacţionale
Date
interactive
Actualizate
Aplicaţie
Aplicaţie
Aplicaţie
Aplicaţie
Tudorică Bogdan George
în timp real
Sumar
Subiecte
propriu-
Date
zise
Date detaliate snapshot
Interne,
afacere
Date de
continue
externe
Referinţe, Date
Date integrate Text
date de
Actualizate colectat
master profil
Subiect
Subiect
Subiect
Subiect
Identificator
Metadate locale
text
Subiect
Subiect
Subiect
Sumar
Legături
Text la
subiect
Subiecte
propriu-
Date
zise
Date detaliate snapshot
Interne,
afacere
Date de
continue
externe
Referinţe, Date
Date near line Text
date de
Recente colectat
master profil
Subiect
Subiect
Subiect
Subiect
Identificator
iect
iect
iect
e metadate al întreprinderii
Metadate locale
hnice
text
Referinţe,
Date integrate Text
date de
Actualizate colectat
master profil
Subiec
Subiec
Subiec
Subiec
Identificator
Metadate
text
Subiect
Subiect
Subiect
Sumar
Legături
Date tehnice
Text la
subiect
Subiecte
propriu-
Date
zise
Date detaliate snapshot
Interne,
afacere
Date de
continue
externe
Referinţe, Date
Date near line Text
date de
Recente colectat
master profil
Subiect
Subiect
Subiect
Subiect
Identificator
Metadate locale
text
Subiect
Subiect
Subiect
Sumar
Legături
Date tehnice
Text la
Depozitul de metadate al întreprinderii
subiect
Subiecte
propriu-
Date
zise
Date detaliate snapshot
Interne,
afacere
Date de
continue
externe
Referinţe, Date
Date arhivate Text
date de
Mai vechi colectat
master profil
Subiect
Subiect
Subiect
Subiect
Identificator
Metadate locale
text
Subiect
Subiect
Subiect
Sumar
Text la
subiect
Călătorie prin lumea Big Data
139
Tudorică Bogdan George
DSS 2.0
140
Călătorie prin lumea Big Data
141
Tudorică Bogdan George
142
Călătorie prin lumea Big Data
145
Tudorică Bogdan George
146
Călătorie prin lumea Big Data
Soluţii hardware
4% 12%
16%
Soluţii hardware +
software
Soluţii virtualizate
41%
Acces la date 33%
31%
Avantaje competitive 30%
30%
Compatibilitate 27%
21%
Valoare adăugată / noi… 19%
17%
Management 15%
14%
Down-time / disponibilitate 12%
0% 10% 20% 30% 40% 50%
147
Tudorică Bogdan George
148
Călătorie prin lumea Big Data
149
Tudorică Bogdan George
150
Călătorie prin lumea Big Data
151
Tudorică Bogdan George
152
Călătorie prin lumea Big Data
153
Tudorică Bogdan George
154
Călătorie prin lumea Big Data
155
Tudorică Bogdan George
TPC-C
156
Călătorie prin lumea Big Data
157
Tudorică Bogdan George
TPC-H
158
Călătorie prin lumea Big Data
159
Tudorică Bogdan George
160
Călătorie prin lumea Big Data
161
Tudorică Bogdan George
O analiză calitativă
162
Călătorie prin lumea Big Data
163
Tudorică Bogdan George
O analiză cantitativă
164
Călătorie prin lumea Big Data
165
Tudorică Bogdan George
166
Călătorie prin lumea Big Data
170
Călătorie prin lumea Big Data
171
Tudorică Bogdan George
asigurate simultan (ci numai două câte două) (Gilbert & Nancy,
2002).
Ţinând cont de cele afirmate de această teoremă, există
doar câteva posibilităţi de implementare a aplicaţiilor în
sisteme distribuite şi anume:
renunţarea la toleranţa la partiţionare, prin
amplasarea tuturor componentelor necesare pentru o
tranzacţie pe o singură maşină. Acest lucru nu evită
imobilizarea completă a sistemului prin defectarea /
blocarea maşinii gazdă, dar sunt eliminate măcar
efectele de desincronizare între partiţii. Bineînţeles,
acest lucru presupune şi faptul că sistemul nu este
de fapt distribuit, iar scalabilitatea este sever
limitată (în subcapitolele anterioare s-a afirmat şi
ilustrat cu date statistice faptul că toate sistemele
înalt scalabile sunt sisteme distribuite);
Renunţarea la disponibilitate: o altă manieră de
lucru este oprirea serviciului de fiecare dată când
apare un eveniment nedorit de partiţionare până
când datele sunt din nou consistente. Controlul unui
sistem care operează în acest mod creşte
exponenţial în complexitate cu numărul de noduri.
În plus, în foarte puţine cazuri se poate renunţa la
utilizarea sistemului chiar şi pentru perioade scurte
de vreme;
Renunţarea la consistenţă: în multe cazuri unele
inconsistenţe pot fi tolerate transformându-le în
excepţii de afacere care vor fi tratate prin diverse
mecanisme ale intreprinderii (relaţii cu clienţii etc.);
172
Călătorie prin lumea Big Data
173
Tudorică Bogdan George
Interfeţe
Limbaje specifice
REST Map Reduce Get / Put Thrift
ale API-urilor
174
Călătorie prin lumea Big Data
Persistenţa datelor
Combinaţie de Dispozitive externe
Bazată pe memorie Bazată pe disc
memorie şi disc inserate în sistem
175
Tudorică Bogdan George
176
Călătorie prin lumea Big Data
Accesul la informaţie
Modelul informaţiei
•Mai multe operaţii de cautare
bazate pe informaţie limitată •Mai multe atribute per
în locul unui număr mai redus entitate
de interogări complexe •Necesitatea de a stoca din ce
•Mai mulţi utilizatori în ce mai multă "informaţie
•Mai predictibilitate în adiţională"
modelele de acces •Mai multă lipsă de structură
•Înalta disponibilitate este Datele •Entităţile sunt mai
obligatorie pentru ca intreprin dependente în natură, uneori
utilizatorii să poată avea în ierarhii pe multiple nivele
acces oricând este nevoie derii
Modelul de stocare
178
Călătorie prin lumea Big Data
179
Tudorică Bogdan George
180
Călătorie prin lumea Big Data
Flexibilitatea afacerii
Abilitatea de a rula pe sisteme "de pe raft" Perfomanţă mai bună (Timp de căutare
(reduce investiţiile şi costurile de operare) mai scăzut pentru date dsitribuite)
181
Tudorică Bogdan George
182
Călătorie prin lumea Big Data
184
Călătorie prin lumea Big Data
Provocări
• Starea incipientă a NoSQL
Bugetare tactice Economia
de scară
• Lipsa de standarde
Lipsa de
încredere
Selecţia Suportul
produsului producţiei
185
Tudorică Bogdan George
186
Călătorie prin lumea Big Data
187
Tudorică Bogdan George
188
Călătorie prin lumea Big Data
Maturitate
189
Tudorică Bogdan George
190
Călătorie prin lumea Big Data
Concluzii
191
Tudorică Bogdan George
Tehnologie
Dezvoltare iterativă
(Demonstraţie → Testare → Punere la punct → Extinde →
Standardizare)
Proces
192
Călătorie prin lumea Big Data
193
Tudorică Bogdan George
194
Călătorie prin lumea Big Data
195
Tudorică Bogdan George
8
tabel construit din specificaţiile produselor analizate
196
Călătorie prin lumea Big Data
la 5)
Suport 10gen.com Basho Hypertable Inc Cloudera
comercial Technologies
198
Călătorie prin lumea Big Data
199
Tudorică Bogdan George
Dezvoltarea iterativă
200
Călătorie prin lumea Big Data
201
Tudorică Bogdan George
202
Călătorie prin lumea Big Data
203
Tudorică Bogdan George
204
Călătorie prin lumea Big Data
Nivelul de
analiză
Analiză
Interfeţe
Nivelul semantice /
tehnologic (de Motoare de
reguli
gestiune)
SGBD
NoSQL
relaţional
Nivelul
Date audio Modele /
datelor / video / de date
localizare numerice
Date
Date
OLTP / semistructu
moştenite
Depozite de rate şi
din aplicaţii
date nestructura
mai vechi
te
206
Călătorie prin lumea Big Data
207
Tudorică Bogdan George
208
Călătorie prin lumea Big Data
Algoritmi
209
Tudorică Bogdan George
211
Tudorică Bogdan George
212
Călătorie prin lumea Big Data
Strategii de integrare
213
Tudorică Bogdan George
Clasificarea datelor
Arhitectura
Sarcinile de lucru
217
Tudorică Bogdan George
Probleme de rezolvat
Încărcarea datelor
Disponibilitatea datelor
220
Călătorie prin lumea Big Data
221
Tudorică Bogdan George
Costuri operaţionale
222
Călătorie prin lumea Big Data
224
Călătorie prin lumea Big Data
225
Tudorică Bogdan George
227
Tudorică Bogdan George
228
Călătorie prin lumea Big Data
231
Tudorică Bogdan George
232
Călătorie prin lumea Big Data
Virtualizarea datelor
233
Tudorică Bogdan George
234
Călătorie prin lumea Big Data
235
Tudorică Bogdan George
237
Tudorică Bogdan George
238
Călătorie prin lumea Big Data
Procesarea lexicală
239
Tudorică Bogdan George
Extragerea informaţiei
În acest proces, uneltele de vizualizare extrag datele
obţinute din nivelele anterioare de prelucrare şi le încarcă
pentru explorare vizuală sau analiză. Datele de la acest nivel
pot fi de asemenea furnizate ca intrări pentru alte tehnologii
pentru analize mai avansate.
Vizualizarea
La acest nivel datele pot fi vizualizate folosind diverse
tehnologii precum produsele tradiţionale Microstrategy,
Business Objects şi Cognos sau produse ceva mai noi cum sunt
241
Tudorică Bogdan George
242
Călătorie prin lumea Big Data
243
Tudorică Bogdan George
244
Călătorie prin lumea Big Data
using System.Diagnostics;
using System.Threading;
…
//Creare conditii de testare
Process.GetCurrentProcess().ProcessorAffinity = new IntPtr(2);
//Utilizeaza al doilea nucleu sau procesor pentru test
Process.GetCurrentProcess().PriorityClass = ProcessPriorityClass.High;
//Creste prioritatea procesului
Thread.CurrentThread.Priority = ThreadPriority.Highest;
//Creste prioritatea firului de executie
246
Călătorie prin lumea Big Data
stopwatch.Reset();
stopwatch.Start();
while (stopwatch.ElapsedMilliseconds < 1500)
//O pauza de 1500 ms pentru stabilizarea cache-ului si pipeline-ului CPU.
{
i = (i + 1) % 10;
}
stopwatch.Stop();
247
Tudorică Bogdan George
248
Călătorie prin lumea Big Data
txt1 = "";
for (j = 0; j < 10; j++)
{
string bucata = Path.GetRandomFileName();
bucata = bucata.Substring(0, 10);
txt1 = txt1 + bucata;
}
document.Add(element);
element = BsonElement.Create("txt3", BsonString.Create(txt3));
document.Add(element);
element = BsonElement.Create("blob", BsonString.Create(blob_s));
document.Add(element);
colectie.Insert(document);
251
Tudorică Bogdan George
txt1 = document.GetElement(7).Value.ToString();
txt2 = document.GetElement(8).Value.ToString();
txt3 = document.GetElement(9).Value.ToString();
blob_s = document.GetElement(10).Value.ToString();
…
}
while (mysql_dataReader.Read())
{
id = mysql_dataReader.GetInt32(0);
val1 = mysql_dataReader.GetInt32(1);
val2 = mysql_dataReader.GetInt32(2);
val3 = mysql_dataReader.GetFloat(3);
val4 = mysql_dataReader.GetFloat(4);
val5 = mysql_dataReader.GetFloat(5);
blob_s = mysql_dataReader.GetString(6);
txt1 = mysql_dataReader.GetString(7);
txt2 = mysql_dataReader.GetString(8);
txt3 = mysql_dataReader.GetString(9);
…
}
La momentele corespunzătoare din timpul măsurătorii
câteva obiecte de clasă Stopwatch sunt startate, stopate şi
resetate corespunzător scopurilor pentru care sunt folosite
(respectiv cronometrarea generării de date, a operaţiilor de
scriere pentru MongoDB, a operaţiilor de scriere pentru
MySQL, a operaţiilor de citire pentru MongoDB şi a operaţiilor
de citire pentru MySQL). Autorul a ales să utilizeze clasa
Stopwatch pentru operaţiile de cronometrare pentru că
furnizează o măsurătoare destul de precisă a timpului.
252
Călătorie prin lumea Big Data
253
Tudorică Bogdan George
4.2.5 Constatări
254
Călătorie prin lumea Big Data
255
Tudorică Bogdan George
256
Călătorie prin lumea Big Data
Citire
Citire
257
Tudorică Bogdan George
Citire
258
Călătorie prin lumea Big Data
Citire
MySQL
Scriere
Citire
260
Călătorie prin lumea Big Data
263
Tudorică Bogdan George
264
Călătorie prin lumea Big Data
Diagrama de context
265
Tudorică Bogdan George
266
Călătorie prin lumea Big Data
Actori implicaţi:
Administrator (start, stop) (A-1):
Administratorul iniţializează aplicaţia. Aceasta va
încerca să se conecteze la un server MongoDB aflat pe sistemul
local. În cazul în care serverul nu este disponibil, se inhibă
afişarea informaţiilor despre server. Ulterior administratorul
poate opta să pornească manual un server sau să oprească
serverul la care aplicaţia este conectată. De asemenea, poate fi
267
Tudorică Bogdan George
268
Călătorie prin lumea Big Data
Actori implicaţi:
Administrator (info despre sistem) (A-2)
Administratorul solicită informaţii despre sistemul de
calcul pe care rulează aplicaţia sau despre echipamentele de
reţea instalate pe sistemul respectiv şi despre modul în care
acestea sunt configurate.
Cazuri de utilizare: UC-6 solicitare informaţii despre
sistemul pe care rulează ASMDB, UC-7 solicitare informaţii
despre adaptoarele de reţea de pe sistemul pe care rulează
ASMDB şi configurarea acestora.
Sistem de calcul pt. ASMDB (A-12)
Cazuri de utilizare: UC-6 solicitare informaţii despre
sistemul pe care rulează ASMDB, UC-7 solicitare informaţii
despre adaptoarele de reţea de pe sistemul pe care rulează
ASMDB şi configurarea acestora.
269
Tudorică Bogdan George
Actori implicaţi:
Administrator (gestiunea BD) (A-3)
Administratorul vizualizează lista bazelor de date
existente, creează baze de date noi sau şterge baze de date
existente.
Cazuri de utilizare: UC-8 vizualizare listă baze de date
existente, UC-9 adăugare bază de date nouă, UC-10 ştergere
bază de date existentă.
Server MongoDB (A-10)
Cazuri de utilizare: UC-8 vizualizare listă baze de date
existente, UC-9 adăugare bază de date nouă, UC-10 ştergere
bază de date existentă.
270
Călătorie prin lumea Big Data
Actori implicaţi:
Administrator (gestiune useri) (A-4)
Administratorul vizualizează lista utilizatorilor, creează
utilizatori noi, şterge utilizatori existenţi, schimba parola sau
drepturile de acces ale utilizatorilor existenţi.
Cazuri de utilizare: UC-11 vizualizare listă utilizatori
existenţi, UC-12 creare utilizator nou, UC-13 ştergere utilizator
existent, UC-14 schimbare parola utilizator existent, UC-15
271
Tudorică Bogdan George
Actori implicaţi:
Administrator (gestiune colecţii) (A-5)
Administratorul vizualizează lista colecţiilor,
vizualizează conţinutul unei colecţii, adaugă o colecţie nouă
sau şterge o colecţie existentă.
272
Călătorie prin lumea Big Data
Actori implicaţi:
Administrator (gest. documente) (A-6)
Administratorul adaugă un document nou într-o colecţie
existentă sau şterge un document existent dintr-o colecţie
existentă.
273
Tudorică Bogdan George
Actori implicaţi:
Administrator (benchmark) (A-7)
Administratorul execută o măsurătoare comparativă a
performanţelor obţinute de Server MongoDB şi server MySQL.
Cazuri de utilizare: UC-23 execuţie benchmark
Administrator (validare) (A-8)
274
Călătorie prin lumea Big Data
Actori implicaţi:
Administrator (help) (A-9)
Administratorul obţine informaţii despre ASMDB
Cazuri de utilizare: UC-25 obţinere informaţii de ajutor
275
Tudorică Bogdan George
276
Călătorie prin lumea Big Data
277
Tudorică Bogdan George
278
Călătorie prin lumea Big Data
279
Tudorică Bogdan George
9
***, Getting Started with the CSharp Driver, MongoDB Wiki
280
Călătorie prin lumea Big Data
281
Tudorică Bogdan George
“actualizareaAutomatăAInformaţiilorDespreServerToolStripM
enuItem”). Revenirea din această stare se realizează manual
prin apelarea opţiunii “Actualizarea forţată a informaţiilor
despre server” din meniul “Operaţii generale”.
În cazul în care, în cadrul procesului de iniţializare,
aplicaţia nu a găsit niciun server activ şi a intrat în starea
descrisă mai sus, ea nu afişează niciun fel de informaţii de
stare. Chiar şi în acest caz, toate funcţiile din meniuri sunt
active – cea previzibilă, de pornire a unui server, dar şi toate
celelalte, pentru cazul în care un server MongoDB a fost pornit
manual de către utilizator. Fiecare dintre funcţionalităţi este
autonomă, în sensul că pentru fiecare operaţie în parte
conectarea la server şi tratarea erorilor la conectare sunt
realizate separat de funcţionalitatea de citire a stării serverului.
Pentru pornirea unui server local este disponibilă
opţiunea omonimă din meniul “Servere”. Apelarea opţiunii
respective va duce la activarea componentei Form13 care este
o fereastră de dialog pentru stabilirea căii către serverul local şi
posibila pornire a acestuia.
Pornirea unei aplicaţii externe (serverul MongoDB) este
realizată utilizând clasa “Process” din biblioteca
“System.Diagnostics” precum în secvenţa de cod de mai jos:
Process p = new Process();
p.StartInfo.WorkingDirectory =
Path.GetDirectoryName(textBox1.Text);
p.StartInfo.FileName = textBox1.Text;
p.StartInfo.WindowStyle = ProcessWindowStyle.Minimized;
//p.StartInfo.Arguments = "";
p.Start();
Notă: atribuirea p.StartInfo.Arguments = ""; este
introdusă în vederea adăugării pe viitor de opţiuni de control al
282
Călătorie prin lumea Big Data
283
Tudorică Bogdan George
284
Călătorie prin lumea Big Data
285
Tudorică Bogdan George
286
Călătorie prin lumea Big Data
switch (Convert.ToUInt32(m["ConfigManagerErrorCode"]))
{
case 0:
aux = "Device is working properly.";
break;
case 1:
aux = "Device is not configured correctly.";
break;
case 2:
aux = "Windows cannot load the driver for this device.";
break;
…
288
Călătorie prin lumea Big Data
289
Tudorică Bogdan George
292
Călătorie prin lumea Big Data
293
Tudorică Bogdan George
296
Călătorie prin lumea Big Data
297
Tudorică Bogdan George
298
Călătorie prin lumea Big Data
299
Tudorică Bogdan George
else
{
textBox1.Text = "Document de sistem. Conţinutul este ascuns";
}
Ştergerea unei colecţii din cadrul unei baze de date se
realizează prin apelarea opţiunii omonime din meniul
“Colecţii”.
Pentru această operaţie, implementarea este simplificată
de existenţa unei metode dedicate la nivelul MongoDB API:
if((comboBox2.Text!="system.indexes")&&(comboBox2.Text!="sy
stem.users"))
{
colectie.Drop();
}
else
{
MessageBox.Show("Colecţia pe care încercaţi să o ştergeţi este o
colecţie de sistem. Ea nu va fi ştearsă.", "Eroare ...",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
Într-o versiune ulterioară a aplicaţiei se preconizează
adăugarea opţiunii de ştergere batch a colecţiilor, acum
colecţiile putând fi şterse numai una câte una.
Notă: Ca şi în alte cazuri, pentru evitarea ştergerii
accidentale, nu se permite utilizatorului ştergerea colecţiilor de
sistem.
301
Tudorică Bogdan George
10
***, Introducing JSON, JSON Org
302
Călătorie prin lumea Big Data
var valoare =
BsonString.Create(dataGridView1.Rows[i].Cells[1].Value.ToString());
var element =
BsonElement.Create(dataGridView1.Rows[i].Cells[0].Value.ToString(),
valoare);
document.Add(element);
}
colectie.Insert(document);
}
else
{
MessageBox.Show("Colecţia la care încercaţi să adăugaţi este o
colecţie de sistem. Documentul nu va fi inserat în colecţie.", "Eroare ...",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
303
Tudorică Bogdan George
304
Călătorie prin lumea Big Data
305
Tudorică Bogdan George
306
Călătorie prin lumea Big Data
307
Tudorică Bogdan George
308
Călătorie prin lumea Big Data
309
Călătorie prin lumea Big Data
Concluzii
Pentru fiecare epocă din istoria ştiinţei calculatoarelor a
existat un nivel de cantitate de date dincolo de care prelucrarea,
stocarea sau transferul acestora devenea dificil pentru
tehnologia epocii respective, iar datele care depăşeau această
limită erau numite volume mari de date (pentru majoritatea
epocilor precedente, regula fiind că aceste volume mari de date
erau produse fie de aplicaţii militare, fie de aplicaţii ştiinţifice).
Epoca actuală diferă fundamental de această situaţie
recurent întâlnită în istoria informaticii, pentru că este prima
epocă în care există un număr mare de surse capabile să
genereze cu uşurinţă volume mari de date. Este de asemenea
epoca în care generarea de volume mari de date nu mai este
apanajul aplicaţiilor militare sau ştiinţifice.
Dată fiind abundenţa de surse de volume mari de date,
este evident faptul că studiul modului în care aceste date pot fi
prelucrate şi stocate reprezintă un domeniu de mari interes şi
actualitate.
Lucrarea cu titlul „Călătorie prin lumea Big Data” a
realizat o analiză a punctelor din studiul acestui domeniu care
reprezintă la momentul actual probleme nerezolvate sau în care
pot fi aduse îmbunătăţiri. În câteva din aceste puncte autorul a
prezentat unele propuneri de soluţii, de îmbunătăţiri sau numai
de aspecte care ar putea fi studiate.
În primul capitol al lucrării au fost abordate două
aspecte referitoare la modalităţile de structurare a volumelor
mari de date şi anume organizarea structurată (bazele de date
relaţionale) şi organizarea semistructurată (bazele de date
NoSQL).
În ceea ce priveşte organizarea structurată a volumelor
mari de date, au fost prezentate în subcapitolul 1.1, soluţiile
311
Tudorică Bogdan George
312
Călătorie prin lumea Big Data
313
Tudorică Bogdan George
314
Călătorie prin lumea Big Data
Referințe bibliografice
315
Tudorică Bogdan George
Baru, C., Bhandarkar, M., Nambiar, R., Poess, M., & Rabl, T.
(2013). Benchmarking Big Data Systems and the
BigData Top100 List. Big Data.
Benson, T., Akella, A., & Maltz, D. A. (2010). Network Traffic
Characteristics Of Data Centers In The Wild. The
proceedings of IMC.
Bertolucci, J. (2014). Real-Time Acoustic Processing Has Big
Data Potential. InformationWeek.
Bhatewara, A., & Waghmare, K. (2012). Improving Network
Scalability Using NoSql Database. Journal of Advanced
Computer Research.
Bhatotia, P., Wieder, A., Rodrigues, R., Acar, U. A., &
Pasquin, R. (2011). Incoop: MapReduce For
Incremental Computations. The Proceedings of SOCC.
Bizer, C., Boncz, P., Brodie, M. L., & Erling, O. (2011). The
meaningful use of big data: four perspectives - four
challenges. ACM SIGMOD Record.
Bollier, D. (2010). The Promise and Peril of Big Data. The
Aspen Institute.
Bonnet, L., Laurent, A., Sala, M., Laurent, B., & Sicard, N.
(2011). Reduce, You Say: What NoSQL Can Do for
Data Aggregation and BI in Large Repositories. The
Proceedings of the 22nd International Workshop on
Database and Expert Systems Applications (DEXA),.
Toulouse.
Borthakur, D., Gray, J., Sarma, J. S., Muthukkaruppan, K.,
Spiegelberg, N., Kuang, H., . . . Aiyer, A. (2011).
Apache Hadoop Goes Realtime At Facebook. The
proceedings of SIGMOD.
Boyd, D., & Crawford, K. (2011). Six Provocations for Big
Data. A Decade in Internet Time: Symposium on the
Dynamics of the Internet and Society.
Boyd, D., & Crawford, K. (2012). Critical Questions For Big
Data. Information, Communication & Society - Special
316
Călătorie prin lumea Big Data
317
Tudorică Bogdan George
321
Tudorică Bogdan George
322
Călătorie prin lumea Big Data
323
Tudorică Bogdan George
325
Călătorie prin lumea Big Data
329
Tudorică Bogdan George
330
Călătorie prin lumea Big Data
Lista tabelelor
331