3. explorarea sistemului de operare de baze de date

Netezza

1. Arhitectura

2. Componente

3. explorarea sistemului de operare de baze de date

4. nzsql

5. analiza și optimizarea performanței de interogare

Introducere

Netezza este construit pe standardele depozitelor de date bazat pe integrarea arhitecturală a bazelor de date, serverelor de stocare și are capacități analitice avansate într-un singur sistem, ușor de gestionat. IBM Netezza 1000 este proiectat pentru analiza rapidă și profundă a volumelor de date scalare în petabytes, oferind 10-100x performanță la o fracțiune din costul altor opțiuni disponibile de la vânzătorii tradiționale.

Analiză profundă, sofisticată pe volumele de date istorice este seva întreprinderilor într-o economie inteligentă, oferindu-le un avantaj peste concurența. Cu toate acestea, cele mai multe organizații au de a face o alegere între volumul de date și complexitatea analitică din cauza limitărilor de infrastructură de tehnologie.

Cele mai multe analize efectuate pe date de mari au dimensiuni relativ simple. Infrastructura bazată pe baze de date tradiționale și tehnologie de stocare, se extind doar pentru a ține pasul cu creșterea de utilizare și a volumelor de date. Cu depozitul de date IBM Netezza organizațiile nu mai trebuie să facă o alegere între volum de date și analitică de complexitate. Aparatele IBM Netezza sunt scalabile, sisteme paralele masive care permit clienților să ronțaie volume de date enorme, care un număr mare de utilizatori care solicită întrebări de date care nu a putut chiar să fie avute în vedere înainte.

Capitol 1 – Netezza

1.1. Arhitectura

Arhitectura aparatului depozitului de date Netezza se bazează pe un principiu fundamental de informatică: atunci când operează cu seturi mari de date, nu muta datele dacă nu ai altă obține. Arhitectura IBM exploatează pe deplin acest principiu de utilizarea a componentelor de mărfuri numite Field Programmable Gate Arrays (sau FPGA) pentru a filtra datele străine cât mai devreme în fluxul de date în care este posibil. Arhitectura bazei de date Netezza combină cele mai bune elemente Symmetric multi-processing (SMP) și MPP pentru a crea un aparat construit cu scopul de a rul pentru analiza rapidă a datelor în volume de dimensini de petabytes. Fiecare componentă a arhitecturii, inclusiv procesorul, FPGA, memorie și rețeaua, este atent selectata și optimizată pentru serviciile de date pentru le mută rapid de disc.

Abordarea IBM pentru depozitare de date este foarte diferită de ceea ce au oferit alți furnizori cum ar fi Oracle și Teradata. Aparatele Netezza sunt pentru ronțăit volume masive de date rapid și eficient. Acest lucru permite organizațiilor să realizeze valoare afacerii rapid, și analitic explorează zonele neimaginate anterior. O mare parte din avantaj de performanță ale depozitului de date IBM Netezza vine de la arhitectura AMPP unică, care combină un SMP front-end cu un comun MPP back-end pentru prelucrare datelor de interogare.

Fiecare componentă a arhitecturii este atent aleasă și integrata pentru a se obține un sistem general echilibrat. Fiecare element de procesare funcționează pe fluxuri de date multiple, filtrarea datelor străine cât repede posibil. Mai mult de o mie de aceste fluxuri de MPP personalizate lucreze împreună pentru a "divide și cuceri" volumul de muncă.

Fig. 1.1.1. Arhicetura AMPP

Să examinăm elementele centrale ale aparatului:

• IBM host: Hosturile SMP sunt servere IBM de înaltă performanță care rulează pe Linux și sunt stabilite într-o configurație activ-pasivă pentru o disponibilitate înaltă. Hostul activ prezintă o interfață standardizată pentru instrumente și aplicații externe. Compilează interogări SQL în segmente de cod executabil numite fragmente, creează planuri optimizate de interogare și distribuie fragmentele la ganglionii PPM pentru execuție.

