[xquery] trage query

Pagina: 1
Acties:

  • Krooswijk.com
  • Registratie: Mei 2000
  • Laatst online: 17-08-2024
hallo ik heb het volgende probleem (vereenvoudigd weergegeven) met twee input xml files:

trefwoorden.xml
XML:
1
2
3
4
5
<trefwoorden>
  <trefwoord id="8433" woord="bibliotheken"/>
  <trefwoord id="8439" woord="criminaliteit"/>
  <trefwoord id="8444" woord="energievoorziening"/>
</trefwoorden>

trefwoorden_informatieobjecten.xml
XML:
1
2
3
4
5
<trefwoorden_informatieobjecten>
  <trefwoord_informatieobject trefwoord="8444" informatieobject="79927"/>
  <trefwoord_informatieobject trefwoord="8444" informatieobject="76192"/>
  <trefwoord_informatieobject trefwoord="8444" informatieobject="61253"/>
</trefwoorden_informatieobjecten>


Deze wil ik converteren met de volgende xquery functie:

XQuery:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
declare function local:trefwoorden( $d, $e )
{
    for $t in ($d//trefwoord)
    order by ($t/@id)
    return
    (
        element Trefwoord
        {
            attribute woord { $t/@woord },

            for $w in ($e//trefwoord_informatieobject)
            where ($t/@id = $w/@trefwoord)
            return
            (
                element isTrefwoordVan {
                    attribute informatieobject {$w/@informatieobject}
                }
            )
        }
    )
};

local:trefwoorden( doc("trefwoorden.xml"), doc("trefwoorden_informatieobjecten.xml"))


Dit lukt goed (omdat de files flink verkleind zijn) en met de volgende output:

XML:
1
2
3
4
5
    <Trefwoord woord="energievoorziening">
        <isTrefwoordVan informatieobject="61253" />
        <isTrefwoordVan informatieobject="76192" />
        <isTrefwoordVan informatieobject="79927" />
    </Trefwoord>


echter bevat trefwoorden_informatieobjecten.xml al iets van 20.000 entries en trefwoorden.xml iets van 1000 entries. Nu duurt het dan ook minstens een paar uur voordat deze functie output geeft.

Kan mijn Xquery efficienter? Want moet ook op andere vlakken i.c.m. andere files nog uitgebreid gaan worden en zo wordt testen een ramp...

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 12:28

.oisyn

Moderator Devschuur®

Demotivational Speaker

Je zou natuurlijk alles in een echte database kunnen stoppen ipv te werken met logge en onhandige xml files die per definitie langzamer zijn dan hun binaire representatie :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • chris
  • Registratie: September 2001
  • Laatst online: 11-03-2022
Ik denk inderdaad niet dat xml hier echt voor geschikt is. Het is meer bedoeld als uitwisselingsformaat. En waarschijnlijk ben je inderdaad eerder klaar met alles in een database stoppen, dan je dingen doen, en dan alles weer omzetten naar xml.