Un avantaj semnificativ al utilizării unui RDBMS este „integritatea referențială”. Integritatea referențială se referă la acuratețea și consistența datelor. Această integritate a datelor se realizează prin utilizarea acestor chei primare și străine.
Integritatea referențială păstrează integritatea datelor prin „constrângeri”. Constrângerile sunt regulile care impun acuratețea datelor, împiedicând ștergerea unei înregistrări conexe fără ca mai întâi să fie ștearsă înregistrarea primară din tabelul principal. Dacă a fost adăugată în mod corespunzător o relație cheie primară-străină, atunci încercarea de a șterge o înregistrare primară fără a elimina mai întâi înregistrările conexe din alte tabele va bloca tranzacția până când înregistrările conexe sunt eliminate. Acest lucru previne ceea ce se numește „înregistrări orfane”, care sunt înregistrări la care se face referire într-un tabel și care nu mai au o înregistrare primară în tabelul principal.
Cele trei reguli pe care le aplică integritatea referențială sunt:
1. O cheie străină trebuie să aibă o cheie primară corespunzătoare. (Regula „fără orfani”.)
2. Când o înregistrare dintr-o tabelă primară este ștearsă, toate înregistrările aferente care fac referire la cheia primară trebuie, de asemenea, să fie șterse, ceea ce se realizează, de obicei, prin utilizarea ștergerii în cascadă.
3. Dacă cheia primară pentru o înregistrare se modifică, toate înregistrările corespunzătoare din alte tabele care utilizează cheia primară ca cheie externă trebuie, de asemenea, să fie modificate. Acest lucru poate fi realizat prin utilizarea unei actualizări în cascadă.
Cercetarea datelor într-un sistem de gestionare a bazelor de date relaționale se realizează prin utilizarea limbajului de interogare structurat (SQL), care este un limbaj robust conceput pentru gestionarea datelor găzduite într-o bază de date relațională.
SQL are capacitatea de a crea, prelua, actualiza și șterge înregistrări și se bazează în mare măsură pe această relație cheie primară/străină pentru a identifica datele aferente din mai multe tabele. Capacitățile SQL fac din sistemul de baze de date relaționale prima alegere pentru orice aplicație care necesită o funcționalitate tranzacțională puternică, extragere de date și raportare complexă.
Această instrucțiune SQL demonstrează recuperarea unui set de rezultate despre cum ar fi recuperate toate înregistrările de vânzări pentru un singur angajat al cărui EmployeeId = 1.
SELECT * FROM Employees
JOIN Sales ON Employees.EmployeeId = SALES.EmployeeId
WHERE EmployeeId = 1
Acest enunț SQL următor este un exemplu de interogare care implementează îmbinări pe mai multe tabele. În acest caz, interogarea SQL recuperează toate informațiile despre angajați, informațiile despre vânzări și informațiile despre clienți din tabelul Customers.
SELECT * FROM Employees
JOIN Sales ON Employees.EmployeeId = SALES.EmployeeId
JOIN Customers ON Customers.CustomerId = SALES.CustomerId
WHERE EmployeeId = 1
Bazele de date relaționale oferă, de asemenea, o funcționalitate numită „indexare”. Un index de bază de date este o structură de date care îmbunătățește viteza de regăsire a datelor. Indicii sunt adăugați în mod obișnuit la câmpurile de date care sunt utilizate în mod obișnuit pentru interogarea și îmbinarea tabelelor. În declarațiile SQL de mai sus, EmployeeId și CompanyId ar fi candidate pentru acest tip de optimizare.
Baze de date nerelaționale
Bazele de date nerelaționale, sau baza de date NoSQL, stochează date. Cu toate acestea, spre deosebire de baza de date relațională, nu există tabele, rânduri, chei primare sau chei străine. În schimb, baza de date non-relațională utilizează un model de stocare optimizat pentru cerințele specifice ale tipului de date care este stocat.
Câteva dintre cele mai populare baze de date NoSQL sunt MongoDB, Apache Cassandra, Redis, Couchbase și Apache HBase.
Există patru tipuri non-relaționale populare: document data store, baza de date orientată pe coloane, key-value store și graph database. Adesea, combinații ale acestor tipuri sunt utilizate pentru o singură aplicație.
Stocuri de date de documente
Un magazin de date de documente gestionează un set de câmpuri de șiruri de caractere numite și valori de date obiect într-o entitate denumită „document”, stocată de obicei sub formă de documente JSON, care pot fi codificate într-o varietate de moduri, inclusiv XML, YAML, JSON, BSON sau ca text simplu. Câmpurile din cadrul documentelor sunt expuse, permițând unei aplicații să interogheze și să filtreze datele folosind valorile câmpurilor.
Stocurile de documente nu cer ca toate documentele să mențină structuri de date identice, ceea ce oferă o mare flexibilitate. Este ușor de văzut atunci cum această flexibilitate poate fi valorificată pe măsură ce cerințele unei organizații se schimbă.
Stocuri de date columnare (sau orientate pe coloane)
Un magazin de date columnare organizează datele în coloane, ceea ce este similar din punct de vedere conceptual cu baza de date relațională. Adevăratul avantaj al unei baze de date cu coloane constă în abordarea denormalizată a structurării datelor rare, care provine din abordarea orientată pe coloane a stocării datelor.
Stocuri de tip cheie-valoare
Aceasta este cea mai puțin complicată dintre bazele de date NoSQL și, după cum indică și numele, stocul cheie-valoare este pur și simplu o colecție de perechi cheie-valoare conținute într-un obiect.
Stocuri de documente
Stocurile de documente sunt un pic mai complexe decât cele de tip cheie-valoare. Ele nu presupun o anumită structură de document specificată cu o schemă. Magazinul de documente este conceput pentru a stoca documentele de zi cu zi, așa cum sunt, și permit interogări complicate.
MongoDB și CouchDB sunt ambele exemple de magazine de documente.
Baze de date grafice
Ultimul este cel mai complex tip de bază de date non-relaționale. Este concepută pentru a stoca eficient relațiile dintre entități. Atunci când datele sunt foarte interconectate, cum ar fi sistemele de achiziție și de fabricație sau cataloagele de referință, bazele de date grafice sunt o soluție bună.
Posibilitățile pentru bazele de date grafice NoSQL sunt infinite și, având în vedere că datele pe care le colectăm devin din ce în ce mai interconectate, bazele de date grafice vor continua să câștige în popularitate, inclusiv baza de date relațională încă dominantă.
În loc de limbajul de interogare a structurii (SQL) utilizat de bazele de date relaționale, baza de date NoSQL utilizează Object-relational-mapping (ORM). Conceptul de ORM constă în capacitatea de a scrie interogări folosind limbajul de programare preferat. Unele dintre cele mai populare ORM-uri sunt Java, Javascript, .NET și PHP.
În rezumat
Ce trebuie să știți despre bazele de date relaționale:
-
Ele lucrează cu date structurate.
-
Relațiile din sistem au constrângeri, ceea ce promovează un nivel ridicat de integritate a datelor.
-
Există capacități de indexare nelimitate, ceea ce duce la timpi de răspuns mai rapizi la interogări.
-
Sunt excelente în păstrarea securității tranzacțiilor de date.
-
Oferă posibilitatea de a scrie interogări SQL complexe pentru analiza și raportarea datelor.
-
Modelurile lor pot asigura și aplica reguli de afaceri la nivelul datelor, adăugând un nivel de integritate a datelor care nu se găsește într-o bază de date nerelațională.
-
Sunt orientate pe tabele și rânduri.
-
Utilizează SQL (limbajul de interogare structurat) pentru modelarea și manipularea datelor, care este foarte puternic.
-
Exemple de baze de date SQL: MySql, Oracle, Sqlite, Postgres și MS-SQL. Exemple de baze de date NoSQL: MongoDB, BigTable, Redis, RavenDb, Cassandra, Hbase, Neo4j și CouchDb.
-
Bazele de date SQL se potrivesc cel mai bine pentru aplicațiile de tip tranzacțional cu sarcini grele.
Baze de date non-relaționale/NoSQL:
-
Acestea au capacitatea de a stoca cantități mari de date cu puțină structură.
-
Aprovizionează scalabilitate și flexibilitate pentru a răspunde cerințelor de afaceri în schimbare.
-
Oferă opțiuni fără schemă sau cu schemă la citire.
-
Au capacitatea de a capta toate tipurile de date „Big Data”, inclusiv date nestructurate.
-
Sunt orientate pe documente.
-
Baze de date NoSQL sau non-relaționale exemple: MongoDB, Apache Cassandra, Redis, Couchbase și Apache HBase.
-
Ele sunt cele mai bune pentru dezvoltarea rapidă a aplicațiilor. NoSQL este cea mai bună selecție pentru stocarea flexibilă a datelor cu puține sau deloc limitări de structură.
-
Acestea oferă un model de date flexibil, cu abilitatea de a stoca și combina cu ușurință date de orice structură, fără a fi necesară modificarea unei scheme.
Atunci, pe care ar trebui să o alegeți pentru proiectul dumneavoastră? Pentru răspunsul la această întrebare ne putem întoarce la începutul acestui articol. Aceste două tipuri foarte diferite de baze de date sunt la fel de utile în felul lor, dar din motive și pentru cazuri de utilizare contrastante. Una nu este neapărat mai bună decât cealaltă și atât bazele de date relaționale, cât și cele nerelaționale își au locul lor.
În concluzie, nu există un singur răspuns corect. Cel mai bun mod de a determina ce tip de bază de date este cel mai bun pentru proiectul dumneavoastră este să analizați nevoile organizației și funcționalitatea aplicației pe care trebuie să o realizați.