• Snippet Blades (S-Blades): S-Blades sunt noduri de procesare inteligente care alcătuiesc motorul turbo MPP al aparatului. Fiecare S-Blade este un server independent care conține puternice procesoare multi-core, FPGA multimotor și gigabytes de memorie RAM, toate echilibrate și lucrează în același timp pentru a oferi performanțe de vârf. Miezurile CPU-urilor sunt proiectate pentru a putea trecere la rularea algoritmilor complecși împotriva volume mari de date pentru aplicații analitice avansate.

• Disk enclosures: Carcasele disc contion densitate de inalta performantă, discurile de stocare IBM sunt protejate RAID. Fiecare disc conține o felie de date într-un tabel baza de date.

• Network fabric:Toate componentele sistemului sunt conectate printr-o țesătură rețea de mare viteză. IBM rulează un protocol IP personalizat care utilizează în totalitate la lățimea de bandă transversală a rețelei. Rețeaua este optimizată pentru a scala la mai mult de o mie de noduri, permițând în același timp fiecarui nod sa inițializeze transferuri de date mari pentru fiecare alt nod simultan.

Toate sistemele componente sunt redundante. In timp ce hostul este active-pasiv, toate celelalte component ale aplicatiei sunt hot-swappable. Date utilizatorului sunt pe deplin reflectate, permițând o disponibilitate de 99,99%.

Un procesor fragment (unu din multe): componente depozitului de date IBM Netezza se combină pentru a extrage cel mai mare debit din fiecare nod MPP.

Fig. 1.1.2. Arhitectura de procesare intens paralelă

Fiecare FPGA conține motoare care îndeplinesc funcții de filtrare și de transformare pe fluxul de date încorporat. Aceste motoare sunt FAST dinamic reconfigurabile, permițându-le să fie modificate sau extinse prin intermediul software-ului. Ele sunt personalizate pentru fiecare fragment prin parametri furnizați în timpul executării interogării și acționează în fluxul de date furnizat de un modul de acces direct la memorie (DMA) la viteză mare.

Motoarele FAST includ:

• Motorul de compresie, un depozit de date IBM stimulează performanța sistemului cu un factor de 4-83 datele motorului de compresie la viteza de rețea, transformând instantaneu fiecare bloc de pe disc în 4-8 blocuri în memorie. Rezultatul este o accelerare semnificativă a componenței lente în orice depozit de date – disc.

• Proiectul și Restricții motoare, motoarele sporesc performanța prin filtrarea coloane și rânduri, respective, pe baza parametrilor din SELECT și WHERE într-o interogare SQL.

• Vizibilitate motorului joacă un rol critic în menținerea ACID (atomicitate, coerență, izolare și durabilitate). Se filtrează rândurile ce nu ar trebui să fie "văzute" de către o interogare; de exemplu, rândurile care aparțin la o tranzacție care nu este încă compilată.

Fig. 1.1.3. Motorul IBM FAST

Stocarea inteligentă conține două controlere RAID redundante care gestionează discurile și hardware-urile asociate în cadrul unui grup de stocare. Controlorii RAID sunt dispozitivele cache, care îmbunătățesc performanțele de citire și operațiunile de scriere pe discuri. Cache sunt oglindite între cele două controlere RAID pentru redundanță; fiecare controler are un dispozitiv bliț de rezervă și o baterie pentru a proteja împotriva pierderii de energie cache.
Controlorii RAID funcționează independent de software Netezza și hosturi. De exemplu, dacă vă opriți software-ul Netezza (cum ar fi pentru un upgrade sau alte activități de întreținere), controlere RAID continuă să ruleze și să gestioneze discurile în cadrul grupului de stocare. LED-urile de activitate sunt pe grupe de stocare de operare chiar și atunci când sistemul Netezza este oprit. Dacă un disc se defectează, controller RAID inițiază procesul de recuperare și regenerare;
Cache și RAID sunt dezactivate atunci când apar oricare dintre următoarele condiții:

 Eșuarea bateriei

