Nagymennyiségű adatok kezelése
Sziasztok, a fenti témával kapcsolatban lennének (részben) elméleti kérdéseim:
Első körben az érdekelne, hogy ha van egy milliós nagyságrendű rekorddal rendelkező mysql/myisam táblám. Egy adott ID-it keresnék a táblában, hogy benne van-e.
Kérdés, hogy hogyan a leggyorsabb?
- SELECT-tel a táblában
- Előbb SELECT-tel egy tömböt feltölteni (ha egyáltalán 'elbírja' egy szimpla tömb a sok adatot, esetleg egy session tömb) és majd abban abban keresni
- Előbb SELECT-tel egy fájlt feltölteni és majd abban abban keresni
Lennének majd további kérdéseim is, de alapvetően ez az elsődleges. Előre is köszönöm!!!
■ Első körben az érdekelne, hogy ha van egy milliós nagyságrendű rekorddal rendelkező mysql/myisam táblám. Egy adott ID-it keresnék a táblában, hogy benne van-e.
Kérdés, hogy hogyan a leggyorsabb?
- SELECT-tel a táblában
- Előbb SELECT-tel egy tömböt feltölteni (ha egyáltalán 'elbírja' egy szimpla tömb a sok adatot, esetleg egy session tömb) és majd abban abban keresni
- Előbb SELECT-tel egy fájlt feltölteni és majd abban abban keresni
Lennének majd további kérdéseim is, de alapvetően ez az elsődleges. Előre is köszönöm!!!
SELECT-tel a táblában
using filesort
azEXPLAIN
-ben).A többi sokkal memória illetve I/O igényesebb.
Köszönöm a választ Poetro, de
Egy negyedfokú írányított fa strukturáról, melynek csomópontjai a regisztrált felhasználók.
A felhasználó tábla fontosabb tulajdonságai: ID, szülő, szint, sorszám ( sorszám: az adott szülő alá közvetlenül csatlakoző csomópontok sorrendjét adja meg, értéke 1-4 )
A grafikus megjelenés kb ez:
http://kepfeltoltes.hu/view/100706/mlm_www.kepfeltoltes.hu_.jpg
Ha a regisztrált felhasználó ID-ja 3, akkor a hálózatba lépve csak az alatta lévő struktúrát láthassa, tehát se az 1-es se a 2-es, 6-os fájába ne tudjon átlépni.
Ezt ugye elérhetem, ha csinálok egy ciklust, mely addig fut amíg a lekérdezésnek van eredménye.
Kb így, remélem érthető:
do{
1. ciklus: SELECT * FROM felhasznalok WHERE id=3 LIMIT 1 -> szülők és szintek tárolása a következő ciklushoz
2. ciklus: SELECT * FROM felhasznalok WHERE szulo=... AND szint=... LIMIT 4 -> szülők és szintek tárolása a következő ciklushoz
3. ciklus: SELECT * FROM felhasznalok WHERE szulo=... AND szint=... LIMIT 16 -> szülők és szintek tárolása a következő ciklushoz
.
.
.
}while(eredmeny>0)
Ezzel a ciklussal a teljes adatbázisból ki tudom szűrni, hogy ki tartozik az adott struktúrába! Ennek eredményét is tárolnom kellene valahol, valamiben.
Azért, mert ha például ID=3 azt mondja, hogy ugorjunk a ID=6-ra akkor le tudjam ellenőrizni, hogy az az ő strukturájában szerepel vagy sem.
Tehát valójában azt kell megvalósítani, hogy adott ID-val belépve ismerjem a saját fámat, meg is tudjam az jeleníteni bármelyik pontjától és tudjam, hogy egy adott elem tagja-e az én hálózatomnak. És természetesen a lehető leggyorsabban!!!
Hogyan 'szedjem ki', tároljam az adatokat és jelenítsem meg a fát. Érdemes-e bárhol is tömböt, fájlt használni adattárolásra, vagy mindig futtasak lekérdezést egy-egy elem viszgálatához?
Megjegyezném, hogy az alap motor már működik, tehát nem konkrét megoldást várok, hanem egy olyat ami ilyen nagyméretű adathalmaz esetén is (amit sajnos eddig figyelmen kívül hagytam) gyorsan működik. Köszönöm!
Hierarchikus adatkezelés
LDAP
Ahogy nézem, az LDAP tényleg
Átfutottam rajtuk, a második
Sziasztok, sokat segített a
De... szerintetek a 'nested tree' ad-e lehetőséget arra, hogy a jobb és bal értékek alapján megmondjam egy elemről, hogy az a struktúrán belül egy adott szinten annak 'szélén' helyezkedik-e el vagy sem?
link
Tehát a 'Yellow'-ról mégléphetek balra (red) és jobbra (beef) is, de a 'red'-ról csak jobb, balra nem!
Nekem nem sikerült kitalálnom, de hát nem is vagyok olyan bölcs :).
Testvérek
Ha jól értem, ha tudom egy
Ha Te is erre gondoltál, akkor jó mert én is, csak az előző kérdésemből hagytam ki egy lényeges dolgot. Valójában az érdekelt volna, hogy valamiféle számítással, ha tudom egy elem szintjét, balját, jobbját, stb. meg tudom e mondani, hogy az szélső elem e vagy sem. Tehát olyan képlet érdekelt volna mint a 'gyermekek száma' például. Mert ez nem kíván újabb lekérdezést és ezáltal gyorsabb a működés.
Szóval bocsánat a pontatlan fogalmazásért, és ha nincs ilyen képlet, akkor használom majd az előbb említetteket.
Köszi mégegyszer!
Testvérek
Nem tudom, lehet, hogy félre
link
És itt szerintem fontos a szint (pirossal határolt területek), mert azon belül kell megvalósítanom a jobbra-balra lépkedést, addig amig van oldasó tag, testvér.