Berkeley DB XML probak

Errepikapenak dituen datu basea

________________________________________________________________________________


Atal honetan, hasierako proba batzuk egiteko helburuarekin EPEC-etik FS guztiak hartu eta datu basea batean sartu dira (errepikapen eta guzti). FS guztiak dokumentuetan dauden bezala sartu nituen (eta nahi ez nuen beste zenbait zabor). 1.747.064 inguru FS daude sartuta. Datu basearen tamaina 9 GB-etakoa da. /data2/export/EPEC_fsak.bdbxml/ kokalekuan dago sipg35 ordenagailuan.
Proba guztiak datu basea bakarrik martxan egin dira eta memoria hasieran libre zutela.


sym eta str indizeak definituta
sym, str eta value indizeak definituta
Eager eta Lazy
Hitz hasierak eta bukaerak

ID batetik FSa berreskuratzea

Kontua da aurretik egindako probetan indizeak definitzerakoan ez nuela etekinik lortzen, baina orain, str indizea definitu eta galdera hau eginda (lerro saltorik gabe):


query 'collection("EPEC_fsak.bdbxml")/fs[f[@name="lema-osatua"]/str="etxe"]/@id'

Denbora: 13.116,9ms

Erantzun Kopurua: 705 objektu

Programatik: 7,861 ms

Bigarrena: 0,341 ms



Emaitza onargarria da iruditzen zait datu basearen tamaina eta indize bakarra definituta dagoela kontuan hartuta