Eșecul dispozitivului de rezervă Cache

Eșecul controlorului RAID Peer (care este, o pierdere a oglinzii cache)

Când memoria cache este dezactivată, grupul de stocare (și sistemul Netezza) trece printr-o degradare de performanță până când starea este rezolvată și cache-ul este activat din nou.

Netezza folosește DHD într-un mod sincronic, care are un sistem de oglindire strâns cuplat. Atunci când un bloc este scris, hostul activ nu înregistrează scrisul până când hostul activ și hostul standby au scris complet blocul . Hostul activ trebuie să primească o confirmare de la hostul de așteptare pe care, de asemenea, a finalizat scrierea. Oglindă sincron este de cele mai multe ori utilizată în mediul HA, care doresc cea mai mare asigurarea posibilă că nu au nicio tranzacție pierdut în cazul în care nodul failover activ trece la nodul stanby. Oglindirea datele utilizatorului crește fiabilitatea și disponibilitatea datelor utilizatorului și menține o copie redundanță și consecventă a tuturor datelor stocate pe fiecare felie de date primare.
Fiecare disc deține seturi de date de utilizator: .
– felie de date primare gestionate de S-Blade care deține disc / felie de date
– partiția oglindă, CARE este o copie identică a unui alt felie de date disc.

Fig. 1.1.4. Parționarea primară/Partionarea oglindă

Sarcinile oglinda.

-Replicarea: Replicarea datelor modificae pepartitia discului primar corespunde partitiei oglinda.

-Failover: Sprijinirea failover înseamnă că atunci când un disc nu răspunde în mod automat trecerea la copia în oglindă a datelor.

-regenerarea: regenerarea partiției primare a unui disc esuat se face prin utilizând copiei de pe oglindă, și regenerarea partiției oglindă folosind datele primare.

1.2. Componentele Aparatului Netezza

Aparatul Netezza are un număr de componente hardware care sprijină funcționarea dispozitivul. Aparatul Netezza este format din una sau mai multe rafturi de hardware, cu servere gazda, switch-uri, SPUs, discuri, regulatoare de putere, dispozitive de răcire, și are un management al
modulelor și cablurilor. Cu toate acestea, în administrarea de zi cu zi a aparatului, doar un subset
din aceste componente necesită o atenție administrative de orice fel. Multe dintre aceste componente sunt redundante și hot-swappable pentru a asigura funcționarea înalță pe sistemele hardware.
Componentele hardware-cheie pentru monitorizarea includ următoarele:

Host servers: Fiecare sistem Netezza HA are una sau două servere gazda pentru a rula software-ul Netezza și pentru a sprijinii aplicații. Dacă un sistem are două servere gazdă, gazdele operează într-un mediu disponibil (HA) de configurare performant ; adică, o gazdă este gazdă activă sau primară, și cealaltă este o gazdă standby gata să preia ce este activ sau nu.

Snippet processing arrays (SPAs): SPAs conține SPUs și discul asociat de depozitare care conduce interogarea procesată pe aplicația Netezza.

Storage Group: include monitorizarea satului pe disc.

Disks: Discurile sunt medii de stocare pentru utilizatorii bazei de date și pentru management tabelelor de către aplicația Netezza.

Data slices: Felii de date sunt partițiile virtuale de pe discuri. Fiecare partiție are o copie redundanta pentru a se asigura că datele pot supraviețui unui eșec pe disc.

Fans and blowers: Aceste componente controlează temperatura de răcire pentru rafturi și componente, cum ar fi :SPAs-urile și discurile încinse.

Power supplies: Aceste componente oferă energie electrică diferitelor componente hardware ale sistemului.

Aparatul Netezza folosește evenimente și indicatori de stare pentru a trimite notificări cu privire la orice erori de hardware. Cele mai multe componente hardware sunt redundante; astfel,dacă apare un eșec celelalte componente hardware rămase vor asuma activitatea componentei care a eșuat. Sistemul poate sau nu poate să opereze într-un mediu degradat, în funcție de componentă care a eșuat. Sistemul nu trebuie rulat într-o stare degradată pentru o perioadă lungă de timp.

