Kezdőoldal » Számítástechnika » Programozás » Egyszerű adatbázisban (név,...

Egyszerű adatbázisban (név, telszám) logaritmikus keresésnél gyorsabb létezik? (bővebben lent)

Figyelt kérdés

Ha olyan programot tervez valaki, amely egyszerű adatokat tartalmaz (például név, telefonszám, e két adatot), de ebből sokat, valamint rendezetten vannak ezek, akkor logaritmikus keresés létezik ami még gyorsabb keresést biztosít az adatok közt?

Bináris fa, bináris keresés, fa építése, bejárás...

Adatok minden bevitelnél rendezésre kerülnek, tehát rendezetten tárolódnak.

Milyen programozási nyelven valósítható ez meg a legkönnyebben?



2020. márc. 24. 19:33
1 2
 1/11 anonim ***** válasza:
77%

Nem mindegy milyen adatbázisról beszélsz.

Általánosságban ha csak konkrét egyezőséget akarsz vizsgálni, akkor az valamilyen hashtable struktúrával gyorsítható konstans időre, de hash alapján nem tudsz pl. kisebb mint, vagy nagyobb mint vizsgálatokat végezni.

2020. márc. 24. 19:59
Hasznos számodra ez a válasz?
 2/11 A kérdező kommentje:

Mondjuk konkrét név keresése egy sok elemet tartalmazó (rendezett) adatbázisból.

Van egy rekord, "név" és "telefonszám" adatokkal, amely egy fájlban tárolódik és a keresés során e fájlban kell menni.

2020. márc. 24. 20:05
 3/11 anonim ***** válasza:
28%

Random access fájlban hashelheted mondjuk a nevet a fájl sorához (vagy byte-jához akár).

Szöveges fájl esetében a seek (navigáció az adott rekordhoz) ilyen esetben konstans (de magát a rekordot persze be kell olvasnod karakterenként).

2020. márc. 24. 20:20
Hasznos számodra ez a válasz?
 4/11 anonim ***** válasza:
22%

Alapfogalmakat tisztázzunk. Amiről te beszélsz, az nem adatbázis.

Ha saját programban tárolod az adatokat, először az adatszerkezetet kell meghatározni, addig nem sok értelme van a keresés sebességéről beszélni.


Adatbázisban pedig nincs saját kereső algoritmus, hanem indexelés van, és a többi az adatbázis dolga.

2020. márc. 24. 20:59
Hasznos számodra ez a válasz?
 5/11 anonim ***** válasza:
54%

"Bináris fa, bináris keresés"

Nem csak bináris keresés létezik, lehet több utas is. Ha jól emlékeszem (nem esküszöm meg rá), akkor a régi Clipper-es ntx index 12 utas keresést használt, ami valószínűleg egy használati szokásokon alapuló tapasztalati érték.

(Ha indexekről beszélünk, akkor sokszor nem is maga a keresés okozza a gondot, hanem az index karbantartása, a keresési fa "egyensúlyban" tartása sok beszúrás és törlés után.)

2020. márc. 25. 00:52
Hasznos számodra ez a válasz?
 6/11 anonim ***** válasza:
54%

** "index karbantartása"

Mármint nem a szimpla rendezett lista jellegű indexekről van most szó, hanem a több utasakról, ahol az egyes "utak" értékhatárai is tárolva vannak a fa szintjein. Ez a megoldás egyébként igen gyors keresést tesz lehetővé. (Ez is logaritmikus, csak nem feltétlenül kettes alapú.)

2020. márc. 25. 00:57
Hasznos számodra ez a válasz?
 7/11 anonim ***** válasza:
0%
Amúgy én is azt tenném, amit a 3-as válaszoló mond, hogy betűre, esetleg betűpárra indexelnék. Ez már gyorsabb lenne log(n)-nél.
2020. márc. 25. 12:51
Hasznos számodra ez a válasz?
 8/11 anonim ***** válasza:
0%

"és a többi az adatbázis dolga"


Muhhaha.. :o)

Az adatbázisnak nincs semmi "dolga". Az egy passzív adathalmaz.

2020. márc. 26. 05:13
Hasznos számodra ez a válasz?
 9/11 A kérdező kommentje:

Köszönöm a sok hasznos választ.

Igaza van annak a válaszolónak, aki jelezte, hogy rosszul használom az alapfogalmat, hogy ez nem adatbázis.

Ha nagyon sok rekord van, miképpen lehet betűpárra indexelni és miért lenne ez gyorsabb mint a logaritmikus keresés? (itt is végig kell gyalogolni a fájlban (vagy indexfájlban) - feltételezem - hogy a kisebb/nagyobb reláció alapján meg lehessen találni.

2020. márc. 26. 05:16
 10/11 anonim ***** válasza:
0%

"Igaza van annak a válaszolónak, aki jelezte, hogy rosszul használom az alapfogalmat, hogy ez nem adatbázis."


Dehogy volt igaza. Eleve, már egy 10 byte-os halmaz is lehet adatbázis.

Amiről meg ő beszél, na, éppen az nem adatbázis, csak annak kezelője.


Ha betűre indexelsz, akkor azzal már meghatározol egy részhalmazt, amin műveletet végzel és ami - átlagban - a huszada sincs a teljes halmaznak. Ha meg betűpárra indexelsz, akkor még kisebb halmazzal kell dolgoznod, ami a teljes halmaznak mindössze egy-két százaléka, vagy még annál is kevesebb, statisztikailag.

2020. márc. 27. 01:48
Hasznos számodra ez a válasz?
1 2

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!