Térbeli adatok hatékony kezelése relációs adatbáziskezelővel

Siki_Zoltan.jpg (3201 bytes)
dr. Siki Zoltán,
BME Általános és Felsőgeodézia Tanszék

Lehet, hogy a Relációs Adatbázis-kezelő Rendszerek (RDBMS) válnak a térbeli adatok tárolásának új szabványává? Ezzel kapcsolatban egy alapvető problémát kellett megoldani. Hogyan lehet a térbeli lekérdezések irányában a relációs adatmodellt kiterjeszteni – anélkül – hogy a térbeli adatok kezeléséhez szükséges gyorsaságot elveszítenénk. Az Oracle8 Spatial Cartridge (térbeli modul) megoldja a relációs adatbázisban tárolt térbeli adatok indexelési problémáját, és kibővíti az SQL funkcionalitását a térbeli adatok kezelésének irányába. Ezzel a térinformatikai szoftverek fejlesztői számára is új lehetőség nyílik meg. A teljes térinformatikai adatbázist (geometria és leíró adatok) egy szabványos RDBMS-ben tárolhatjuk és aktualizálhatjuk, a szükséges hatékonysággal. Az ilyen megoldások még közelebb hozzák egymáshoz a térinformatikai és az egyéb információs rendszereket (pl SAP, ügyfélnyilvántartás, készletnyilvántartás stb.)

A napjainkban használt térinformatikai szoftverek kettéosztott adatrendszert használnak. A geometriai adatok tárolása az operációs rendszer által felügyelt fájlokban történik, míg a hozzájuk kapcsolódó leíró adatok (attribútumok) tárolása általában egy relációs adatbázis-kezelőben valósul meg. Ennek a kettősségnek részben történelmi, hatékonysági és szoftvertechnológiai okai vannak. Az első térinformatikai rendszereket általában már létező grafikus fájl formátumokra építették. Ezek többnyire CAD/CAM programokhoz kötődtek. Az attribútumok kezelésére a legegyszerűbb megoldásnak az bizonyult, hogy a rajzi elemek adatait kiegészítették egyedi kulcsokkal, melyeken keresztül egy külső adatbázisban tárolt adatok is elérhetők. Ez a megoldás egyrészt leegyszerűsítette a fejlesztők feladatát, a felhasználók a már megszokott környezetben élvezhették az új lehetőségeket. Másrészt a grafikus megjelenítésben, leválogatásban elvárt sebességet is csak speciális, a relációs logikától eltérő adatszerkezetekkel lehetett biztosítani. A felhasználók által elvárt újrarajzolási sebesség 2-5 másodperc. A hardver- és szoftverfejlesztések eredményeképpen ma már a relációs adatbázisok is megfelelhetnek ezeknek a teljesítmény kritériumoknak.

1.jpg (16182 bytes)

1. ábra. CAD rendszerek összekapcsolása egy adatbázistáblával

Milyen problémákat vet fel a hagyományosan használt kettéosztott adatrendszer?

· Nehezen tartható fent a grafikus és az attribútum adatok közötti konzisztencia. A programozóknak két különálló I/O csatornát kell kezelnie. Az egyik grafikus adatokat tartalmazó fájl, a másik a relációs adatbázis. A kétfázisú commit hiánya miatt előállhatnak a két adatrendszer között feloldatlan hivatkozások.

· A hibrid megoldás nem tudja maximálisan kihasználni a relációs adatbázis-kezelők által nyújtott olyan szolgáltatásokat, mint adatbiztonság, osztott adatbázisok, több felhasználós környezet stb.

· a grafikus adatok osztott kezelésében nem lehet kihasználni az adatbázis-kezelők szolgáltatásait, azokat az adatbázis-kezelőtől függetlenül ki kell fejleszteni a grafikus adatokra.

· A különböző grafikus fájl formátumok közötti konverziók megvalósítása nehézkes.

A fenti problémákra a legegyszerűbb megoldás a grafikus adatok relációs adatbázisban tárolása lehetne. Az alfanumerikus adatok kezelésére kifejlesztett relációs adatbázis-kezelőkkel szemben viszont más problémák merülnek fel.