dbxml> listIndexes
Index: unique-node-metadata-equality-string for node {http://www.sleepycat.com/2002/dbxml}:name
Index: edge-element-equality-string for node {}:str
2 indexes found.



value indizea ere definituta

query 'collection("EPEC_fsak.bdbxml")/fs[f[@name="goimailako-ezaugarriak"]/fs[@type="goimailako-ezaugarri-lista"]/f[@name="AZP"]/sym[@value="ERKARR"]]/@id'

Denbora: 81.151,1ms

Erantzun Kopurua: 5.089 objektu

Programatik:

Bigarrena: 6,955 ms


str eta sym indizeekin probak

[gora]

Ondorengo proba hauek str eta sym indizeak definitu eta gero egin dira. Behin galdera egin eta berriro galdetzerakoan informazioa memorian edo gordetzen du eta hurrengo erantzunak hemen adierazten direnak baino askoz laburragoak dira.

query 'for $x in collection("morf.dbxml")/fs[f_lema-osatua/str="etxe"]/@id return $x'

Denbora: 1.092,83ms(837,236ms)

Erantzun kopurua: 100(100 objektu)

query 'collection("morf.dbxml")/fs[f_forma/str="Bartzelonako" and f_goimailako-ezaugarriak/fs_goimailako-ezaugarri-lista[f_KAT/sym="IZE"]/f_AZP[sym="LIB"]]/@id'

Denbora: 69,468ms (33,514ms)

Erantzun kopurua: 2 (2 objektu)


query 'collection("morf.dbxml")/fs[f_goimailako-ezaugarriak/fs_goimailako-ezaugarri-lista[f_KAT/sym="IZE"]/f_AZP[sym="LIB"]]/@id'

Denbora: 68 s inguru (47.774,2ms)

Erantzun kopurua: (23.250 objektu)

Ondorioa: Nere makinako memoria guztia (1 GB) okupatzen du ia, eta hurrengo galderetarako ez da jaisten.

Programatik: 68.406 ms

Programatik egiterakoan askoz memoria gutxiago behar du.

query 'collection("morf.dbxml")/fs[f_lema-osatua/str="Bartzelona" and f_goimailako-ezaugarriak/fs_goimailako-ezaugarri-lista[f_KAT/sym="IZE"]/f_AZP[sym="LIB"]]/@id'

Denbora: 89,321(298,825ms)

Erantzun kopurua: 19 (19 objektu)


query 'collection("morf.dbxml")/fs[f_lema-osatua/str="Bartzelona" and f_goimailako-ezaugarriak/fs_goimailako-ezaugarri-lista[f_KAT/sym="IZE"]/f_AZP[sym="LIB"]]'

Denbora: 85,84ms(294,238ms)

Erantzun kopurua: 19(19 objektu)


query 'collection("morf.dbxml")/fs[f_lema-osatua/str="Bartzelona" and .//f_AZP[sym="LIB"]]'

Denbora: 87,449ms(42,524ms)

Erantzun kopurua: 20 (20 objektu)


query 'collection("morf.dbxml")/fs[f_goimailako-ezaugarriak/fs_goimailako-ezaugarri-lista[f_KAT/sym="IZE_IZEELI"]]/@id'

Denbora: 24.613,7ms (27.081,5ms)

Erantzun kopurua: 2.910 (2.910 objektu)


query 'collection("morf.dbxml")/fs[f_goimailako-ezaugarriak/fs_goimailako-ezaugarri-lista[f_KAT/sym="ASMATUA"]]/@id'

Denbora: 0,5ms(37,216ms)

Erantzun kopurua: 0(0 objektu)

sym, str eta value indizeak definituta

[gora]

0.

query 'collection("EPEC_fsak.bdbxml")/fs[f[@name="lema-osatua"]/str="etxe"]/@id'

Denbora: 13.116,9ms

Erantzun Kopurua: 705 objektu

Programatik: 7,861 ms

Bigarrena: 0,341 ms



1.

//value indizea ere definituta

query 'collection("EPEC_fsak.bdbxml")/fs[f[@name="goimailako-ezaugarriak"]/fs[@type="goimailako-ezaugarri-lista"]/f[@name="AZP"]/sym[@value="ERKARR"]]/@id'

Denbora: 81.151,1ms

Erantzun Kopurua: 5.089 objektu

Programatik:

Bigarrena: 6,955 ms



2.

query 'collection("EPEC_fsak.bdbxml")/fs[f[@name="lema-osatua"]/str="etxe"]/f[@name="forma"]/str'

Denbora:

Erantzun Kopurua: 705 objektu

Programatik: 9.879,11 ms

Bigarrena: 215,813 ms



3.

query 'for $x in collection(\"EPEC_fsak.bdbxml\")/fs[f [@name=\"lema-osatua\"/str=\"etxe\"]/@id return $x'

Denbora: 1.092,83ms(837,236ms)

Erantzun kopurua: 100(100 objektu)

Programatik:

Bigarrena:



4.

collection\(\"EPEC_fsak.bdbxml\"\)/fs[f[@name=\"forma\"]/str=\"Bartzelonako\"\ and\ f[@name=\"goimailako-ezaugarriak\"]/fs[@type=\"goimailako-ezaugarri-lista\"][f[@name=\"KAT\"]/sym[@value=\"IZE\"]]/f[@name=\"AZP\"]/sym[@value=\"LIB\"]]/@id

Denbora:

Erantzun kopurua: 20 (2 objektu)

Programatik: 89 ms (agian bigarrena bezala kontuan hartu beharko litzateke, hala ere antzeko zerbait behar du. Programak instant batean amaitzen du)

Bigarrena:



5.

collection\(\"EPEC_fsak.bdbxml\"\)/fs[f[@name=\"forma\"]/str=\"Bartzelonako\"\ and\ f[@name=\"goimailako-ezaugarriak\"]/fs[@type=\"goimailako-ezaugarri-lista\"]]/@id

Denbora:

Erantzun kopurua: 20 objektu

Programatik: 159 ms (agian bigarrena bezala kontuan hartu beharko litzateke edo gutxiago)

Bigarrena:



6.

collection\(\"EPEC_fsak.bdbxml\"\)/fs[f[@name=\"forma\"]/str=\"Bartzelonako\"\ and\ f[@name=\"goimailako-ezaugarriak\"]/fs[@type=\"goimailako-ezaugarri-lista\"]/f[@name=\"KAT\"]/sym[@value=\"IZE\"]]/@id

Denbora:

Erantzun kopurua: 20 objektu

Programatik: 88 ms (agian bigarrena bezala kontuan hartu beharko litzateke)

Bigarrena:



7.

collection\(\"EPEC_fsak.bdbxml\"\)/fs[f[@name=\"goimailako-ezaugarriak\"]/fs[@type=\"goimailako-ezaugarri-lista\"][f[@name=\"KAT\"]/sym[@value=\"IZE\"]]/f[@name=\"AZP\"]/sym[@value=\"LIB\"]]/@id

Denbora:

Erantzun kopurua: 38.659 (23.250 objektu)

Programatik: 5m57.342s

Programatik egiterakoan askoz memoria gutxiago behar du.



8.

collection\(\"EPEC_fsak.bdbxml\"\)/fs[f[@name=\"lema-osatua\"]/str=\"Bartzelona\"\ and\ f[@name=\"goimailako-ezaugarriak\"]/fs[@type=\"goimailako-ezaugarri-lista\"][f[@name=\"KAT\"]/sym[@value=\"IZE\"]]/f[@name=\"AZP\"]/sym[@value=\"LIB\"]]/@id

Denbora:

Erantzun kopurua: 82 (19 objektu)

Programatik: 12.127 ms

Bigarrena:

Terminaletik: 2.222,7 ms



9.

collection\(\"EPEC_fsak.bdbxml\"\)/fs[f[@name=\"lema-osatua\"]/str=\"Bartzelona\"\ and\ f[@name=\"goimailako-ezaugarriak\"]/fs[@type=\"goimailako-ezaugarri-lista\"][f[@name=\"KAT\"]/sym[@value=\"IZE\"]]/f[@name=\"AZP\"]/sym[@value=\"LIB\"]]

Denbora: 85,84ms(294,238ms)

Erantzun kopurua: 82 (19 objektu)

Programatik: 7.104 ms

Bigarrena: 2.186 ms



10.

collection\(\"EPEC_fsak.bdbxml\"\)/fs[f[@name=\"lema-osatua\"]/str=\"Bartzelona\"\ and\ .//f[@name=\"AZP\"]/sym[@value=\"LIB\"]]

Denbora: 87,449ms(42,524ms)

Erantzun kopurua: 108 (20 objektu)

Programatik: 1.209 ms

Bigarrena: 444 ms

Terminaletik: 368,888 ms



11.

collection\(\"EPEC_fsak.bdbxml\"\)/fs[.//f[@name=\"KAT\"]/sym[@value=\"IZE_IZEELI\"]]/@id

Denbora: 24.613,7ms (27.081,5ms)

Erantzun kopurua: 4.862 (2.910 objektu)

Programatik: 157.448 ms

Bigarrena: 114.442 ms



12.

collection\(\"EPEC_fsak.bdbxml\"\)/fs[f_goimailako-ezaugarriak/fs_goimailako-ezaugarri-lista[f_KAT/sym=\"IZE_IZEELI\"]]/@id

Denbora: 24.613,7ms (27.081,5ms)

Erantzun kopurua: 4.862 (2.910 objektu)

Programatik: 137.365 ms

Bigarrena:



13.

collection\(\"EPEC_fsak.bdbxml\"\)/fs[f_goimailako-ezaugarriak/fs_goimailako-ezaugarri-lista[f_KAT/sym="ASMATUA"]]/@id

Denbora: 0,5ms(37,216ms)

Erantzun kopurua: 0(0 objektu)

Programatik:

Bigarrena:



14.

collection\(\"EPEC_fsak.bdbxml\"\)//[@value=\"ERKARR\"]

Denbora:

Erantzun kopurua:

Programatik:

Bigarrena:



15.

collection\(\"EPEC_fsak.bdbxml\"\)//@value=\"IZE_IZEELI\"

Denbora:

Erantzun kopurua:

Programatik: >54 min eta ez du erantzuten

Bigarrena:

Eager eta Lazy

[gora]

Eager eta Lazy galderen erantzunak jasotzeko bi modu dira. Eager moduan galderaren emaitza guztiak berreskuratzen ditu eta Lazy moduan soilik galdera exekutatzen du, eskatu ahala erantzunak itzuliz. Egin diren probak aurreko 13 galdera hartu eta bi modu desberdin hauetan ebaluatu dira. Hauek dira emaitzak:


Eager moduan eginda

13 galdera segidan eginda.

13 minutu inguru. Ez du memoria askatzen galdera batetik bestera, programa amaitu arte informazioa metatzen doa.



Lazy moduan

galdera horiek istant batean erantzuten ditu baina ez du erantzunik berreskuratzen. Emaitzak atzitu ahala galdera berregiten doa.

Nahi bada, adibidez, 10 erantzunekin lan egin daiteke eta hurrengoak geroago eskuratu.



siuc04 zerbitzarian 6:41.49 denbora behar izan du

Hitz hasierak eta bukaerak

[gora]


Hurrengo proba hauek siuc05 zerbitzarian egin dira. XPath funtzioak baliatuz, forma edo lema hasiera bat aurkitu daiteke. Probak bi zatitan banatu dira: bat hitz hasiera aurkitzeko eta bestea hitz amaiera. Hasiera aurkitzekoak eraginkorrak izan dira baina ez amaiarera aurkitzekoak.


"collection('EPEC_fsak.bdbxml')/fs[f[@name='lema-osatua']/fn:starts-with(str,'ast')]"

Denbora: <7 s

Erantzun kopurua: 954 objektu


"collection('EPEC_fsak.bdbxml')/fs[f[@name='lema-osatua']/fn:starts-with(str,'atx')]"

Denbora: 5 s

Erantzun kopurua: 626 objektu


"collection('EPEC_fsak.bdbxml')/fs[f[@name='forma']/fn:starts-with(str,'atx')]"

Denbora: 1.680 ms

Erantzun kopurua: 1017 objektu


"collection('EPEC_fsak.bdbxml')/fs[f[@name='forma']/fn:ends-with(str,'uli')]"

Denbora: 21 minutu

Erantzun kopurua: 617 objektu


ends-with() galderen eraginkortasun falta konpontzen saiatzeko indize hau definitu dut:

dbxml> addindex "" str edge-element-string-substring
Adding index type: edge-element-string-substring to node: {}:str


Emaitzak:

13-[siuc05 ~/export]% time ./galderav2 EPEC_fsak.bdbxml "collection('EPEC_fsak.bdbxml')/fs[f[@name='forma']/fn:ends-with(str,'ilotu')]"
0.109u 0.046s 0:01.83 7.6% 0+0k 0+0io 3pf+0w


15-[siuc05 ~/export]% time ./galderav2 EPEC_fsak.bdbxml "collection('EPEC_fsak.bdbxml')/fs[f[@name='forma']/fn:ends-with(str,'rekin')]"
collection('EPEC_fsak.bdbxml')/fs[f[@name='forma']/fn:ends-with(str,'rekin')] galdera exekutatzen
Found 7699 documents for query: 'collection('EPEC_fsak.bdbxml')/fs[f[@name='forma']/fn:ends-with(str,'rekin')]'
nodo modukoa da
bukatu da
1.202u 0.359s 0:51.42 3.0% 0+0k 0+0io 3pf+0w


17-[siuc05 ~/export]% time ./galderav2 EPEC_fsak.bdbxml "collection('EPEC_fsak.bdbxml')/fs[f[@name='forma']/fn:ends-with(str,'havezen')]"
collection('EPEC_fsak.bdbxml')/fs[f[@name='forma']/fn:ends-with(str,'havezen')] galdera exekutatzen
Found 86 documents for query: 'collection('EPEC_fsak.bdbxml')/fs[f[@name='forma']/fn:ends-with(str,'havezen')]'
nodo modukoa da
bukatu da
0.031u 0.026s 0:00.64 7.8% 0+0k 0+0io 3pf+0w


Hau da; emaitza kopurua onargarria bada berehala erantzuten du

ID batetik berreskuratu FSa

[gora]

Id bat eman eta fs-a eskuratzea erabileratako bat izatea aurreikusten bada beste indize bat definitu behar da, ezer egin gabe ez oso motela baita.

18-[siuc05 ~/export]% time ./galderav2 EPEC_fsak.bdbxml 'collection("EPEC_fsak.bdbxml")/fs[@id="L-A-IZE-ARR-5757"]/@id' bai
collection("EPEC_fsak.bdbxml")/fs[@id="L-A-IZE-ARR-5757"]/@id galdera exekutatzen
Found 2 documents for query: 'collection("EPEC_fsak.bdbxml")/fs[@id="L-A-IZE-ARR-5757"]/@id'
Document irt564791.fs:
{}id="L-A-IZE-ARR-5757"
Document irt1764661.fs:
{}id="L-A-IZE-ARR-5757"
Emaitza kopurua:2
nodo modukoa da
bukatu da
62.839u 21.746s 17:04.52 8.2% 0+0k 0+0io 3pf+0w

Konpontzen saiatzeko indize hau definitu dut:

dbxml> addindex "" id edge-attribute-equality-string
Adding index type: edge-element-equality-string to node: {}:id


Segituan erantzuten du aurreko galderak.

[gora]