Az RDBMS használatának egyik jelentős előnye a “referenciális integritás”. A referenciális integritás az adatok pontosságára és konzisztenciájára utal. Ez az adatintegritás az elsődleges és idegen kulcsok használatával érhető el.
A referenciális integritás az adatok integritását “korlátozások” révén őrzi meg. A korlátozások azok a szabályok, amelyek az adatok pontosságát azáltal kényszerítik ki, hogy megakadályozzák egy kapcsolódó rekord törlését anélkül, hogy előbb a főtábla elsődleges rekordját törölnék. Ha egy elsődleges-idegen kulcs kapcsolat megfelelően lett hozzáadva, akkor az elsődleges rekord törlésének megkísérlése a kapcsolódó rekordok más táblákból történő eltávolítása nélkül blokkolja a tranzakciót, amíg a kapcsolódó rekordok nem kerülnek eltávolításra. Ez megakadályozza az úgynevezett “elárvult rekordok” kialakulását, amelyek olyan hivatkozott rekordok egy táblában, amelyeknek már nincs elsődleges rekordjuk a fő táblában.
A referenciális integritás három szabálya a következő:
1. Egy idegen kulcsnak rendelkeznie kell megfelelő elsődleges kulccsal. (“Nincs árvaság” szabály.)
2. Ha az elsődleges tábla egy rekordját töröljük, akkor az elsődleges kulcsra hivatkozó összes kapcsolódó rekordot is törölni kell, ami általában kaszkád törléssel történik.
3. Ha egy rekord elsődleges kulcsa megváltozik, akkor az elsődleges kulcsot idegen kulcsként használó más táblák összes megfelelő rekordját is módosítani kell. Ezt kaszkád frissítéssel lehet elérni.
A relációs adatbázis-kezelő rendszerben az adatok lekérdezése a Structured Querying Language (SQL) segítségével történik, amely egy robusztus nyelv, amelyet a relációs adatbázisban tárolt adatok kezelésére terveztek.
Az SQL képes rekordok létrehozására, lekérdezésére, frissítésére és törlésére, és nagymértékben támaszkodik az elsődleges/idegen kulcs kapcsolatra a több táblán keresztül kapcsolódó adatok azonosításához. Az SQL képességei miatt a relációs adatbázis-rendszer az első választás minden olyan alkalmazáshoz, amely erős tranzakciós funkcionalitást, adatbányászatot és összetett jelentéstételt igényel.
Ez az SQL utasítás bemutatja egy eredményhalmaz lekérdezését, hogy hogyan lehetne lekérdezni egy olyan alkalmazott összes értékesítési rekordját, akinek az EmployeeId = 1.
SELECT * FROM Employees
JOIN Sales ON Employees.EmployeeId = SALES.EmployeeId
WHERE EmployeeId = 1
Ez a következő SQL utasítás egy példa a több táblán történő egyesítéseket megvalósító lekérdezésre. Ebben az esetben az SQL-lekérdezés az összes munkavállalói adatot, az értékesítési adatokat és az ügyféladatokat a Customers táblából szerzi le.
SELECT * FROM Employees
JOIN Sales ON Employees.EmployeeId = SALES.EmployeeId
JOIN Customers ON Customers.CustomerId = SALES.CustomerId
WHERE EmployeeId = 1
A relációs adatbázisok az úgynevezett “indexelés” funkciót is biztosítják. Az adatbázis-index egy olyan adatszerkezet, amely javítja az adatlekérdezés sebességét. Az indexeket általában olyan adatmezőkhöz adják hozzá, amelyeket rutinszerűen használnak a táblázatok lekérdezéséhez és összekapcsolásához. A fenti SQL-kijelentésekben az EmployeeId és a CompanyId jelöltek lennének az ilyen típusú optimalizálásra.
Nem relációs adatbázisok
A nem relációs adatbázis vagy NoSQL adatbázis adatokat tárol. A relációs adatbázissal ellentétben azonban nincsenek táblák, sorok, elsődleges kulcsok vagy idegen kulcsok. Ehelyett a nem relációs adatbázis a tárolt adattípus speciális követelményeire optimalizált tárolási modellt használ.
A népszerűbb NoSQL-adatbázisok közé tartozik a MongoDB, az Apache Cassandra, a Redis, a Couchbase és az Apache HBase.
Négy népszerű nem relációs típus létezik: dokumentumadattároló, oszloporientált adatbázis, kulcs-érték tároló és gráf adatbázis. Gyakran e típusok kombinációit használják egyetlen alkalmazáshoz.
Dokumentum adattárolók
A dokumentum adattároló egy “dokumentumnak” nevezett entitáson belül kezeli a megnevezett karakterláncmezők és objektumadatok értékeit, amelyeket jellemzően JSON dokumentum formájában tárolnak, és amelyek többféleképpen lehetnek kódolva, például XML, YAML, JSON, BSON vagy egyszerű szöveg formájában. A dokumentumokon belüli mezők láthatóak, lehetővé téve az alkalmazás számára az adatok lekérdezését és szűrését a mezőértékek segítségével.
A dokumentumtárolók nem követelik meg, hogy minden dokumentum azonos adatstruktúrát tartson fenn, ami nagyfokú rugalmasságot biztosít. Könnyen belátható tehát, hogyan lehet ezt a rugalmasságot kihasználni, ha egy szervezet követelményei változnak.
Oszlopos (vagy oszloporientált) adattárolók
Az oszlopos adattároló oszlopokba rendezi az adatokat, ami koncepcionálisan hasonló a relációs adatbázishoz. Az oszlopos adatbázis igazi előnye a ritkás adatok strukturálásának denormalizált megközelítésében rejlik, ami az adatok tárolásának oszloporientált megközelítéséből ered.
Kulcs-érték tárolók
A NoSQL-adatbázisok közül ez a legkevésbé bonyolult, és ahogy a neve is mutatja, a kulcs-érték tároló egyszerűen egy objektumban található kulcs-érték párok gyűjteménye.
Dokumentumtárolók
A dokumentumtárolók egy kicsit összetettebbek, mint a kulcs-érték tárolók. Nem feltételeznek egy adott, sémával meghatározott dokumentumstruktúrát. A dokumentumtárolót úgy tervezték, hogy a mindennapi dokumentumokat úgy tárolják, ahogy vannak, és bonyolult lekérdezést tesznek lehetővé.
A MongoDB és a CouchDB is példa a dokumentumtárolókra.
Grafikus adatbázisok
A legutolsó a legösszetettebb nem relációs adatbázis-típus. Úgy tervezték, hogy hatékonyan tárolja az entitások közötti kapcsolatokat. Amikor az adatok nagymértékben összekapcsolódnak, mint például a beszerzési és gyártási rendszerek vagy a katalógusokra való hivatkozás, a gráfadatbázisok jó megoldást jelentenek.
A gráf NoSQL-adatbázisok lehetőségei végtelenek, és mivel az általunk gyűjtött adatok egyre inkább összekapcsolódnak, a gráfadatbázisok népszerűsége tovább fog nőni, beleértve a még mindig uralkodó relációs adatbázisokat.
A relációs adatbázisok által használt Structure Query Language (SQL) helyett a NoSQL adatbázisok objektum-relációs leképezést (ORM) használnak. Az ORM koncepciója az, hogy a lekérdezéseket az Ön által preferált programozási nyelven írhatja meg. Néhány a népszerűbb ORM-ek közül: Java, Javascript, .NET és PHP.
Összefoglalva
Azt, amit a relációs adatbázisokról tudni kell:
-
Szerkesztett adatokkal dolgoznak.
-
A rendszerben lévő kapcsolatok korlátozásokkal rendelkeznek, ami elősegíti a magas szintű adatintegritást.
-
Elérhetetlenek az indexelési lehetőségek, ami gyorsabb lekérdezési válaszidőt eredményez.
-
Kiválóan alkalmasak az adattranzakciók biztonságban tartására.
-
Az adatelemzéshez és jelentéskészítéshez komplex SQL-lekérdezések írására adnak lehetőséget.
-
Modelljeik képesek az üzleti szabályok biztosítására és érvényesítésére az adatrétegen, ami az adatintegritás olyan szintjét adja hozzá, amely nemrelációs adatbázisokban nem található meg.
-
Tábla- és sororientáltak.
-
Az adatok alakítására és manipulálására SQL-t (strukturált lekérdezési nyelv) használnak, ami nagyon hatékony.
-
SQL adatbázis példák: MySql, Oracle, Sqlite, Postgres és MS-SQL. NoSQL adatbázis példák: MongoDB, BigTable, Redis, RavenDb, Cassandra, Hbase, Neo4j és CouchDb.
-
A SQL-adatbázisok leginkább a nehéz tranzakciós típusú alkalmazásokhoz alkalmasak.
Nem relációs/NoSQL adatbázisok:
-
Képesek nagy mennyiségű, kevéssé strukturált adat tárolására.
-
Skálázhatóságot és rugalmasságot biztosítanak a változó üzleti követelmények teljesítéséhez.
-
Sémamentes vagy sémaolvasási lehetőségeket biztosítanak.
-
Minden típusú adat “Big Data” rögzítésére képesek, beleértve a strukturálatlan adatokat is.
-
Dokumentumorientáltak.
-
NoSQL vagy nem relációs adatbázisok példák: MongoDB, Apache Cassandra, Redis, Couchbase és Apache HBase.
-
A gyors alkalmazásfejlesztésre alkalmasak. A NoSQL a legjobb választás a rugalmas adattároláshoz, kevés vagy semmilyen szerkezeti korlátozással.
-
Flexibilis adatmodellt biztosítanak, és bármilyen szerkezetű adatok egyszerű tárolására és kombinálására alkalmasak anélkül, hogy sémát kellene módosítani.
Hát melyiket válassza a projektjéhez? A kérdés megválaszolásához visszatérhetünk a cikk elejére. Ez a két nagyon különböző típusú adatbázis a maga nemében ugyanolyan hasznos, de ellentétes okok és felhasználási esetek miatt. Egyik sem feltétlenül jobb a másiknál, és mind a relációs, mind a nem relációs adatbázisoknak megvan a maguk helye.
Röviden, nincs egyetlen helyes válasz. A legjobb módja annak, hogy meghatározzuk, melyik adatbázis-típus a legjobb a projektünkhöz, a szervezet igényeinek és az elérendő alkalmazási funkcionalitásnak az elemzése.