XML adatbazis PHP-ben

A kovetkezo feladatot kaptam: Irni egy adatbaziskezelot PHP-ben, ugy hogy az adatok XML-ben tarolja. Amit tudnia kell: adatok kiiratasa, valtoztatasa, torlese, uj adat bevitele - es jo volna ha nem lenne nehez uj oszlopot berakni az adatbazisba.
Utananeztem, letezniek mindefele xml parserek, de sajnos eddig nem foglalkoztam xml-el, nem tudom hogy fogjak neki. - hogy/mivel a legegyszerubb ezt megoldani, ha nem szeretnek kulso kodot hasznalni ra? Esetleg tudtok adni egy-ket linket ahol ez erthetoen el van magyarazva, ha lehet peldakkal? SimpleXML-el mindez megoldhato?

koszonom :)

Hozzászólások

( harlequin | 2010. március 8., hétfő - 23:23 )
A kovetkezo feladatot kaptam: Irni egy adatbaziskezelot PHP-ben, ugy hogy az adatok XML-ben tarolja.
@

Azért visszakérdeztem volna, hogy van -e ennek valami speciális oka?
A problema az, hogy az XML -t be kell rátntani a memoriába, és akkor lehet használni olyanokat mint simpleXml, DOM. Ha viszont túl nagy az XML akkor ezt nem lehet, mert meghaladja a memoria limitet. Ilyenkor parsert kell irni rá. (szerencsére nekem még sosem kellett ilyet) .
Szoval ha nagy méretü lesz az adatbazis akkor szvsz jobban jársz, ha valamilyen SQL -ben tarolod az adatokat es irsz egy felületet ami a lekérdezésekből XML -t csinál. pl PEAR -nek asszem van ilyen SQL2XML modulja.
http://pear.php.net/package/XML_Query2XML. Viszont ha relative kicsi, akkor valószínüleg jo a simpleXML.

vegul SimpleXML lesz belole, csak leakadtam egy helyen ezert voltam kivancsi, hogy tenyleg nem lehet torolni node-ot, vagy csak nekem nem megy (csak nem akartam konkret valaszt - hogy en is gondolkodjak rajta - ezert kerdeztem csak annyit, hogy megoldhatoak-e a muveletek). Vegul kiderult hogy igen, csak kicsit furan kell azt a node-ot torolni (http://www.webmasterworld.com/php/3882927.htm).
Amugy ez egy programozasi teszt, nem eles dolog, nem lesz alatta komoly adatbazis (ez a spec. oka, hogy XML kell :) ).

szinte biztos vagyok benne, hogy a megrendelő nem tudta hogy mit akar.
Ha olyan gépre kell adatbáziskezelés, ahol nincs más adatbáziskezelő, akkor javaslom az SQLite-ot.

Más megoldás: ArrayToXML, illetve XMLToArray osztályok használata: -bármilyen tömböt képes XML-be kiírni, illetve azt az XML-t képes tömbbé visszaolvasni.
Lockolás: írás joggal nyitod meg a file-t.
Tranzakció: a változtatásokat csak a php végén írod ki a merevlemezre.
Teljesítmény: nagy táblák esetén borzalmas, nincsenek indexek, nincsen cache.

Más megoldás: rendes adatbáziskezelőt használsz (esetleg SQLite-ot), de írsz egy exportáló és egy importáló függvényt, amivel legenerálhatod illetve betöltheted a szükséges adatbázist.

A simple teljesen jó ebben az esetben.
Arra érdemes az ilyen feladatoknál figyelni, hogy végiggondold, mely funkciókat kell kidolgoznod és egységbe zárnod az adatcseréhez, és mik lesznek azok, amiket ad hoc xml eléréssel képzelsz el.

kis adatmennyiségre az sqlite megfelelő, ha kell valami xml-ben, azt ki lehet exportálni. Nagy adatmennyiségnél az XML tárolás butaság, keresni benne erőforrásigényes, lassú.