· A geometriai adatok változó hosszúságú adatcsoportok. Egy vonallánc definíciója a kettő ponttól a több ezerig terjedhet. Ezek optimális tárolásához egy változó hosszúságú többdimenziós tömbre lenne szükség, ami a relációs logikában közvetlenül nem képezhető le.

· Az indexelés egy másik probléma. A klasszikus relációs adatbázis-kezelők egydimenziós indexeket használnak, ami a kettő-,
illetve háromdimenziós adatok kezelését és térbeli helyzetük alapján történő hatékony összekapcsolását nem teszi lehetővé.

· A relációs adatbázisokban tárolható normalizált (fix rekord hosszúságú) geometriai adatszerkezetekből a megjelenítéshez szükséges információk lekérdezése, rendezése túl sok időt vesz igénybe. Nem oldja meg a problémát a BLOB-ok (bináris nagy objektumok) használata sem, mert ezzel a geometriai adatokra vonatkozó standard lekérdezési lehetőségeket (SQL) veszítjük el.

Az Oracle8 Spatial Cartridge (térbeli modul) ezeknek a problémáknak a megoldására jött létre. A geometriai objektumok a relációs adatbázisban mint absztrakt adattípusok kerülnek tárolásra. A különböző típusú geometriai elemekhez önálló relációs tábla tartozik. Ez a felhasználó számára az egységes relációs megközelítés rugalmasságát és biztonságát adja.

A térbeli modul három elemi geometriai adattípust kezel:

· 2D pont vagy pont csoport

· 2D vonallánc

· 2D poligon (zárt vonallánc)

Egy hierarchikus adatmodellben az elemekből geometria, a geometriákból rétegek hozhatók létre. A geometria a felhasználó által tárolni kívánt térbeli elemeket jelenti (entitás), melyeket az elemi adattípusok rendezett halmaza modellez. Minden egyes geometriai objektumhoz egy egyedi numerikus azonosító (GID) tartozik, mely összekapcsolja a hozzátartozó attribútum halmazzal. Komplex geometriai elemek, mint például a lyukas poligonok, a poligon elemek sorozatával írhatók le. A réteg tetszőleges típusú geometriák együttese, melyek azonos szerkezetű attribútumtáblához kapcsolódnak. A rétegek geometriai objektumai és a hozzájuk tartozó térbeli index standard adatbázistáblákban kerülnek tárolásra.

A térbeli index ugyanazt a cél szolgálja, mint bármelyik másik index, a térbeli feltételek alapján történő keresések meggyorsítását. Az indexek segítségével a következő négy feladatot oldhatjuk meg hatékonyabban:

· Egy adott pontot lefedő geometriai objektumok megkeresése

· Egy megadott területet lefedő vagy átfedő objektumok megkeresése

· Két térbeli index alapján a térbeli kapcsolatban lévő objektumpárok megkeresése (térbeli összekapcsolás belesés, tartalmazás, metszés stb. alapján)

· A térbeli helyzet alapján történő adatösszefűzés alapjául szolgáljanak (geometriák egyesítése feltételek alapján)

2.jpg (11319 bytes)

2. ábra. Cellák azonosítója a négyes fában és bejárási sorrend

