SlideShare a Scribd company logo
1 of 13
Universitatea Tehnică “Gheorghe Asachi” Iaşi
                        Facultatea de Automatică şi Calculatoare
                        Catedra de Automatică




                     Sisteme de Gestiune a Bazelor de Date
                                  Distribuite
                      -Partiţionarea în SQL Server 2012-


Student: Răzvan-Adrian Onofrei
Îndrumător:Șef Lucr.dr.ing. Florin OSTAFI
Prezentarea proiectului
Proiectul îşi propune:
 Implementarea unei baze de date relaţionale
 Explicarea şi implementarea tehnicii de partiţionare a
  tabelelor
 Creearea unei aplicaţii care să exemplifice conceptul de
  sistem de gestiune a bazelor de date partiţionate
Conceptul de bază de date relaţională
   O bază de date este o colecţie de date organizată
    (structurată). O bază de date are, în principal,
    următoarele roluri: stocare (memorare) şi organizarea
    datelor (structurare).
    Ca şi utilitate, bazele de date ne permit memorarea unor
    cantităţi mari de date,regăsirea datelor pe baza unor
    criterii de căutare dar şi prelucrarea unor volume mari de
    date (filtrare, ordonare, agregare).
   În bazele de date relaţionale datele sunt văzute ca şi
    atribute ale entităţilor reale şi sunt stocate în tabele
    legate între ele prin relaţii.
    Acest mod de structurare a datelor permite eliminarea
    redundanţei, astfel încât stocarea şi modificarea unei
    informaţii se face într-un singur loc. Din punct de vedere
    funcţional această structură permite regăsirea, filtrarea,
    ordonarea şi agregarea datelor, în mod natural.
Schema bazei de date folosită în aplicaţie
Particularităţi ale bazei de date

   În tabelul Clienţi datele se inserează automat atunci
    când un client îşi face cont
   Între tabelele Autogări şi Curse observăm două relaţii
    de tipul 1÷n. Aceste relaţii corespund cheilor străine
    PlecareAutogarăId şi SosireAutogarăId din tabelul Curse
   Pe câmpul Durată din tabelul clienţi avem aplicat un
    trigger care se execută automat la opetaţii de insert sau
    update asupra tabelului şi care calculează automat
    durata cursei
Particularităţi ale bazei de date
   insert into curse values(7,4 ,'05:00:00', 5,
    '06:30:00',null,'Teisa');
Partiţionarea
   Partiţionarea este o tehnică utilă ce permite obiectelor de
    dimensiuni mari din cadrul unei baze de date să fie
    împărţite în componente mai mici mult mai uşor de
    utilizat
   Am hotărât ca cheia de partiţionare să fie numele
    companiei. Tabelele partiționate sunt: Autobuze, Curse
    și Rezervări. Am presupus existența a trei companii de
    transport: Massaro, Priscom și Teisa. Partiţionarea
    tabelelor de mai sus se face după o schemă de
    partiţionare care foloseşte 4 grupuri de fişiere, dar efectiv
    doar 3(corespund celor 3 companii de transport). Ultimul
    grup, PRIMARY, este necesar schemei de partiţionare,
    dar rămâne nepopulat.
Partiţionarea
   Funcţia de partiţie este baza logică a oricărei partiţionări
    de tabele, pentru că ea determină împărţirea pe partiţii a
    datelor din tabele.
USE [Autogari]
GO
CREATE PARTITION FUNCTION [NumeCompaniePFN](nvarchar(50)) AS RANGE LEFT FOR VALUES (N'Massaro',
    N'Priscom', N'Teisa')
GO

   Schema de partiţie este baza logică peste care se
    partiţionează tabelele.
USE [Autogari]
GO
CREATE PARTITION SCHEME [NumeCompaniePScheme] AS PARTITION [NumeCompaniePFN] TO ([Priscom],
    [Teisa], [Massaro], [PRIMARY])
GO

   Se folosesc la declarare 4 grupuri de fişiere, dar după
    cum s-a menţionat, ultimul va rămâne necompletat,
    pentru că funcţia creata este de tip RANGE LEFT
Studiu de caz
   Pentru a exemplifica partiţionarea vom rula funcţiile
    [AlegeAutobuzePartition] și [AlegeCursePartition] pentru
    compania Priscom. Funcțiile folosesc ID-ul autobuzelor
    și respectiv al curselor, de aceea este necesar să
    interogăm cele două tabele în prealabil.

    select * from Autobuze;     select IdCurse,AutobuzeId,
                                Durata,NumeCompanie from
                                Curse;