Netezza folosește două formate pentru a descrie poziția unui component hardware într-un rack.

Locația logic este un șir într-un format dot care descrie poziția unei componente hardware în rack-ul Netezza.

Locație fizică este un șir de text care descrie amplasarea unei componente. Locația fizică a unei componente poate di afișata folosind comanda nzhw

Fig.1.2.1. Componentele aparatului Netezza și locația acestora

Fiecare componentă hardware a sistemului de Netezza are un rol hardware, ceea ce reprezintă
modul în care este utilizat hardware.

Rolurile care sunt afișate după folosirea comenzii nzhw:

None – Rolul None indică faptul că hardware-ul este inițializat, dar urmează să fie descoperit de către sistemul Netezza. Acest lucru se întâmplă de obicei în timpul pornirii sistemului.

Active – Componenta hardware-ul este un participant activ al sistemului.

Assigned – Hardware-ul este tranzacționat pentru a activa.

Faild – Hardware-ul nu își poate folosi spațiul.

Inactive – Nu este disponibil pentru nici un sistem operațional.

Mismatched – Acest rol este specific discuri. Dacă discul are o UUID care nu se potrivește cu UUID gazdă, atunci se consideră nepotrivite. Trebuie să activați hardware
utilizând comanda nzhw înainte de a putea deveni o rezervă utilizată în sistem.

Spare – Hardware nu este utilizat în funcționare curentă a Sistemului Netezza, dar este disponibil pentru a deveni activ în eventualitatea unui failover.

Incompatible – Hardware-ul este incompatibil cu sistemul, trebuie scos și înlocuit cu componente compatibile hardware.

Un disc este o unitate fizică pe care se află datele. Într-un sistem Netezza, servere gazdă au mai multe discuri care dețin software-ul Netezza, sistemul de operare gazdă, metadatele bazelor de date, și uneori fișierele mici ale utilizatorilor. Sistemul Netezza are, de asemenea mult mai multe discuri care dețin baze de date ale utilizator și tabelelor. Pentru IBM Netezza 1000 sau IBM System PureData Analytics Sisteme N1001 sunt 48 locuri pe discuri într-o matrice de stocare pentru un total de 96 de discuri în rack-ul de configurare complet. Pentru sistemele IBM Netezza C1000, 36 discuri de ședere în fiecare grup de stocare, și există patru grupuri de depozitare într- un suport pentru un total de 144 de discuri. O felie de date este o reprezentare logică a datelor salvate pe un disc. Felie de date conține "bucăți" din fiecare bază de date. Atunci când utilizatorii creează tabele și încărca datele, distribuția datelor pentru tabelul în sistemul folosit se face pe cheie. O distribuție optimă este una în care fiecare felie de date are aproximativ aceeași valoarea pentru fiecare tabel. Sistemul Netezza distribuie datele de utilizare a tuturor feliilor de date în sistemul folosind un algoritm cash. O partiție de date este o reprezentare logică a unei felii de date care este gestionat de un anumit SPU. Adică, fiecare SPU deține una sau mai multe partiții de date, care conține datele de utilizator. SPU este responsabil pentru procesarea în timpul interogărilor. De exemplu, în IBM Netezza 1000 sau IBM System PureData Analytics N1001, fiecare SPU de obicei deține 8 partiții de date deși un SPU are doar 6 partiții. Pentru un sistem IBM Netezza C1000, fiecare SPU deține 9 partiții de date implicit.

Fig. 1.2.2. SPUs, Disks, Data Slices and Data Partition

Dacă un SPU eșuează, sistemul muta toate feliile sale de date la activ. Sistemul le mută în perechi (perechea de discuri care conțin bucăliile primare și oglinzile pentru fiacre în parte). În această situație, unele SPUs vor avea 10 partiții de date (numerotate de la 0-9).

