Keresés

Aktív témák

  • bocs

    csendes tag

    válasz emvy #23 üzenetére

    ez így nem gömbölyű...
    a gráf attól gráf, hogy nem minden pont kapcsolódhat minden ponthoz, hanem csak bizonyosak.
    nem részleteznél egy kicsit jobban mert ez kezd olyan lenni mint sötétben a célbalövés...

  • bocs

    csendes tag

    válasz emvy #1 üzenetére

    hm legalább 2 fő probléma van itt.
    - nagy mennyiségű adat eltárolása, beolvasása
    - útkeresés

    attól függ a javasolt megoldás, hogy milyen a kettő aránya, tehát sokszor kell-e adatokat
    felvinni/módosítani vagy inkább statikus adatokról van szó, ahol a tipikus művelet a keresés.

    Mivel ilyen nagy tömegű adatot akarsz kezelni, és rugalmas rendszert akarsz (''tetszőleges''
    attribútumok hozzárendelése entitásokhoz) nem érdemes egyedi adattároló rendszert
    használni, csakis a jól bevált standard SQL alapú adatbázisokat. Saját rendszer kifejlesztése
    gyengén fizetett melónál nem javasolt...

    tipp:
    Table Node (NodeId, MainAttribute1, MainAttribute2, ...)
    Table Edge (EdgeId, BeginNodeId, EndNodeId, MainAttribute1, ...)
    Table Path (PathId, MainAttr1, ...)
    Table PathElement (PathElementId, PathId, EdgeId, PathSerial)
    opcionálisan:
    Table Attribute (AttrId, Name, Type)
    Table NodeTextAttribute (NodeId, AttrId, Serial, Text)
    Table EdgeTextAttribute (EdgeId, AttrId, Serial, Text)
    Table PathTextAttribute (PathId, AttrId, Serial, Text)
    Table PathElementTextAttribute (PathElementId, AttrId, Serial, Text)
    stb

    A keresést kétféleképpen lehet elképzelni:
    - állapotmentes kereső motorral, ahol mindig csak az adatbázisból kell kivenni kevés adatot,
    tehát itt az RDBMS indexek végzik a piszkos munkát. Hogy ezt meg lehet-e csinálni, az a gráf
    bonyolultságától függ (mennyi a tipikus kapcsat/pont, milyen hosszú utakat akarsz keresni).
    CGI-hez mindenféleképpen ez javasolt, PHP-ben lazán megcsinálható, feltéve ha a feladat
    megengedi.
    - két fázisban működő motorral: C++ progi, ami benyalja az adatbázist, majd a memóriában
    végzi a keresést. Tipikus C++ STL feladat. a vektorokat el kell felejteni, map<> és
    multimap<> segítségével O(logN) sebességű keresést kaphatsz. Ez nem igazán alkalmas CGI
    rendszerben való használatra, hiszen kizárt, hogy minden lekérdezésnél betöltse az összes
    adatot. Ha mindenképpen CGI kell, akkor lehet olyat csinálni, hogy írsz egy primitív C++
    szerverprogramot (pl c++ builderben, Kylix-ben sem nagy etvasz, ami elindulva betölti az
    adatokat, X porton figyel kérésekre, és pl HTML-ként visszadobja az eredményeket).

Aktív témák