Forum » Programiranje » mongodb multikey index z istim rootom
mongodb multikey index z istim rootom
detroit ::
Živjo imam vprašanje okoli monogodb
kako se sestavi multikey index če imata dva elementa isti root. Primer "request", ki je json strukturaa
npr
moj index je sledeči
Težava je v temu (oz sploh ne vem če je težava ...ugibam) da vedno hita prvi torej request.Bla1.Bla2 index za vse querije tudi take ki vsebujejo request.Bla3.Bla4
Ter še drugo vprašanje query
je zelo počasen (preko C# driverja še mnogo bolj kot v samem cli, ampak o temu drugič)
če pa odstranim or pa gre na cca 2sec - kar je tudi dokaj počasno.
Any hints za zgornje vprašanje in spodnjo težavo? (zgledata najbrž povezani)
kako se sestavi multikey index če imata dva elementa isti root. Primer "request", ki je json strukturaa
npr
{ requestDate: "blabla", request.Bla1.Bla2 : "neki" }, { requestDate: "blabla", request.Bla3.Bla4 : "neki drugega" },
moj index je sledeči
{ "requestDate": 1, "request.Bla1.Bla2": 1, "request.Bla3.Bla4": 1 }
Težava je v temu (oz sploh ne vem če je težava ...ugibam) da vedno hita prvi torej request.Bla1.Bla2 index za vse querije tudi take ki vsebujejo request.Bla3.Bla4
Ter še drugo vprašanje query
{ "$and": [{ "requestDate": { "$gte": ISODate("2021-03-31T22:00:00.000Z"), "$lte": ISODate("2021-04-16T21:59:59.999") } }, { "$or": [{ "Request.Bla1.Bla2.Item.@type": /TEXT/ }, { "Request.Bla3.Bla4": /TEXT/ }] } ] }
je zelo počasen (preko C# driverja še mnogo bolj kot v samem cli, ampak o temu drugič)
če pa odstranim or pa gre na cca 2sec - kar je tudi dokaj počasno.
Any hints za zgornje vprašanje in spodnjo težavo? (zgledata najbrž povezani)
Skero
showsover ::
Če 'denormaliziraš' te rq.blaX.blaY, da niso tako gnezdeni ampak so kopije vrednosti pri vrhu?
Zgodovina sprememb…
- spremenilo: showsover ()
detroit ::
recimo da bi to povzročilo veliko dela.
Ali bi wildcard index pomagal? Ker potem bi upgradal bazo nekako
Ali bi wildcard index pomagal? Ker potem bi upgradal bazo nekako
Skero
showsover ::
Poskusi, sicer domnevam, da mora engine 'matchati' properties na wildcarde in vseeno pridobiti vrednosti iz globine, samo še en korak je vmes, ampak možno pa je tudi, da imaš prav. Ko boš imel ustrezno rešitev, prosim, pridi povedat :-)
detroit ::
@Spura is imel kaj specifičnega v mislih? Meni zgledata pretty much covered
moj index je sledeči
{
"requestDate": 1,
"request.Bla1.Bla2": 1,
"request.Bla3.Bla4": 1
}
Skero
Zgodovina sprememb…
- spremenil: detroit ()
Spura ::
Ne spoznam se na Mongo do te mere, da bi vedel ali je covered ali zakaj ni. Ampak ti pravis da ne gre po indeksu, torej zgleda ni covered. Pri navadnih bazah je recimo ful pomembn vrstni red indeksov. Pri navadni bazi takle index ne bi delal sploh, ampak bi namesto tega rabil dva indexa:
- ["requestDate", "request.Bla1.Bla2"]
- ["requestDate", "request.Bla3.Bla4"]
Index ponavadi gre tako kot je definiran: najprej po requestDate, potem po "request.Bla1.Bla2" in potem po "request.Bla3.Bla4". Nikakor ga ne mores uporabit in "request.Bla1.Bla2" preskocit, i.e. query za "requestDate", "request.Bla3.Bla4" ne bo sel po indexu. In to je v tvojem ORu.
Ampak kot receno nimam pa dovolj specificnega znanja o MongoDb, obstaja toliko boljsih baz.
- ["requestDate", "request.Bla1.Bla2"]
- ["requestDate", "request.Bla3.Bla4"]
Index ponavadi gre tako kot je definiran: najprej po requestDate, potem po "request.Bla1.Bla2" in potem po "request.Bla3.Bla4". Nikakor ga ne mores uporabit in "request.Bla1.Bla2" preskocit, i.e. query za "requestDate", "request.Bla3.Bla4" ne bo sel po indexu. In to je v tvojem ORu.
Ampak kot receno nimam pa dovolj specificnega znanja o MongoDb, obstaja toliko boljsih baz.
HotBurek ::
...obstaja toliko boljsih baz.
Seznam or it didnt hepan. Rad bi bral, daj mal materiala vun.
Seznam or it didnt hepan. Rad bi bral, daj mal materiala vun.
root@debian:/# iptraf-ng
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window
detroit ::
@Spura sta dva indexa oz v mojem primeru so trije (v resnici jih je itak več:))
to so trije indexi afaik
{ "requestDate": 1, "request.Bla1.Bla2": 1, "request.Bla3.Bla4": 1 }
to so trije indexi afaik
Skero
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Pobegla baza z osebnimi in finančnimi podatki več kot polovice ameriških gospodinjsteOddelek: Novice / Zasebnost | 8198 (5840) | MrStein |
» | C# WPF nalaganje info. iz XML dokumentaOddelek: Programiranje | 921 (741) | MrStein |
» | Internet strani kot slideshowOddelek: Izdelava spletišč | 1978 (1729) | sverde21 |
» | Nekdaj glede MySQL podatkovne bazeOddelek: Izdelava spletišč | 1788 (1555) | zdravc |
» | SQL problem -GROUP BYOddelek: Programiranje | 1034 (952) | tomi_m |