ABONAMENTE VIDEO REDACȚIA
RO
EN
NOU
Numărul 150
Numărul 149 Numărul 148 Numărul 147 Numărul 146 Numărul 145 Numărul 144 Numărul 143 Numărul 142 Numărul 141 Numărul 140 Numărul 139 Numărul 138 Numărul 137 Numărul 136 Numărul 135 Numărul 134 Numărul 133 Numărul 132 Numărul 131 Numărul 130 Numărul 129 Numărul 128 Numărul 127 Numărul 126 Numărul 125 Numărul 124 Numărul 123 Numărul 122 Numărul 121 Numărul 120 Numărul 119 Numărul 118 Numărul 117 Numărul 116 Numărul 115 Numărul 114 Numărul 113 Numărul 112 Numărul 111 Numărul 110 Numărul 109 Numărul 108 Numărul 107 Numărul 106 Numărul 105 Numărul 104 Numărul 103 Numărul 102 Numărul 101 Numărul 100 Numărul 99 Numărul 98 Numărul 97 Numărul 96 Numărul 95 Numărul 94 Numărul 93 Numărul 92 Numărul 91 Numărul 90 Numărul 89 Numărul 88 Numărul 87 Numărul 86 Numărul 85 Numărul 84 Numărul 83 Numărul 82 Numărul 81 Numărul 80 Numărul 79 Numărul 78 Numărul 77 Numărul 76 Numărul 75 Numărul 74 Numărul 73 Numărul 72 Numărul 71 Numărul 70 Numărul 69 Numărul 68 Numărul 67 Numărul 66 Numărul 65 Numărul 64 Numărul 63 Numărul 62 Numărul 61 Numărul 60 Numărul 59 Numărul 58 Numărul 57 Numărul 56 Numărul 55 Numărul 54 Numărul 53 Numărul 52 Numărul 51 Numărul 50 Numărul 49 Numărul 48 Numărul 47 Numărul 46 Numărul 45 Numărul 44 Numărul 43 Numărul 42 Numărul 41 Numărul 40 Numărul 39 Numărul 38 Numărul 37 Numărul 36 Numărul 35 Numărul 34 Numărul 33 Numărul 32 Numărul 31 Numărul 30 Numărul 29 Numărul 28 Numărul 27 Numărul 26 Numărul 25 Numărul 24 Numărul 23 Numărul 22 Numărul 21 Numărul 20 Numărul 19 Numărul 18 Numărul 17 Numărul 16 Numărul 15 Numărul 14 Numărul 13 Numărul 12 Numărul 11 Numărul 10 Numărul 9 Numărul 8 Numărul 7 Numărul 6 Numărul 5 Numărul 4 Numărul 3 Numărul 2 Numărul 1
×
▼ LISTĂ EDIȚII ▼
Numărul 23
Abonament PDF

Modelarea datelor în contextul Big Data

Silvia Răusanu
Software Developer
@ISDC



PROGRAMARE


Când cineva spune "modelare de date", se gândește automat la baze de date relaționale și la procesul de normalizare a datelor, a treia formă normală, etc. . Acest mod de gândire demonstrează o practică bună, înseamnând că semestrele de baze de date din facultate au avut efect asupra operațiilor de gândire și de lucru cu datele. Însă, din facultate și până acum, lucrurile s-au schimbat pentru că nu mai auzim la fel de mult despre baze de date relaționale, deși acestea sunt folosite în continuare cu preponderență în aplicații. Acum "big data" este la modă, dar este și o situație pe care tot mai multe aplicații trebuie să o abordeze: volumul, viteza, varietatea și complexitatea datelor (conform definiției Gartner pentru big data).

În acest articol vom aborda dualitatea conceptelor de normalizare și denormalizare în contextul big data, din prisma experienței mele cu MarkLogic (o platformă pentru aplicații big data).

Despre normalizare

