Databaze v MCU

Marek Peca marek@tynska.cuni.cz
Pondělí Červen 20 19:20:26 CEST 2005


Zdravim,

> rad bych zaclenil do programu v PIC jednoduchou databazi. Idea je asi
> takova: externi EEPROM, kazdy zaznam se sklada z 8-byte textu, 8-byte
> dalsich dat. Dosud neni problem, dovedl by mne vsak nekdo poradit, jak pri
> vypisu textu radit data abecedne? Zatim me napadaji akorat algoritmy, ktere
> ctou data mnoho a mnohokrat, aby seradily zaznamy abecedne. BTW jak to
> vlastne delaji normalni databazove systemy (myslim na te opravdu nejnizsi
> urovni)?

pouzivaji se tzv. indexy. Od dob bubnove pameti az po google.
Vyhledani zaznamu probehne v logaritmickem case, abecedni (nebo jinak
trideny) vypis v linearnim. V indexu (datova struktura v
pameti/souboru) je chytrym zpusobem ulozen klic a odkaz (poloha v
souboru dat popr. ukazatel do pameti) na datovy zaznam. Pri zapisu i
cteni zaznamu postupujete stejne -- prolezete indexem na prislusne
misto (misto urcene klicem) a pak bud jen prectete zaznam, nebo
vlozite na toto misto do indexu novy klic. V obojim pripade
potrebujete log(n) pristupu do indexu a 1 pristup do datoveho
prostoru (rekneme, ze si pohlidate nejakymi znackami volna mista v
pameti dat, abyste nemusel dlouho hledat prvni uvolnenou diru).

Principem je vetsinou nejaky strom, pro zacatek hledejte treba
B-stromy, nebo si nastudujte nejaky starsi databazovy format (napr.
.NTX, ktery se tvoril k .DBF u Clipperu).

Existuji stohy zpusobu, jak udelat z retezce klic pro abecedni
trideni. Muzete vzit retezec samotny, jakmile se vam ale zachce mit
CH az za H, muzete zkouset triky jako "CH" => "H*" (viz jeden clanek
v Elektronice nekdy v rozmezi let 1989..1991, ten resil i trideni
hackovanych pismen dle ceske normy). Jinak nerad bych tu rozpoutaval
diskusi nad ceskou normou pro trideni, nebot ta si pry sama odporuje
a i kdyby ne, pak ji snad jeste nikdo nikdy uplne neimplementoval
(i kdyz uz budeme predpokladat, ze kino "64 u hradeb" se hleda za
S...).

ZdraviM.P.




Další informace o konferenci Hw-list