Az adatbázis az egyik legfontosabb adattárolási forma, amit ma az iparban használnak. Adatbázisban tárolja a felhasználói adatokat a Facebook, a Google, de ha a napi szintű informatikai fejlesztésekre gondolunk, akkor a jobb verziókövető rendszerek, weboldalak, a modellező rendszerek is mind-mind adatbázis alapúak.
De mitől ilyen elterjedtek az adatbázisok, hogyan épülnek fel és hogyan tudok kezelni egy adatbázist egyszerű Java-ból?
Az adatbázisok legfontosabb tulajdonsága, hogy a meghatározott adatokat, a meghatározott sorrendben tárolnak. Vannak oszlopok, minden tárolandó tulajdonságnak egy, valamint vannak sorok, amik a példánya egy-egy tárolandó adatnak. Például:
ID |
Vezeteknev |
Keresztnev |
1 | Minta | Béla |
2 | Teszt | József |
3 | Minta | Sándor |
Az adattárolást persze meg lehetne oldani egy sima szöveges fájlban is, de ahogy azt majd mindjárt látni fogjuk az adatbázisok kezelése jóval egyszerűbb, mint egy saját kiterjesztésű fájl kezelése. Illetve biztonsági okok is az adatbázis mellett szólnak, mert akár fizikailag is távol lehet egymástól az adatbázis és a webszerver.
További előnye az adatbázisoknak, hogy szabványosítottak. Elegendő azt tudnom, hogy pontosan milyen oszlopokból épül fel a tábláim és máris tudom szerkeszteni és olvasni őket. Ez a módszer egy szöveges alapú fájl esetében már jóval komplikáltabb. (hány tulajdonság van, milyen sorrendben, …)
A lényeg a szabványosított forma. Ennek köszönhetően az adatbázisoknak egy külön programozási nyelve van, ez az úgynevezett SQL. Az SQL segítségével adatokat lehet lekérni, illetve adatokat lehet felvinni egy meglévő táblába, de módosítani vagy akár törölni is lehet az egész táblát vagy csak egy bizonyos részét.
Az SQL egy viszonylag egyszerűbb programozási nyelv, nincs olyan sok nyelvi eleme, de az elképzelhető összes műveletet meg lehet vele fogalmazni, amit egy adatbázis esetében érdemes használni. Ajánlott megismerkedni a legalapvetőbb utasításaival, ezekről később még én is részletesebben fogok írni:
- SELECT
- INSERT
- UPDATE
- DELETE
Kérjük le a fenti példa adatbázisból SQL segítségével az összes olyan sort, ahol a vezetéknév := „Minta”
// Kérjük le az összes oszlopot SELECT *
// A „Pelda” táblábólFROM Pelda
// Azokból a sorokból, ahol a Vezeteknev = „Minta”WHERE Vezeteknev = „Minta”;
Tehát azt már említettem, hogy az adatbázisok oszlopokból és sorokból épülnek fel. Ekkor még azonban csak egy sima Excel tábláról beszélnénk. Akkor beszélhetünk adatbázisról, hogyha az információk rendezett formában, különböző szabályok mentén épülnek fel és kerülnek be az adatbázisba. Az adatbázisok minőségének is vannak fokozatai azonban ez gyakorlatilag egy külön tudományág (Egyetemen is külön kurzus formájában oktatják), illetve még rengeteg olyan aspektusa van, ami túllóg ennek a bejegyzésnek a méretén.
Jelenleg a cél azonban csak a koncepció megértése. Melyek a legismertebb adatbázis kezelő rendszerek, amiket kipróbálva te is létre tudsz otthon hozni egy kis teszt rendszert? Íme:
- MySQL
- PostgreSQL
- Oracle Database
- Microsoft SQL Server
- SQLite
(Egy példa adatbázis felállítása a fentiek valamelyikével, egy későbbi blogbejegyzés témája lesz)
Nézzük meg akkor nagy vonalakban, hogy hogyan is néz ki az az alapmódszer, aminek segítségével egy egyszerű Java-ban írt programmal tudsz adatbázis műveleteket elvégezni. A Java egy külön beépített könyvtárat biztosít erre a feladatra, ami kezeli a kéréseket és tárolja, feldolgozza az adatbázis által visszaküldött válaszokat, adatokat. Ez lesz az úgynevezett JDBC API. Az alábbi fő fázisokra osztanám fel ennek az API-nak a működését:
- Kapcsolat felállítása az Adatbázissal
- SQL utasítások végrehajtása és a visszakapott eredmények feldolgozása
- Kapcsolat leállítása az Adatbázissal
Nézzük akkor meg ezeket a lépéseket nagyvonalakban, megnézve a fő Java parancsokat:
- JDBC API importálása
import java.sql.*;
- Kapcsolat felállítása az Adatbázissal
// Register JDBC driver
Class.forName(DRIVER_NAME);
// Open a DB connect
Connection conn = DriverManager.getConnection(DB_URL,DB_USER,DB_PASSW);
- SQL utasítások végrehajtása és a visszakapott eredmények feldolgozása
- SQL utasítás elküldése
Statement stmt = conn.createStatement();
String sql = "SELECT id, firstname, lastname FROM ExampleTable";
ResultSet rs = stmt.executeQuery(sql);
2. Az eredmény feldolgozása soronként
while(rs.next()){
int id = rs.getInt("age");
String firstname = rs.getString("firstname");
String lastname = rs.getString("lastname ");
}
3. Kapcsolatok lezárása az Adatbázissal
rs.close();
stmt.close();
conn.close();
Ezek tehát a legszükségesebb és legminimálisabb (!) lépések egy sikeres Adatbázis lekérdezéshez és feldolgozáshoz egyszerű Java nyelvből. Látszik, hogy a JDBC lényege az adatbázis kapcsolat és a visszakapott eredményhalmaz kezelése, egyébként egyszerű, szöveges formában átadott SQL utasításokat lehet vele megfogalmazni. Ezen felül ami még mindenképpen szükséges lenne az a megfelelő védelem és kivételkezelés. Amennyiben ezek hiányoznak, úgy nagyon könnyen hozzáférhetnek kívülről az adatbázisunkhoz. Ez az úgynevezett SQL Injection, kezdő hackerek kedvenc módszere.
Remélem tudtam adni egy rávilágítást erre az egészre. Később egy több részből álló cikkben szeretném bemutatni egy teljes otthoni adatbázis felépítését lépésről-lépésre illetve egy ahhoz tartozó minta Java programot.
Szia, Bajor Tamás vagyok, a Programozz Te Is oldal alapítója és oktatója. Köszi, hogy itt vagy és éppen az én cikkem olvasására fordítod a drága idődet! Azért dolgozom minden nap, hogy neked segítsek a programozás világában minél profibban elmélyülni. A cikkek egyetlen írójaként rengeteg munkát és energiát fektetek mind az oldalba, mind pedig az oktatásba!
Arra kérlek, ha tetszett cikk amit olvastál vagy szívesen veszed az ingyenes anyagokat akkor dobj egy Like-ot a Facebook-on, ezzel is támogatva a munkámat. Neked ez egy apró kattintás, nekem pedig hatalmas segítség!