Studiu de caz
   După cum se observă compania Priscom deține
    autobuzul cu id-ul 9 și efectuează cursa cu id-ul 7. Deci
    parametrii de intrare ai celor două funcții vor fi 9
    respectiv 7.




 Pentru firma Priscom s-a alocat partiția cu numărul 2. Asta
înseamnă că toate înregistrările din tabelele Autobuze și
Curse care se referă la această firmă se află pe partiția
numărul 2.
Studiu de caz
   Pentru a observa mai bine cum sunt împarţite datele pe
    partiţii vom rula urmatoarea interogare pe tabelul
    autobuze:
    select * from Autobuze;   SELECT
                              $PARTITION.NumeCompaniePFN(NumeCompanie)
                              AS Partition, COUNT (*) AS [COUNT] FROM
                              dbo.autobuze GROUP BY
                              $PARTITION.NumeCompaniePFN(NumeCompanie)O
                              RDER BY Partition ;
Avantaje şi dezavantaje ale partiţionării


+Deşi tabelul este văzut ca un tot unitar mentenanţa se
  poate face şi la nivel de partiţie
+Partiţiile individuale pot exista pe diferite sub sisteme
  hardware

-Complexitatea
   Va multumesc pentru timpul acordat!

More Related Content

Similar to Prezentare adrianonofrei

Proiect programare web
Proiect programare webProiect programare web
Proiect programare webOana Assd
 
Introducere baza de-date
Introducere baza de-dateIntroducere baza de-date
Introducere baza de-dateChelariu Mihai
 
Baze+de+date
Baze+de+dateBaze+de+date
Baze+de+dateClaudia
 
Baze+de+date[2]
Baze+de+date[2]Baze+de+date[2]
Baze+de+date[2]Claudia
 
Bigtable - sistem distribuit de stocare a datelor
Bigtable - sistem distribuit de stocare a datelorBigtable - sistem distribuit de stocare a datelor
Bigtable - sistem distribuit de stocare a datelorRemus Sinorchian
 
Dezvoltarea Aplicatiilor Web
Dezvoltarea Aplicatiilor WebDezvoltarea Aplicatiilor Web
Dezvoltarea Aplicatiilor Webdanielnastase
 
6 access 2003 partea a ii-a
6 access 2003   partea a ii-a6 access 2003   partea a ii-a
6 access 2003 partea a ii-aAnghel Cristina
 
Modelarea si performantele_sistemelor_de_stocare
Modelarea si performantele_sistemelor_de_stocareModelarea si performantele_sistemelor_de_stocare
Modelarea si performantele_sistemelor_de_stocaregeorgesoica
 

Similar to Prezentare adrianonofrei (9)

Proiect programare web
Proiect programare webProiect programare web
Proiect programare web
 
Introducere baza de-date
Introducere baza de-dateIntroducere baza de-date
Introducere baza de-date
 
Baze+de+date
Baze+de+dateBaze+de+date
Baze+de+date
 
Baze+de+date[2]
Baze+de+date[2]Baze+de+date[2]
Baze+de+date[2]
 
Bigtable - sistem distribuit de stocare a datelor
Bigtable - sistem distribuit de stocare a datelorBigtable - sistem distribuit de stocare a datelor
Bigtable - sistem distribuit de stocare a datelor
 
Dezvoltarea Aplicatiilor Web
Dezvoltarea Aplicatiilor WebDezvoltarea Aplicatiilor Web
Dezvoltarea Aplicatiilor Web
 
Stroia_Laurentiu
Stroia_LaurentiuStroia_Laurentiu
Stroia_Laurentiu
 
6 access 2003 partea a ii-a
6 access 2003   partea a ii-a6 access 2003   partea a ii-a
6 access 2003 partea a ii-a
 
Modelarea si performantele_sistemelor_de_stocare
Modelarea si performantele_sistemelor_de_stocareModelarea si performantele_sistemelor_de_stocare
Modelarea si performantele_sistemelor_de_stocare
 