Balanța sistemului de resurse este o parte importantă pentru performanta sistemului. Când o component eșuează, sau când un administrator efectuează un failover manual configurația rezultată (adică, topologie) poate conduce la încărcări de lucru inegale și posibile efecte de performanță. Dacă este posibil ca discuri failover și piese de schimb să aibă o topologie dezechilibrată în care discurile nu sunt distribuite uniform între incintele impare și pare. Aceasta face ca unul dintre traseele SAS (de asemenea, numit HBA), care sunt prezentate ca linii negre și fă legătură șasiu lamacla incintele pe disc, pentru a transporta mai mult trafic decât celălalt.

1.3. NZSQL

Netezza SQL este un limbaj structural (SQL), care rulează pe aparatul Netezza. Pe parcursul acestui document, termenul SQL se referă la Netezza.

Standardele care se referă la definiția SQL Netezza:
-SQL 92 (de asemenea, numit SQL / 2) este un standard operativ ANSI/ISO pentru baze de date relaționale de astăzi.

SQL / CLI – Callable language interface (CLI) care este un plus față de specificațiile SQL / 92 din 1995. CLI a fost în mare parte determinată de ODBC, JDBC dar este de asemenea, o interfață CLI-based.

SQL: 1999 (de asemenea, numit SQL-99) – Adăugarea de potrivirilor de expresie regulată, interogări recursive și alte caracteristici orientate-obiect.

Aveți posibilitatea să utilizați comanda nzsql pe sistemul Netezza sau de la un sistem client UNIX care poate accesa hostul Netezza. Comanda folosește un model de server client, care include:

Un server care gestionează fișierele bazei de date, acceptă conexiuni la baza de date de la client la aplicații și efectuează acțiuni în baza de date în numele clientului.

O aplicație client, care poate efectua o varietate de operațiuni de baze de date.

Când comanda nzsql este invocată, aceasta trebuie să furnizeze un nume de utilizator de cont al bazei de date, parola și numele bazei de date la care vă conectați. Puteți intra în acest informații cu privire la linia de comandă nzsql, sau puteți specifica informațiile din mediu variabile înainte de a începe sesiunea nzsql.

Administratorul Netezza creează și gestionează conturile de utilizator de bază de date folosind comenzi SQL sau Netezza NzAdmin și administrarea Interfeței Admin Web. Sistemul Netezza are un "admin" cont de utilizator de bază de date implicit, care este suprapus cu baza de date Netezza. Utilizatorul admin se poate conecta la orice bază de date, poate crea, modifica și șterge obiecte. Tipic, utilizator admin creează conturi noi, astfel încât alți utilizatori pot accesa unul sau mai multe baze de date și rulă interogări. Utilizatorul admin poate crea, de asemenea, conturi cu permisiuni administrative, astfel care alți utilizatori poate fi permis pentru a efectua sarcini, cum ar fi gestionarea bazelor de date și crearea utilizatorilor, backup, și alte sarcini administrative.

Fiecare utilizator client care se conectează la sistemul de Netezza deschide o sesiune. Utilizatorii pot vizualiza informații despre sesiunile lor, precum și a le gestiona.

O declarație Netezza SQL este o secvență de comenzi. Fiecare comandă constă dintr-un
secvența de token-uri terminate cu un punct și virgulă opțional cu sfârșitul terminatorul de intrare
comanda.
Token-urile pot fi:

Cuvinte cheie – Cuvintele care au un sens fix în SQL. Pentru o listă de cuvinte cheie, a se vedea Anexa A, "SQL cuvinte și cuvinte cheie rezervate." (netezza Database Unser’s guidepentru anexă)

Identificatorii – Nume de utilizatori, tabele, coloane, sau alte obiecte de baze de date.

Constante – Numere întregi, și numere în virgulă mobila.

Comentarii – O secvență arbitrară de caractere începând cu liniuțe duble și extinderea la sfârșitul liniei.