Normalizarea datelor face parte din procesul de modelare a datelor pentru crearea unei aplicații. De cele mai multe ori, normalizarea este o practică bună din cel puțin două motive: evită problemele de integritate în situații de alterare a datelor (inserare, actualizare, ștergere) și evită înclinația față de orice model de interogare. În articolul "Denormalizare pentru viteză și profit", apare o comparație foarte interesantă între modelarea datelor și filozofie: principiul lui Descartes vast acceptat (inițial) de separare a minții de trup seamănă foarte bine cu procesul de normalizare - separarea datelor; eroarea lui Descartes a fost să despartă (filozofic) două părți care mereu au fost împreună. În același mod, după normalizare, datele trebuie aduse înapoi împreună de dragul aplicației; datele, care au fost inițial împreună, au fost fragmentate, iar acum trebuie recuplate - pare cel puțin redundant, dar este abordarea cea mai folosită din ultimele decenii, mai ales când se lucrează cu baze de date relaționale. Mai mult, chiar și lexicul și etimologia susțin această practică: datele fragmentate sunt considerate "normale".

Despre denormalizare

Când vine vorba de modelare a datelor în contextul big data (în mod special MarkLogic), nu mai există o formă universal recunoscută în care trebuie încadrate datele, dimpotrivă, conceptul de schemă nu se mai aplică. Totuși, suportul oferit de platformele big data pentru date nestructurate nu este echivalent cu omisiunea pasului de modelare. Datele brute trebuie analizate dintr-un punct de vedere diferit în acest context, mai exact, din punctul de vedere al necesitaților aplicației, făcând astfel baza de date folosită orientată spre aplicație. Dacă ar fi să observăm operația cea mai frecventă - citire - s-ar putea spune că orice aplicație este o aplicație de căutare; din acest motiv, procesul de modelare a datelor trebuie să aibă în vedere entitățile pe care le manevrează în mod logic (după care caută), cum ar fi: articole, informații despre utilizator, specificații pentru mașini, etc. .

În timp ce normalizarea ,,sparge" datele brute pentru a respecta protocolul, fără a lua în considerare nevoile funcționale, denormalizarea se face doar pentru a servi aplicația - bineînțeles, cu grijă- pentru că denormalizarea excesivă poate cauza mai multe probleme decât soluții. Ordinea pașilor în care se dezvoltă o aplicație bazată pe date normalizată pare că respectă metodologia cascadă: odată ce modelul de date s-a stabilit, se începe lucrul la modelele de interogare și indiferent de performanța obținută, ajustările se fac asupra interogării, poate asupra indecșilor din baza de date, dar nu asupra modelului. Având o bază de date denormalizată, relația dintre modelul de date și modelele de interogare descriu mai bine metodologia agilă: dacă cerințele funcționale și atributele de calitate nu sunt îndeplinite atunci modificările se pot efectua și pe date pentru a îmbunătăți interogările până când se obține rezultatul dorit.

Toate argumentele care au făcut normalizarea atât de celebră rămân valide, însă platformele big data au dezvoltat instrumente pentru a păstra integritatea datelor și pentru a depăși alte probleme. Sistemele pentru big data sunt mult mai ușor scalabile pentru volume mari de date (atât pe orizontală cât și pe verticală), ceea ce face ca problema excesului de volum generat de denormalizare să fie ignorată; în plus, volumul extra ajută la îmbunătățirea performanței căutărilor. Rezolvarea pentru problemele de integritate depinde de arhitectura aleasă a aplicației, dar și de "proprietarul" datelor.

Rezolvarea problemelor de integritate la denormalizare

În momentul în care se alege denormalizarea datelor este clar că se merge pe centru de date orientat spre aplicație, însă aceasta reprezintă doar sursa de date cu care aplicația comunică direct, nu sursa originală a datelor sau "proprietarul" datelor. Pentru sistemele de big data, sunt două opțiuni: fie datele trăiesc doar în baza de date big data, fie au ca sursă inițială o bază de date relațională și cu ajutorul unui instrument de extragere-transformare-încărcare (ETL) datele ajung în "depozitul" big data. Având aceste două opțiuni, posibilele probleme de integritate se tratează altfel.

