Adatbázis tervezés és optimalizálás
Fontos tisztáznunk az adatbázis tervezéssel kapcsolatban, hogy ez nem minden esetben szükséges folyamat. Adatbázis tervezés és optimalizálás csak a komplex web-alkalmazások, weboldalak esetében szükséges, amelyen belüli entitások és tulajdonságaik komplex rendszerként kell működjenek, például kereshető listázás, rendezés, csoportosítások, szerkesztés és módosítás, vásárlás, vagy egyéb relációs és műveleti működések esetében.
Mi az az adatbázis, és miért van rá szükség egyáltalán?
Az adatbázis (többnyire) strukturált adatok csoportja, melyet ezek adatok tárolására, lekérdezésére és szerkesztésére alkalmas szoftvereszköz kezel. - nem keverendő össze az adatbázis-kezelővel, ami egy eszköz az adatbázis működtetésére és folyamatainak szervezésére. Az adatbázisok célja adatok hosszú távú, megbízható tartós (idegen szóval: perzisztens) tárolása és viszonylag gyors visszakereshetőségének biztosítása.
Tehát egy bármilyen alkalmazás vagy weboldal adatbázisa alatt azt az adathalmazt értjük amit az alkalmazásnak direkt vagy közvetett módon használnia, kezelnie kell.
Nem lebecsülendő feladat az adatbázis logikai szerkezetének kialakítása. Számos a tervezéskor figyelembe venni szükséges szempont van ugyan is, például azonosítani kell a megvalósítani kívánt adatok tárolását, felbonthatóságáról, összetettségét, más adatokhoz fűződő viszonyait, de az adatbázis hosszú távú használatából származó működési rendellenességeket is figyelembe kell venni, hogy már szerkezeti szinten is elkerüljük, illetve hogy az adattárolás tárhelyét is lehetőleg minimalizáljuk. Ezen kérdések megválaszolásával és feladatokkal foglalkozik az adatbázis-tervezés és optimalizálás.
Miért érdemes előre megtervezni egy adatbázist?
Az adatbázisok megfelelő szerkezeti előkészítésének/megtervezésének szükségessége a weboldal/alkalmazás összetettségével egyenesen arányosan nő. Minél komplexebb alkalmazást akarunk csinálni, bármilyen paltformra is készüljön, annál fontosabb az adatbázis megtervezése. Az adatbázis megtervezése során történhet számos olyan felismerés, amely ebben a tervezési szakaszban már megspórol nekünk akár több százezer forintot, függően természetesen a projekt nagyságától. Egy a kezdetekben felismert reláció, vagy szerkezeti összefüggés, a későbbiekben órák akár százait is spórolhatja meg nekünk a fejlesztésben.
Mi történhet ha rosszul tervezünk meg egy adatbázist?
Az adatbázis rossz megtervezése számos hátulütővel járhat, íme néhány a rossz adatbázis-tervezésből adódó hátrány:
- Redundáns adat van az adatbázisban (ezeket módosítás esetén minden előfordulás helyén külön-külön kell elvégezni)
- Optimalizálatlan adatbázis miatt a weboldal lassan keres/listáz
- Jogosulatlan felhasználók férnek hozzá bizonyos elemkehez illetve ezek tulajdonságaikhoz (ugyan ezt lehet fejlesztési oldalon még korrigálni)
- Minden későbbi kiterjesztés újabb és újabb fejlesztői beavatkozásokat igényel
- Esetleges kritikus szerverhiba az adatbázisban egymásra mutató "foreign key"-ek miatt (ezekre a sebezhetőség miatt is extra fontos odafigyelni)
- egyebek...
Hogy egy példát is említsünk, nem olyan régen volt egy ügyfelünk, amely estben egy elég komplex webshop rendszerben kellett segítenünk. Az adatbázis tervezés azonban nem, vagy nem elég körültekintően történt meg, így a rendszer nem volt alkalmas az akkori állapotában több partner termékeit és vásárlásait kezelni.
Mivel a tesztelések a fejlesztés során csak egy partnerrel történtek, így ez a probléma nem derült ki amíg felül nem vizsgáltuk a rendszert, mutattunk rá a problémára, és javasoltunk illetve eszközöltünk rajta módosításokat. A végeredmény pedig egy olyan rendszer lett, amely nem csak, hogy dinamikusan kezeli a prtnereket, de a partnerek egyes termékhez/vásárló felhazsnálóhoz/megrendeléshez tartozó egyedi tulajdonságait is minden rendszerbe külön-küldi, illetve az egyes partnerek semmilyen az említett entitások más partnerhez tartozó tulajdonságait nem látják. Emellett a termékek / megrendelések / vásárló felhasználók adatlapjain nem listázza ki az összes partner összes jellemzőét, téve ezzel átláthatatlanná a felületet. Minden felhasználó csak azokat a tulajdonságokat látja az adott entitásokhoz, amelyikhez joga van.
Összességében azonban mi úgy gondoljuk, és fontosnak tartjuk leszögezni, hogy bár nem minden esetben van szükség mélyreható adatbázistervezésre, és sok esetben a fejlesztők maguk is tökéletesen meg tudják tervezni a szükséges szerkeszetet és logikai felépítést, azért érdemes ezt a szegmensét is a fejlesztésnek komolyan venni, és legalább rákérdezni, leellenőziztetni, mivel egy rosszul megtervezett adatbázis a jövőben nagyon sokba kerülhet nekünk.
18 év fejlesztési tapasztalat, több mint 200 elkészült projekt, magyar és nemzetközi megrendelők Segíthetünk egy üzletileg támogató weboldal létrehozásában?