A térbeli index egy logikai index, tartalma nem az adatok fizikai tárolási helyére utal, hanem a geometriai objektumoknak a réteg kiterjedésén belüli elhelyezkedésére. A Spatial Cartridge a négyes fa felhasználásával állítja elő térbeli indexeit az egyes rétegekre. A négyes fában a sík egy négyzet alakú területét úgy bontjuk kisebb részekre, hogy a négyzet oldalait felezzük. Így minden elem további négy egyforma méretű elemre bomlik, és egy hierarchikus rendszert alkot. Egy ilyen felbontás eredményeként előálló négyzetrácsban az egyes cellákhoz a 2. ábrán látható módon azonosítókat rendelhetünk, melyek hossza a felbontás mélységére utal. Amennyiben a négyes fának csak a leveleit használjuk, akkor a cellák egy hézag és átfedés nélküli lefedését adják a térnek, még akkor is, ha a felbontás nem ugyanabban a mélységben fejeződik be, azaz nem azonos méretű mindegyik. Ez alapján minden egyes pont csak egy cellába esik. Az egy – illetve kétdimenziós elemek viszont már több cellára is kiterjedhetnek, egy adott felbontás esetén. Ezek cellához rendelése a minimális, koordináta tengelyekkel párhuzamos befoglaló téglalapjuk alapján történik. Ebből egy többszörös bejegyzéseket tartalmazó térbeli index (MESI) alakul ki. Minden egyes indexbejegyzés egy külső kulcsot tartalmaz az indexelendő objektumra, és egy cellaazonosítót a felbontásból.

Térbeli index := (geometriai azonosító, cellaazonosító)

Ebben az indexben ugyanaz a geometriai azonosító többször is megjelenhet.

3.jpg (14417 bytes)

3. ábra. Térbeli indexbejegyzések

A befoglaló téglalap az eredeti geometriának csak egy közelítése, ezért csak egy közelítő választ adhat a térbeli lekérdezésekre. Ha egy objektum minimális befoglaló téglalapja beleesik egy cellába, ebből még nem következik, hogy az objektum egy része is beleesik a cellába. Fordítva viszont bizonyos választ kaphatunk, azaz ha egy objektum minimális befoglaló téglalapja nem fedi le a cella egy részét sem, akkor az objektumnak egy pontja sem esik a cellába. Ezek alapján a minimális befoglaló téglalapok cellákhoz rendelése csak egy hatékony elsődleges szűrő lehet. Ezen a szűrőn átengedett objektumokat egy második szűrővel is meg kell vizsgálni, a tényleges geometriai adatok alapján.

Az Oracle a térbeli és indexadatok tárolására négy táblát használ rétegenként.

Táblanév

Tartalom

<rétegnév>_SDOLAYER

Réteg alap paraméterek (csak egy sort tartalmaz)

<rétegnév>_SDODIM

Koordináta-tengelyek adatai (sorok száma egyezik a dimenziók számával)

<rétegnév>_SDOGEOM

Geometriai adatok (egy geometriai elemhez több sor tatozhat)

<rétegnév>_SDOINDEX

Térbeli index (MESI)

Az indexek fizikai megvalósítása során az Oracle B+ fákat használják, ez lehetővé teszi, hogy az Oracle összes beépített index mechanizmusát felhasználják a lekérdezések feldolgozásánál és optimalizálásánál. A Spatial Cartridge két lehetőséget is tartalmaz a térbeli index készítéséhez, a fix méretű és a változó méretű cellák kialakításával. Az Oracle a fix méretű cellák használatát javasolja, a változó méretű cellákat használó felbontás kísérleti célokból került be.

A térinformatikai szoftverfejlesztő cégek intenzíven érdeklődnek az ilyen megoldások iránt. Az Autodesk, az ESRI, az Integraph, a MapInfo szorosan együttműködik az Oracle céggel, hogy a Spatial Cartridge-támogatás a térinformatikai termékeikbe bekerüljön. Ezzel a technológiával egy adatbázisba egyesíthetjük a térbeli és attribútumadatainkat.

IRODALOM

Oracle8 Spatial Cartridge User’s Guide and Reference

Part No. A53264-02

Release 8.0.4, Oracle Corporation

Efficient spatial data processing in relational database environment

Z. Siki
Summary

Relational Database Systems can be the new standard storage system not only for alphanumeric but graphical data, too. Traditional GIS software uses separate data model to store graphical and attribute data. It was the only efficient method for GIS applications. Nowadays using faster and faster hardware and more sophisticated software, the relational data model can be efficient enough to store all data of a GIS database. This unified data model has several advantages. The Spatial Cartridge implemented in Oracle 8 is a solution to store points, polylines and polygons in relational data model. The relational approach and spatial indexes are introduced in this paper.