Prezentare adrianonofrei

  • 1. Universitatea Tehnică “Gheorghe Asachi” Iaşi Facultatea de Automatică şi Calculatoare Catedra de Automatică Sisteme de Gestiune a Bazelor de Date Distribuite -Partiţionarea în SQL Server 2012- Student: Răzvan-Adrian Onofrei Îndrumător:Șef Lucr.dr.ing. Florin OSTAFI
  • 2. Prezentarea proiectului Proiectul îşi propune:  Implementarea unei baze de date relaţionale  Explicarea şi implementarea tehnicii de partiţionare a tabelelor  Creearea unei aplicaţii care să exemplifice conceptul de sistem de gestiune a bazelor de date partiţionate
  • 3. Conceptul de bază de date relaţională  O bază de date este o colecţie de date organizată (structurată). O bază de date are, în principal, următoarele roluri: stocare (memorare) şi organizarea datelor (structurare). Ca şi utilitate, bazele de date ne permit memorarea unor cantităţi mari de date,regăsirea datelor pe baza unor criterii de căutare dar şi prelucrarea unor volume mari de date (filtrare, ordonare, agregare).  În bazele de date relaţionale datele sunt văzute ca şi atribute ale entităţilor reale şi sunt stocate în tabele legate între ele prin relaţii. Acest mod de structurare a datelor permite eliminarea redundanţei, astfel încât stocarea şi modificarea unei informaţii se face într-un singur loc. Din punct de vedere funcţional această structură permite regăsirea, filtrarea, ordonarea şi agregarea datelor, în mod natural.
  • 4. Schema bazei de date folosită în aplicaţie
  • 5. Particularităţi ale bazei de date  În tabelul Clienţi datele se inserează automat atunci când un client îşi face cont  Între tabelele Autogări şi Curse observăm două relaţii de tipul 1÷n. Aceste relaţii corespund cheilor străine PlecareAutogarăId şi SosireAutogarăId din tabelul Curse  Pe câmpul Durată din tabelul clienţi avem aplicat un trigger care se execută automat la opetaţii de insert sau update asupra tabelului şi care calculează automat durata cursei
  • 6. Particularităţi ale bazei de date  insert into curse values(7,4 ,'05:00:00', 5, '06:30:00',null,'Teisa');
  • 7. Partiţionarea  Partiţionarea este o tehnică utilă ce permite obiectelor de dimensiuni mari din cadrul unei baze de date să fie împărţite în componente mai mici mult mai uşor de utilizat  Am hotărât ca cheia de partiţionare să fie numele companiei. Tabelele partiționate sunt: Autobuze, Curse și Rezervări. Am presupus existența a trei companii de transport: Massaro, Priscom și Teisa. Partiţionarea tabelelor de mai sus se face după o schemă de partiţionare care foloseşte 4 grupuri de fişiere, dar efectiv doar 3(corespund celor 3 companii de transport). Ultimul grup, PRIMARY, este necesar schemei de partiţionare, dar rămâne nepopulat.
  • 8. Partiţionarea  Funcţia de partiţie este baza logică a oricărei partiţionări de tabele, pentru că ea determină împărţirea pe partiţii a datelor din tabele. USE [Autogari] GO CREATE PARTITION FUNCTION [NumeCompaniePFN](nvarchar(50)) AS RANGE LEFT FOR VALUES (N'Massaro', N'Priscom', N'Teisa') GO  Schema de partiţie este baza logică peste care se partiţionează tabelele. USE [Autogari] GO CREATE PARTITION SCHEME [NumeCompaniePScheme] AS PARTITION [NumeCompaniePFN] TO ([Priscom], [Teisa], [Massaro], [PRIMARY]) GO  Se folosesc la declarare 4 grupuri de fişiere, dar după cum s-a menţionat, ultimul va rămâne necompletat, pentru că funcţia creata este de tip RANGE LEFT
  • 9. Studiu de caz  Pentru a exemplifica partiţionarea vom rula funcţiile [AlegeAutobuzePartition] și [AlegeCursePartition] pentru compania Priscom. Funcțiile folosesc ID-ul autobuzelor și respectiv al curselor, de aceea este necesar să interogăm cele două tabele în prealabil. select * from Autobuze; select IdCurse,AutobuzeId, Durata,NumeCompanie from Curse;
  • 10. Studiu de caz  După cum se observă compania Priscom deține autobuzul cu id-ul 9 și efectuează cursa cu id-ul 7. Deci parametrii de intrare ai celor două funcții vor fi 9 respectiv 7.  Pentru firma Priscom s-a alocat partiția cu numărul 2. Asta înseamnă că toate înregistrările din tabelele Autobuze și Curse care se referă la această firmă se află pe partiția numărul 2.
  • 11. Studiu de caz  Pentru a observa mai bine cum sunt împarţite datele pe partiţii vom rula urmatoarea interogare pe tabelul autobuze: select * from Autobuze; SELECT $PARTITION.NumeCompaniePFN(NumeCompanie) AS Partition, COUNT (*) AS [COUNT] FROM dbo.autobuze GROUP BY $PARTITION.NumeCompaniePFN(NumeCompanie)O RDER BY Partition ;
  • 12. Avantaje şi dezavantaje ale partiţionării +Deşi tabelul este văzut ca un tot unitar mentenanţa se poate face şi la nivel de partiţie +Partiţiile individuale pot exista pe diferite sub sisteme hardware -Complexitatea
  • 13. Va multumesc pentru timpul acordat!