Ik zou graag gebruik maken van een groot XML-bestand(en), welk ik als een soort database/table gebruik. Probleem is echter dat het natuurlijk niet effectief is om steeds het hele bestand weer in te lezen. Wel wil ik selecties kunnen maken (liefst in de vorm van XPath/XQuery).
Een paar alternatieven die ik zo had verzonnen
- Per diepte/level van nesting een apart bestand aanmaken. Vb. van hoe dat er uit zou komen te zien:
Nadeel is hiervan dat het heel veel bestaan worden. Misschien wel zoveel dat ik me afvraag of er nog wel performance-winst zal zijn. Daarnaast is het niet zeer dynamisch, zeker niet bij mutaties of toevoegingen.
- De elementen in een soort indexbestand opslaan, en de content in een ander bestand
Voordelen zijn dat je kunt Queryen. Het aantal bestanden waarschijnlijk beperkt blijft etc. Nadelen zijn er echter ook, bijvoorbeeld dat het indexbestand nog best groot zal zijn ws.
- Daarnaast had ik nog iets bedacht met de posities van de elementen in het bestand opslaan in een indexbestand oid. en dan slechts beperkte stukken de pointer plaatsen en inlezen. Zodoende hoef je niet het hele bestand in te lezen, maar loop je misschien wel tegen problemen aan met parsen. Moet ik nog uitwerken, eerst even eten
Iemand ervaringen mee of goede ideeën hiervoor? Ik zocht ook XML-databases naar ditzelfde idee, maar die kon ik niet voor PHP vinden, wel voor Java.
edit:
gevonden:
link
Een paar alternatieven die ik zo had verzonnen
- Per diepte/level van nesting een apart bestand aanmaken. Vb. van hoe dat er uit zou komen te zien:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| index.xml <data> <parent standaard="attribuut" enextra="voordataref" ref_id="1_8473" /> <parent standaard="attribuut" enextra="voordataref" ref_id="1_8474" /> <parent standaard="attribuut" enextra="voordataref" ref_id="1_8478" /> </data> en dan daaronder 1_8473.xml <parent standaard="attribuut" enextra="voordataref" ref_id="1_8473"> <child ref_id="2_648" /> </parent> 2_648.xml <child ref_id="2_648"> hier content </child> |
Nadeel is hiervan dat het heel veel bestaan worden. Misschien wel zoveel dat ik me afvraag of er nog wel performance-winst zal zijn. Daarnaast is het niet zeer dynamisch, zeker niet bij mutaties of toevoegingen.
- De elementen in een soort indexbestand opslaan, en de content in een ander bestand
code:
1
2
3
4
5
6
7
8
9
10
11
12
| <data> <parent standaard="attribuut" enextra="voordataref"> <child> $3d8a2c4fec </child> </parent> <parent standaard="attribuut" enextra="voordataref" /> <parent standaard="attribuut" enextra="voordataref" /> </data> $3d8a2c4fec.dat Hier een boel content, wat een lange lap zijn bijvoorbeeld een topicstart met een boel gel*l |
Voordelen zijn dat je kunt Queryen. Het aantal bestanden waarschijnlijk beperkt blijft etc. Nadelen zijn er echter ook, bijvoorbeeld dat het indexbestand nog best groot zal zijn ws.
- Daarnaast had ik nog iets bedacht met de posities van de elementen in het bestand opslaan in een indexbestand oid. en dan slechts beperkte stukken de pointer plaatsen en inlezen. Zodoende hoef je niet het hele bestand in te lezen, maar loop je misschien wel tegen problemen aan met parsen. Moet ik nog uitwerken, eerst even eten
Iemand ervaringen mee of goede ideeën hiervoor? Ik zocht ook XML-databases naar ditzelfde idee, maar die kon ik niet voor PHP vinden, wel voor Java.
edit:
gevonden:
link
[ Voor 12% gewijzigd door r0bert op 01-12-2005 19:10 ]