În cazul în care datele există doar în sistemul big data, este necesar un instrument de sincronizare și integrare a datelor care au suferit alterări. Instrumentele care implementează map-reduce sunt cel mai des folosite deoarece sunt eficiente și rulează pe hardware de bază. Astfel de procese de sincronizare pot fi declanșate fie imediat după ce modificarea originală a fost executată - când modificările nu sunt foarte dese și nu există posibilitatea de a genera o interblocare (dead-lock); când modificările sunt efectuate mai des, este recomandat un job ce rulează periodic, la intervale de timp prestabilite.

Când datele originale sunt într-o bază de date relaționale, efortul de menținere a integrității datelor este susținut de sistemul original de stocare - care trebuie sa fie normalizat. În această situație trebuie investit mult și în ETL pentru a reface structura logica a datelor. Chiar dacă libertatea pe care o oferă acest instrument este foarte mare, aplicațiile trebuie să respecte un anumit standard de performanță și încredere, deci noile modificări trebuie să fie aplicate pe sistemul de big data cât mai repede posibil; există, așadar, riscul de a denormaliza excesiv, reducând foarte mult din efortul de calcul din sistemul de big data.

Denormalizarea și join-urile

După toată pledoaria de mai sus pentru denormalizare, pare lipsit de sens să mai atingem subiectul "join"; denormalizarea este o soluție pentru a evita un join de dimensiuni mari - suntem în context big data, până la urmă. Însă atributele calității, sursele multiple de date și respectarea protocoalelor externe pot reduce radical opțiunile de modelare/denormalizare. Să luam un exemplu concret, modelul de business pentru abonamentele periodice la articolele din anumite ziare cărora adăugăm și dimensiunea modelului de lucru: 45 de milioane de articole și 9 miliarde de relații articol-utilizator. Fiecare utilizator își poate face abonamente la anumite ziare pe perioade limitate de timp (doar câteva ediții); așadar condițiile de join sunt derivate din "potrivirea" între identificatorul ziarului și titularul abonamentului, precum și perioada abonamentului care să includă articolele publicate în acest interval. De ce este nepotrivită denormalizarea în acest scenariu? Modelul pentru articol ar trebui să conțină denormalizate informațiile despre toți utilizatorii care au acces la el - aceasta ar însemna o poluare a entității, dar și efortul de calcul suplimentar pe partea de ETL sau map-reduce, ceea ce ar putea degrada valoarea aplicației. Pe de altă parte, modificările efectuate pe perioada de subscriere pentru un anume utilizator poate crea alterarea a milioane de articole, și aceasta ar genera un proces de reconstruire a consistenței situației abonamentelor... în cele din urma.

Concluzie

În contextul big data, cea mai bună opțiune de modelare de date rămâne denormalizarea - aplicațiile moderne au nevoie de viteză mare de răspuns, nu merită să pierdem timp (de execuție) să punem la loc, împreună, datele normalizate pentru a oferi utilizatorului entitățile logice. Bineînțeles, denormalizarea completă nu este cea mai bună opțiune pentru a încapsula o relație mare de join many-to-many, după cum am arătat în paragraful precedent. Și pentru a termina într-o nota veselă, conform titlului articolului: "normalization is for sissies" (normalizarea este pentru naivi), iar denormalizarea e soluția.

NUMĂRUL 149 - Development with AI

Sponsori

  • Accenture
  • BT Code Crafters
  • Accesa
  • Bosch
  • Betfair
  • MHP
  • BoatyardX
  • .msg systems
  • P3 group
  • Ing Hubs
  • Cognizant Softvision
  • Colors in projects