Constrângeri – O regulă care limitează valoarea de una sau mai multe coloane într-un tabel

Un tabel extern este un tabel ale cărui date nu sunt stocate în baza de date Netezza. Este ca un tabel prin aceea că prezintă o definiție (o schemă de Tabel), care este stocată în baza de date,
dar datele reale sunt salvate în afara bazei de date într-o locație accesibilă de gazdă Netezza sau un sistem client.
Puteți utiliza tabele externe pentru a face următoarele:

Încărcați datelor în Netezza dintr-un tabel extern care să profite de toate caracteristicile
Netezza SQL să structureze operația de încărcare, astfel încât datele să fie manipulate.

Stocarea datelor în afara Netezza, fie pentru a transfera la altă aplicație, sau pe un tabel
de rezervă.

Creați un tabel extern și apoi utiliza datele dintr-o tabelă externă, ca parte a unui SQL
interogare.

Puteți utiliza comanda CREATE EXTERNAL TABLE pentru a crea un tabel extern. Tabele externe au două formate de date: textul și format binar comprimat. Format text permite crearea unui tabel extern, care este non-proprietate și independent de Topologie Netezza. Formatul binar comprimat produce de obicei fișiere mai mici de date, și păstrează informații despre topologia Netezza, și, astfel, este de multe ori mai rapid de backup și restaurare. Când alegeți format binar comprimat, sistemul comprimă datele și le decomprimat atunci când reîncărcați date.
sintaxă: CREATE TABLE

1.4. Analiza și optimizarea performanței de interogare

Netezza folosește un optimizator bazat pe costuri pentru a determina cea mai bună metodă de scanare și joinare a operațiunilor, de ordonare a joinurilor și de mișcare a datelor între SPUs. Sistemul ar putea redistribui datele pentru join, gruparea agregatelor, crearea tabelelor. Deciziile cu privire la redistribuirea sunt făcute de către proiectant și se bazează pe costuri, cum ar fi dimensiunile tabelelor estimate. (Planificatorul încearcă să evite redistribuirea tabelelor mari din cauza impactului de performanță.)
Pentru optimizare poate, de asemenea, rescrie dinamic interogări pentru a îmbunătăți performanța de interogare. Multe depozite de date utilizează aplicații BI care generează SQL, care este proiectat pentru a rula pe baze de date pentru furnizori multipli. Portabilitatea acestor aplicații este de multe ori în detrimentul unui SQL eficient. Performanța generală a sistemului Netezza și performanța individuală de interogare pot fi afectată de mai mulți factori, inclusiv concurente resurse de joburi în paralel, prioritate sesiunilor și interogărilor de funcționalitate lungă. Primul pas este validarea sistemului folosind nzstate și a înțelegerea care este următoarea rulare pe sistemul de Netezza folosind nzsession. După ce se determina că performanța interogării nu are un impact de starea asupra sistemului (eșuare S-Blades, etc.) sau de competiție a performanței jobului sau de prioritate a sesiunii se folosește nzsession uită-te la ora de începere pentru interogările active și identificarea interogărilor cu funcționare lungă care pot consuma o cantitate mare de resurse de sistem. Performanța individuală de interogare pot fi afectate de date semnificative oblice și / sau de prelucrare oblic.metodele Join pot de asemenea impacta performanța unui query. O partiționare hash în memorie este o metodă optimă pentru joinul dintre tabele. Oricum, dacă etapa de contrure a joinarii hash implică un număr foarte mare și nu poate fi suficientă memorie. în acest scenariu SNPS va procesa joinul hash ca un disc hash.

http://www.slideshare.net/bijugs/using-netezzaqueryplan

http://www.bpmnw.com/bpmnw/assets/File/YTW03202CAEN.PDF

http://www.ibmbigdatahub.com/sites/default/files/document/redguide_2011.pdf

http://www.ibmbigdatahub.com/sites/default/files/document/redguide_2011.pdf

Similar Posts