QNX Adatbáziskezelô szerver
-Specifikáció-
Az adatbáziskezelô szerver DBserver néven lesz
elérhetô. Ez a név globális, ami azt jelenti, hogy
a - tudomásunk szerint - még nem mûködô QNX
hálózat bármely gépérôl
elérhetôk a szolgáltatásai. A szerverrel
való kommunikáció egyetlen módja egy sztring
küldése majd fogadása.
A server alapvetôen öt mûveletet ismer:
- rekord olvasás
- rekord írás
- rekord törlés
- adatbázis törlés
- teszt
Az adatbáziskezelô az adatbázisokat rekordokból
építi fel, illetve ilyennek feltételezi.
A rekordokat minta alapján azonosítjuk, lehetôséget
adva az adatbázis órákon elsajátított
módszerek használatára. :-)
Így tehát a fenti elsô három mûvelet a
következôket jelenti:
- Egy vagy több rekord minta alapján történô
megkeresése (olvasás)
- Egyetlen rekord kiírása (írás)
Itt is minta alapján történik a keresés; amennyiben
a megadott minta (lsd. késôbb) nem passzol egyik rekordra sem,
akkor hozzáfûzés történik, ha ráillik
(egy és csak egy rekordra!), akkor pedig
módosítás.
- Egy vagy több rekord minta alapján történô
kitörlése (törlés)
A "találat", azaz az illeszkedô minta értelmezése:
a DB szerver kliensei (= a kiadott feladatok szerverei)
struktúraként
épitik fel a
rekordot, ezekben egy vagy több kulcsmezô található.
A struktúra felépítése
a szervert nem érinti, viszont a keresést ennek a
struktúrának a maszkolt
változatával végzi.
Azaz az adatállományban a 'fontos' mezôk tartalmát
próbálja illeszteni (természetesen
pozícióhelyesen). Írásnál csak egy
találatot enged meg, hiszen egy
rekordot többszörösen rögzíteni értelmetlen,
olvasásnál és törlésnél
viszont több rekordról is szó lehet, ezeket mind
átadja, illetve törli. Így töredékes
kulcs is használható.
Az üzenetek szerkezete: (zárójelben a bytepozíció):
- A szerver által vett üzenet olvasás vagy
rekordtörlés esetén:
- a müvelet kódja (0. byte): ez jelöli ki, hogy
melyik mûveletrôl van szó
- az adatbázis neve (1..8)
- maszkolt rekord (9..9+rekordhossz)
- A szerver által vett üzenet írás esetén:
- a müvelet kódja (0. byte)
- az adatbázis neve (1..8)
- maszkolt rekord (9..9+rekordhossz)
- rekord (10+rekordhossz+1..10+2*rekordhossz)
- A szerver által vett üzenet adatbázis
törlés esetén:
- a müvelet kódja (0. byte)
- az adatbázis neve (1..8)
- A szerver által vett üzenet teszt (ping) esetén:
- a müvelet kódja (0. byte)
- bármilyen adat kerühet ide. A teszt funkció
egyszerûen visszaadja a vett üzenetet.
- A szerver által visszaadott üzenet:
- visszatérési érték (0)
- csak olvasásnál: visszaadott rekordok
(1..1+rekordhossz, ...)
A ping mûveletnél az
elküldött string jön vissza.
- A mûveletek kódjai (Az üzenet elsô karaktere)
- W: write
- R: read
- D: record delete
- T: database delete
- P: ping
Ha az üzenet elsô karaktere egyik mûveleti
kóddal sem
egyezik, a szerver az üzetenet ignorálja.
Az olvasás mûvelet az következô
értékekkel térhet vissza:
- Adatbázis nem létezik : DATABASE_NOT_EXISTS
- Nincs találat : RECORD_NOT_FOUND
- 1 v. több találat : RECORDS_FOUND (+ ennek eredménye, azaz
a rekordok)
- A megadott maszk hossza nem felel meg az adatbázis
hosszának : RECORD_NOT_VALID
Az adatbázis-file hosszának a maszk-hossz egész
számú többszörösének kell lennie.
Az írás mûvelet kimenetei:
- Adatbázis nem létezett, így elkészítette
és a rekordot beírta: DATABASE_CREATED
- Nincs találat, így a kérést
hozzáfûzésnek értelmezte: RECORD_APPENDED
- A megadott minta 1 rekorddal egyezett, azt felûlírta:
RECORD_MODIFIED
- A megadott minta több rekorddal is egyezett, így hibát
jelez: MULTIPLE_MATCHING_RECORDS
- A megadott rekord hossza nem egyezik a maszk hosszával,
ezért hibát jelez: MASKLEN_NE_RECORDLEN
- A megadott rekord (maszk) hossza nem felel meg az adatbázis
hosszának : RECORD_NOT_VALID
Az adatbázis-file hosszának a maszk-hossz egész
számú többszörösének kell lennie.
Rekord törlés:
- Adatbázis nem létezik (0 törlés): DATABASE_NOT_EXISTS
- Nincs találat: RECORD_NOT_FOUND
- 1 v. több találat (ezen rekordokat kitörölte):
RECORDS_DELETED
Adatbázis törlés:
- Adatbázis nem létezik: DATABASE_NOT_EXISTS
- Adatbázis törölve: DATABASE_DELETED
Az adatbiztonság kérdését nagyon
egyszerûen oldottuk meg: a jelszó az adatbázisfile neve,
aki ezt eltalálja, írhatja a filet.
Ezen a lapon mindig
a legfrissebb állapotot láthatjátok.
A visszatérési értékek
egy header file formájában lesznek közzétéve,
ami letölthetô lesz errôl a lapról. A header file
jelenlegi tartalma:
/* ADATBAZISKEZELO Header file
Tartalmazza a visszateresi ertekek szoveges megfelelojet
*/
#define MASKLEN_NE_RECORDLEN 201
#define RECORD_NOT_VALID 202
#define MULTIPLE_MATCHING_RECORDS 203
#define RECORD_APPENDED 204
#define RECORD_MODIFIED 205
#define DATABASE_NOT_EXISTS 206
#define DATABASE_DELETED 207
#define RECORDS_FOUND 208
#define DATABASE_CREATED 209
#define RECORD_NOT_FOUND 210
#define RECORDS_DELETED 211
A Drótos Dániel által továbbfejlesztett program forráskódja: qnxdbs_s.html
Az értetlenkedéseket, ill. javaslatokat a következô
címekre várjuk:
irtpa@gold.uni-miskolc.hu & fulep@www.lib.uni-miskolc.hu
Perlaki Attila, Fülep Dávid
In memoriam | |