Documente Academic
Documente Profesional
Documente Cultură
sisteme
dedicate
special
stocrii
datelor
importante.
n acest articol voi face o istorie a ceea ce nseamn stocare datelor cu ajutorul
produselor
informatice.
DOS.
La jumtatea anilor 80, Sybase a lansat propriul sau SGBDR - SQL Server. Acesta
avea biblioteci client pentru accesul la baza de date. Asigurnd suportul pentru proceduri
rezidente (astzi denumite proceduri stocate") si interoperabilitatea cu o diversitate de
reele, SQL Server a devenit un produs de succes n scurt timp, mai ales n mediile
client/server.
O dat cu dezvoltarea sistemelor personale (PC), au aprut i primele aplicaii de
baze de date care foloseau un singur fiier pentru a stoca toata informaia din baza de
date (denumite baze de date flat file"). Ele erau de tip Xbase, un limbaj care s-a rspndit
foarte repede fiind folosit in special la manipularea datelor. Sistemele care l-au folosit,
daca mai este nevoie sa le enumr, au fost dBase, FoxBase, FoxPro. Aceste versiuni rulau
sub sistemul MS-DOS i mprteau limitrile acestuia. Cea mai rspndit aplicaie care
folosea limbajul xBase a fost FoxPro, sistem dezvoltat de firma Fox Software. Chiar i n
zilele noastre exist firme care stocheaz alte extrem de importante n baze de date
FoxPro, iar cel mai cunoscut exemplu este cel al organizaiei care gestioneaz Euro Tunel.
Aceasta folosete o aplicaie care gestioneaz cteva sute de GB de date.
La nceputul anilor 90, firma Microsoft Corporation a lansat aplicaia Access, aplicaie
care se bazeaz n mare parte pe logica de stocare a sistemului FoxPro, sistem care
fusese achiziionat de firm n 1989. Aplicaia Access a devenit, n scurt timp, cea mai
folosit aplicaie de gestiune a bazelor de date flat file" de pe sistemele personale. Ajuns
acum la versiunea 9 (denumit 2000), sistemul de stocare s-a schimbat fiind pregtit s
fie scalat oricnd ctre o baza de date Microsoft SQL Server. Totodat, ncepnd cu
versiunea 7 i s-a adugat un limbaj de programare dedicat (Visual Basic for Applications VBA), bazat pe limbajul de programare Visual Basic. Prin intermediul acestuia se puteau
manipula datele mai uor, se puteau folosi automatisme pentru diverse interogri, afiri
etc. ncepnd cu versiunea 9, limbajul integrat este compatibil cu Visual Basic i cu
limbajul folosit de MS SQL Server.
n privina sistemelor server, piaa s-a dezvoltat uimitor de repede deoarece s-a
constatat ct de folositoare sunt sistemele dedicate acestui lucru. Oracle a lansat i i-a
dezvoltat baza de aplicaii server, astzi ajungnd la versiunea 9. ncepnd cu versiunea
8i, au fost introduse extensii orientate pe obiecte. Lansat cu ocazia Oracle OpenWorld ,
Oracle 9i reprezint cea mai complet infrastructura pregtit pentru rularea aplicaiilor
Internet. Oracle 9i include Oracle 9i Database si Oracle 9i Application Server si pachetul
de unelte de dezvoltare Oracle 9i Developer Suite.
n ceea ce privete corporaia Microsoft, aceasta a lansat tot n anul 2000 serverul
de baze de date SQL Server 2000. Aplicaia se dorete a fi un concurent direct pentru
aplicaiile Oracle, iar pentru acest fapt i s-a adugat suport 100% pentru limbajul XML
prin intermediul cruia se poate interoga direct serverul dintr-un browser (dac serverul a
fost configurat s suporte aceast facilitate).
Tot n 2000, compania IBM a lansat varianta 7 a aplicaiei DB 2. Aceasta aplicaie,
ca i Oracle, este implementata pe mai multe platforme (inclusiv Linux), fiind o aplicaie
pur obiectual. Si pentru ca am ajuns la aplicaii de baze de date obiectuale, trebuie s
amintim
de
aplicaia
companiei
Computer
Associates,
Jasmine.
Pe sistemele Linux, cel mai folosit server de baze de date este MySQL. Cu toate c
exist un alt produs gratuit (MySQL este gratuit att timp ct aplicaia dezvoltata nu este
revnduta) - PostgreSQL, MySQL rmne preferatul programatorilor de Linux. De ce?
Pentru c limbajul cel mai folosit pe partea de server web - PHP - dispune de o extensie
MySQL nglobat. Dar nu numai acest lucru a influenat folosirea MySQL. Una dintre
alegeri a fost i datorit uurinei administrrii acestui sever, el dispunnd de un client de
accesare inclus.
paralel att un volum mare de tranzacii mici ct i tranzacii cu prelucrarea de lung durat
datelor. InterBase are o tehnologie unic de delimitare a tranzaciilor, care nu blocheaz
comenzile de citire i nscriere, fiindc tranzaciile nu necesit blocarea tuplelor folosite. i
aceste tranzacii nu necesit programare adugtoare.
Arhitectura sa SuperServer mrete performana i optimizeaz resursele
sistemului, n special pentru un numr mare de utilizatori, fiindc este realizat
pe prelucrare n procese paralele. Un concept de baz a arhitecturii SuperServer
este colectarea centralizat a informaiei despre utilizatori, a statisticii despre
Baza de Date i apelurile clienilor. Aceasta permite pstrarea informaiei des
utilizate n cache i mbuntete timpul de rspuns.
Instalarea serverului necesit doar 10 MB de memorie ceea ce ne permite
s nu ne gndim la spaiu liber la instalare. Alt lucru la care nu trebuie de pierdut
timpul este ajustarea parametrilor, fiindc InterBase optimizeaz tranzaciile
pentru d-st.
S enumerm unele din posibilitile principale:
notificatorii de evenimente;
trighere;
proceduri stocate;
n 1986, InterBase a elaborat primul SQL server cu suport a dou tipuri de date
avansate. BLOb (sunet, imagine, grafic sau informaie binar) i masive multidimensionale
(pn la 16 dimensiuni ntr-un cmp). Aceasta a fcut ca InterBase s fie alegerea pentru
aplicaiile tiinifice i multimedia cum atunci att i acum. Azi, WWW i aplicaiile de
telefonie utilizeaz BLOb foarte des pentru a oferi soluii multimedia. i cu InterBase
serverul este adoptat automat la utilizarea filtrelor, compresoarelor i convertoarelor de date,
de exemplu s transforme o fotografie scanat ntr-un fiier jpeg.
S admitem c dorii s mutai Baza de Date de pe un calculator pe o
soluie Client/Server. Sau avei nevoie s lrgii aplicaia n aa mod ca s fie
utilizat de mai multe departamente. n orice caz, InterBase este o soluie ideal
fiindc el a fost proiectat n special pentru medii de Baze de Date distribuite.
InterBase poate prelucra tranzaciile multi-server. Aceast posibilitate
automat asigur ca modificrile distribuite s fie acceptate (commited) fr vreo
intervenie special din partea aplicaiei. Cnd o tranzacie se extinde pe mai
multe servere, InterBase automat apeleaz serverele pentru s se asigure c ele
lucreaz, apoi transmite instruciunea comit pentru a termina tranzacia. Pe
lng aceasta InterBase permite, dac ceva sa ntmplat, de a anula tranzacia
pe toate serverele implicate.
InterBase este implementat utiliznd ANSI SQL-92. Aceast interfa standard
reduce considerabil timpul de adoptare la InterBase a elaboratorilor noi. El se
utilizeaz
la
implementarea
procedurilor
stocate,
trigherelor,
restriciilor
Limbajul
SQL
(Structured
Query
Language
Limbaj
de
Interpelri
Internaional
de
Standardizare
ISO
(International
Standards
n lumea calculatoarelor, utilizatorul care are limbajul dat, are un mare avantaj n
utilizarea i generalizarea informaiei dintr-un ir de surse cu ajutorul unui mare numr de
metode.
Elegana i independena de la specificul tehnologiilor informaionale, i
susinerea lui de ctre liderii industriei n sfera tehnologiei bazelor de date
relaionale, a fcut limbajul SQL limbaj standard de baz. Din aceast cauz oricine
care dorete s lucreze cu bazele de date a anilor 90, trebuie s cunoasc SQL.
Standardul SQL este determinat de ANSI (American National Standards
Institute) i n momentul de fa el este acceptat i de ISO (Organizaia
Internaional a Standardelor). ns majoritatea programelor comerciale a bazelor
de date l lrgesc fr a pune la cunotin ANSI, adugnd diverse particulariti n
acest limbaj, care, cum ei cred c ele vor fi forte folositoare. Cteodat ele ceva
schimb standardul limbajului, dar ideile bune au tendina de a se dezvolta i
curnd devin standarde a "pieei" de la sine ele n puterea folositoare a calitilor
sale.
Toate serverele BD care lucreaz cu BDE prin SQL Links sunt nite sisteme
industriale complicate i lucreaz pe baza extensiilor proprii ale limbajului. n acest caz BDE
pur i simplu transmite cererea la server, fr a o transla sau modifica. Este evident c, n
acest caz elaboratorul aplicaiei trebuie s cunoasc aceast variant SQL.
DML)
SELECT
(selectare)
INSERT
(inserare)
UPDATE
(modificare)
DELETE
(tergere)
Din punctul de vedere a interfeei aplicate exist dou tipuri de comenzi SQL:
SQL interactiv
SQL incorporat.
SQL interactiv se utilizeaz n utilize speciale (de tipul WISQL sau DBD), care
dau posibilitatea n regim interactiv introducerea interpelrilor cu utilizarea
comenzilor SQL, trimiterea lor pentru execuie la server i pentru a primi rezultate n
fereastra care este destinat pentru aceasta. SQL incorporat se folosete n
programele aplicate, i le permite s trimit interpelri la server i s prelucreze
rezultatele primite, i cu tot mai mult combinnd orientare - set i orientarea record.
SELECT poate, de asemenea, ntoarce date din multiple tabele, setnd lista numelor
tabelelor n clauza FROM, separate prin virgul.
Operatorul LIKE
Operatorul LIKE ne d posibilitatea de a folosi caractere speciale n text.
Caracterele speciale snt acele caractere care au o semnificaie special cnd snt
folosite n condiia de cutare. Caracterul (%) va semnifica unul sau mai multe
caractere, (_) un singur caracter.
Operatorii Logici
Toate exemplele de pn acum au inclus numai cte o condiie de cutare.
ns, n SQL avem posibilitatea de a include orice numr de condiii de cutare n
clauza WHERE combinndu-le cu ajutorul operatorilor AND sau OR.
Cnd AND apare ntre condiiile de cutare, ambele condiii trebuie s fie
adevrate pentru ca nscrierea s fie ntoars.
Cnd OR apare ntre condiiile de cutare, numai una din condiii trebuie s
fie adevrat pentru ca nscrierea respectiv s fie ntoars.
Cnd introducem condiii de cutare compuse, trebuie s inem cont de
ordinea de evaluare a condiiilor.
Funciile agregate
SQL pune la dispoziie funcii agregate care calculeaz o singur valoare
dintr-un grup de valori. Grupul de valori sunt toate datele dintr-un cmp particular
pentru setul dat de nscrieri. Funciile agregate pot fi folosite n cadrul clauzei
SELECT, sau oriunde n cadrul instruciunii SELECT unde se folosete valoarea.
Clauza HAVING
La fel ca i clauza WHERE care reduce numrul nscrierilor ntoarse de clauza
SELECT, clauza HAVING poate fi folosit pentru a reduce numrul de nscrieri
ntoarse de clauza GROUP BY. La fel ca i clauza WHERE, clauza HAVING are condiie
de cutare. n clauza HAVING condiia de cutare corespunde tipic unei funcii
agregate folosite n clauza SELECT.
De obicei, cererea ntoarce nscrieri n ordinea natural, ordine n care
nscrierile snt gsite n tabel. Deoarece pstrarea datelor n tabele este de obicei
neordonat (nesortat), rezultatul cererii va fi de asemenea nesortat. Clauza ORDER
BY
Pentru a introduce mai multe tuple de date, trebuie s fie specificat o select expresie care
extrage datele dintr-o tabel pentru a le introduce n tabela aceasta. Coloanele selectate trebuie s
corespund cu coloanele vizate pentru introducere.
Este permis de a alege cmpuri de date din acelai tabel n care dorim s
efectum introducerea, dar aa practic nu se recomand deoarece poate cauza in
introducerea infinit de tuple.
UPDATE
Modific parial sau n ntregime tuplul existent de date dintr-un tabel sau
view. Disponibil n SQL, DSQL i isql.
UPDATE modific unul sau mai multe tuple dintr-un tabel sau view existent.
UPDATE este una din privilegiile SGBD controlate de ctre GRANT i REVOKE
DELETE
Modific parial sau n ntregime tuplul existent de date dintr-un tabel sau
view. Disponibil n SQL, DSQL i isql.
DELETE specific unul sau mai multe tuple pentru tergere din tabel sau view care poate
fi modificat. DELETE este una din privilegiile SGBD controlate de ctre GRANT i REVOKE.
Pentru crearea unei baze de date se utilizeaz comanda CREATE DATABASE. Aceast
comand permite de asemenea ataarea unei baze de date la un fiier creat anterior.
database_name numele bazei de date. Acest nume trebuie s fie unic pe server i s
corespund cerinelor standard asupra identificatoarelor. Poate avea lungimea maximal de 128
de caractere. n cazul n care utilizatorul nu specific numele fiierului log sistemul MS SQL
Server automat genereaz un nume de fiier prin adugarea unui sufix la numele bazei de date. n
asemenea cazuri numele bazei de date trebuie s aib maximum 123 caractere.
ON specific n mod explicit lista de fiiere n care va fi amplasat grupul primar de
fiiere ale bazei de date. Aici pot fi indicate att numele de fiiere ct i numele grupurilor de
fiiere.
PRIMARY specific faptul c grupul de fiiere va fi primar
n indic faptul c pot fi indicate mai multe fiiere pentru baza de date
LOG ON definete n mod explicit fiierele de nregistrare a tranzaciilor. n cazul n care
lipsete opiunea LOG ON se va crea doar un singur fiiere de nregistrare a tranzaciilor.
Numele acestui fiier va fi generat automat, iar dimensiune lui va constitui 25% din dimensiune
bazei de date.
FOR LOAD este inclus n MS SQL Server 7.0 pentru compatibilitate cu versiunile
anterioare, dar nu se recomand de a fi utilizat.
FOR ATTACH se utilizeaz pentru a crea o baz de date nou prin ataarea unei baze de
date existente. Opiune <filespec> indic fiierele care formau baza de date veche. Pentru a ataa
o baz de date veche la MS SQL Server este necesar ca s coincid codul de pagin i ordinea de
sortare (parametrii Code Page i Sort Order).
NAME logical_file_name specific numele bazei de date. Numele bazei de date nu este
necesar dac ea se creiaz prin ataarea unei de baze de date existente. Numele creat prezint un
nume de referin al bazei de date i va putea fi utilizat n orice comand Tranzact-SQL. Numele
logical_file_name trebuie s fie unic pe server.
FILENAME 'os_file_name' specific numele fizic al fiierului pe disc. Trebuie s
conin numele discului i calea de acces. Dac fiierul a fost creat ntr-o partiie RAW, atunci nu
este nevoie de a se specifica i numele directorului, se specific doar numele discului. De
asemenea nu se specific nici parametrii MAXSIZE i FILEGROWTH fiindc fiierul va ocupa
ntreaga partiie.
SIZE size specific dimensiunea iniial a bazei de date. Dac parametrul SIZE lipsete,
dimensiunea fiierului primar al bazei de date ce se creeaz va fi egal cu dimensiunea fiierului
model. Dac dimensiunea lipsete n definiia fiierului secundar sau n definiia fiierului de
nregistrare a tranzaciilor, dimensiunea predefinit va fi egal cu 1 MB. Dimensiunea implicit se
indic n MB, dar utilizatorul poate indica i dimensiunea n KB. Valoarea minimal pentru
dimensiunea unei baze de date este de 512 KB.
MAXSIZE max_size [UNLIMITE] specific dimensiune maximal a fiierului definit
n <filespec>. Aceast dimensiune de asemenea poate fi definit n KB sau MB. Dac nu a fost
indicat parametrul MAXSIZE sau dac[ a fost specificat i parametrul UNLIMITED, atunci
dimensiunea maximal a fiierului va fi egal cu dimensiunea discului.
FILEGROWTH growth_increment specific mrimea de incrementare a fiierului. De
fiecare dat cnd dimensiunea curent nu este suficient pentru nregistrarea informaiei sosite,
fiierul i va mri dimensiunile cu valoarea indicat n parametrul FILEGROWTH. Valoarea de
incrementare poate fi indicat n MB, KB sau % (n procente fa dimensiunea fiierului la
momentul incrementrii).Dac acest parametru nu a fost indicat la momentul crerii bazei de
date valoarea incrementului va fi de 10%. Valoarea calculat n procente va fi rotunjit pn la
64 KB.
Remarc
1. Crearea bazei de date cu ajutorul comenzii CREATE DATABASE are loc n dou
etape:
Se copie structura bazei de date model cu caracteristicile iniiale ale bazei
de date.
fiierul primar. Fiierul secundare pot fi mai multe dar poate s nu fie nici
unul, dac fiierul prima este suficient de mare ca s ncap n el ntreaga
baz de date.
obligatoriu. Ele post fi mai multe. Dimensiunea minimal a uni fiier este de
512 KB.
Comanda CREATE DATABASE permite accesul asupra bazei de date utilizatorilor cu rol
de sysadmin i dbcreator. Aceti utilizatori pot permite i altora utilizarea bazei de date
atribuindu-le rolul dbcreator. De regul comanda CREATE DATABASE este permis doar unui
numr restrns de utilizatori.
n continuare vom examina o serie de exemple de utilizare a comenzii de creare a unei
baze de date.
Tabele se numesc acele obiecte ale unei baze de date n care se conin toate datele.
Definiia unui tabel reprezint un set de coloane. Tabelele sunt organizate n form de linii
Elementele de date se afl la intersecia liniilor i a coloanelor (similar cu tabelele electronice).
Fiecare linie n tabel reprezint un singur articol, fiecare coloan reprezint un cmp
al
Aa dar, pentru a proiecta un tabel este necesar de tiut ce tipuri de date susine Sistemul
Microsoft SQL Server. Pot fi folosite tipurile standard de date (tipuri de baz) sau tipuri definite
de utilizator. Atribuirea unui tip de date fiecrei coloane constituie primul pas n proiectarea
oricrei baze de date. Prin definirea tipului de date a unei coloane se definete mulimea valorilor
admisibile pentru coloana respectiv.
De exemplu dac o coloan conine nume de persoane, atunci tipul acestei coloane va fi
ir de caractere, iar dac o coloan va trebuie s conine numai valori numerice, atunci tipul
coloanei respective va fi numeric. Utilizarea corect att a tipurilor de date predefinite ct i a
tipurilor de date definite de utilizator va da o mai mare garanie de integritate a datelor, deoarece
orice valoare introdus n baza de date va corespunde tipului de date definit n comanda de
creare a tabelului.
Microsoft SQL Server conine urmtoarele tipuri de date predefinite mprite n mai
multe grupe:
Date de tip Numere ntregi
bit numere ntregi care pot lua una din dou valori: 0 sau 1.
int numr ntreg cu semn pe 4 octei, valori admisibile de la -2^31 (2,147,483,648) pn 2^31 - 1 (2,147,483,647).
smallint numr ntreg cu semn pe 2 octei, valori posibile de la 2^15 (32,768) pn la 2^15 - 1 (32,767).
tinyint numr ntreg fr semn pe 1 octet, valori posibile de la 0 la 255.
Date de tip Numere zecimale cu virgula constant:
decimal numere zecimale cu virgula fixat, valori posibila ntre -10^38 -1
i 10^38 -1.
numeric sinonim cu tipul decimal.
Volum de memorie
1-9
10-19
20-28
13
29-38
17
de
la
-2^63
(-922,337,203,685,477.5808)
pn
la
2^63
(+922,337,203,685,477.5807).
smallmoney numere zecimal cu 4 cifre dup virgul, ia valori n intervalul
de la
-214,748.3648 pn la +214,748.3647.
Date de tip Numere zecimale cu virgula mobil:
float numere zecimale cu virgula flotant n intervalul de la -1.79E + 308
pn 1a.79E + 308.
real numere zecimale cu virgula flotant n intervalul de la -3.40E + 38
pn la 3.40E + 38.
Date de tip Date calendaristice i timp:
datetime pstreaz data i ora. Data poate fi o valoarea n intervalul de la
1 ianuarie anul 1753 pn la 31 decembrie anul 9999. Timpul se definete cu
exactitate de sutimi de secunde.
smalldatetime pstreaz data i ora. Data poate lua o valoare din
intervalul de la 1 ianuarie anul 1900 pn la 6 iunie anul 2097. Timpul se pstreaz
cu exactitate de minute.
Date de tip ir de caractere
char iruri de caractere non-Unicod de lungime fixat (maximum 8000
caractere)
varchar - iruri de caractere non-Unicod de lungime variabil (maximum
8000 caractere)
text - iruri de caractere non-Unicod de lungime variabil (lungimea
maximal 2^31 sau 1 (2,147,483,647 caractere).
nchar - iruri de caractere Unicod de lungime fixat (maxium 4000
caractere)
nvarchar - iruri de caractere Unicod de lungime variabil (maxium 8000
caractere)