Mi a különbség a NoSQL és a relációs adatbázisok között?
Az Azure Cosmos DB nem összefüggő és horizontálisan skálázható.
Vízszintes skálázás és függőleges skálázás
A relációs adatbázisok általában a üzemeltetett virtuális gép vagy számítás méretének növelésével növekednek. A NoSQL-adatbázisok, például az Azure Cosmos DB méretezése több kiszolgáló vagy csomópont hozzáadásával. Ezt vertikális felskálázásnak nevezzük. Ezeket a csomópontokat fizikai partícióknak is nevezik a Cosmos DB-ben. Az ezeken a fizikai partíciókon tárolt adatokat rendszerezni kell, hogy később hatékonyan lehessen őket elérni.
Az adatok különböző fizikai partíciókra lesznek irányítva az egyes dokumentumokhoz tartozó kötelező tulajdonság értékének használatával. Ezt a tulajdonságot tároló partíciókulcsának nevezzük, ezt a partíciókulcsot meg kell adni a tároló létrehozásakor. Ha egy tárolóból ír vagy olvas be adatokat, a partíciókulcs átadása biztosítja, hogy a műveletek hatékonyak legyenek, ha a kérést csak a tárolt partícióra irányítja.
Bár a partíciókulcs szükségessége kényszernek tűnhet, hatalmas előnyökkel jár. A relációs adatbázis általában legfeljebb 100 TB-ra nő. A NoSQL-adatbázisok korlátlan méretűre nőhetnek, és ezt anélkül is megtehetik, hogy hatással lenne a válaszidőkre, amikor egyetlen partícióról férnek hozzá az adatokhoz.
Emellett a partíciók hozzáadásakor is nagyobb a számítási kapacitás, és az adatbázis által támogatott feldolgozás mennyisége is nő. Ez azt jelenti, hogy több egyidejű felhasználót is támogat. Emellett nincs hatással a teljesítményre.
Nemrelációs és relációs adatbázisok
A NoSQL-adatbázisok második meghatározó jellemzője, hogy az adatok között nincsenek idegen kulcsok, korlátozások vagy kényszerített kapcsolatok. Mivel a NoSQL-adatbázisban lévő adatok különböző fizikai kiszolgálókon tárolódnak, kényszerek vagy kapcsolatok kényszerítése, illetve az adatok zárolásának elhelyezése negatív vagy kiszámíthatatlan teljesítményt eredményezne.
A kikényszerített kapcsolatok mellőzése azonban nem jelenti azt, hogy nem kezelheti azokat az entitásokat, amelyek kapcsolatban vannak egy NoSQL-adatbázisban, csak azt jelenti, hogy másképp kell elvégeznie.
Miért különböznek ennyire ezek az adatbázistípusok?
A számítástechnika közgazdaságtani változásainak megismerése a relációs adatbázisok első bevezetése óta segíthet elmagyarázni, hogy miért különböznek ennyire ezek a két típusú adatbázisok.
Amikor a relációs adatbázisokat 1970-ben találták fel, a tárterület és a memória költségei a számításhoz képest magasak voltak. Az adatbázismodell normalizálásának célja az volt, hogy csökkentse a duplikált adatokat, és ezáltal az adatbázison belüli költségeket. Az adatbázismotor zárolásokat és reteszeket alkalmazna a szigorú ACID (atomiság, konzisztencia, elkülönítés, tartósság) szemantika kényszerítéséhez, mivel az összes szükséges adategységen együtt hajtott végre műveleteket. Az adatok zárolása biztosítja a konzisztens adatokat, de az egyidejűség, a késés és a rendelkezésre állás kompromisszumaival.
Ma a tárolási és memóriaköltségek viszonylag olcsók a számításhoz képest, így a költséghatékonyság érdekében már nem kell optimalizálnunk a tárolási hatékonyságot. Mivel a számítási feladatok egyre több egyidejűséget és rendelkezésre állást, valamint alacsonyabb késést igényelnek, szükség volt egy új típusú adatbázisra, amely ezekre a követelményekre van optimalizálva, így noSQL-adatbázisok születtek.
Ezen okokból kifolyólag a NoSQL-adatbázisok adatainak modellezésének egyik célja, hogy az adatok olvasása és írása számítási szempontból hatékony legyen. Részben azért, mert a relációs operátorok, például a dokumentumközi illesztések nem léteznek a NoSQL-adatbázisokban, az adatokat úgy kell tárolni, ahogy az alkalmazás használja a leghatékonyabban. Az adatokat gyakran denormalizálni, duplikálni vagy más módon tárolni kell, ami megszakítja a relációs adatok modellezéséhez használt relációs normalizálási szabályok nagy részét.
Használhatja a NoSQL-t relációs számítási feladatokhoz?
Ezen a ponton felmerülhet a kérdés, hogy a NoSQL-adatbázisok megfelelőek-e a relációs számítási feladatokhoz. És a válasz igen! A NoSQL-adatbázisok feltétlenül használhatók olyan számítási feladatokhoz, ahol különböző entitások közötti kapcsolatok léteznek.
A NoSQL-adatbázisokat gyakran akkor használják, ha egy relációs adatbázis nem tudja kielégíteni az alkalmazás kívánt teljesítményét, méretezését vagy rendelkezésre állási igényeit.
A NoSQL-adatbázisok tervezésének technikái eltérnek a relációs adatbázisok adatainak modellezéséhez használt technikáktól. Ezek a technikák a relációs adatbázis-tervezés hátterével rendelkező személyek számára sem intuitívak. A relációs adatbázisok létrehozásának néhány ajánlott eljárása gyakran antipatterns, amikor NoSQL-adatbázist tervez.
A modul további részében és a speciális modellezési modulban végigvezetjük az adatok olyan modellezéséhez használt technikákon, amelyek nagy teljesítményű NoSQL-adatbázist eredményeznek.