Az Adatbázisok

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ól
FROM 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:

  1. Kapcsolat felállítása az Adatbázissal
  2. SQL utasítások végrehajtása és a visszakapott eredmények feldolgozása
  3. 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:

  1. JDBC API importálása

  import java.sql.*;

  1. 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);

  1. SQL utasítások végrehajtása és a visszakapott eredmények feldolgozása
    1. 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.

Bajor Tamás - Programozz Te Is!

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!