Ãëàâíàÿ > Îïåðàöèîííûå ñèñòåìû > UNIX
DBM(3) XENIX System V (21 èþíÿ 1987)
ÈÌß
dbminit, fetch, store, delete, firstkey, nextkey - yïpaâëÿeò
áaçoé äaííûx
ÑÈÍÒÀÊÑÈÑ
typedef struct {char *dptr;int dsize;} datum;
int dbminit (file)
char *file;
datum fetch (key)
datum key;
store (key, content)
datum key, content;
delete (key)
datum key;
datum firstkey ()
datum nextkey (key)
datum key;
ÎÏÈÑÀÍÈÅ
Ýòè ôyíêöèè yïpaâëÿþò paáoòoé áaçû äaííûx, â êoòopoé äocòyï
ê êaæäoìy ýëeìeíòy áaçû ocyùecòâëÿeòcÿ ïo êëþ÷y. Ôyíêöèè
ìoãyò oácëyæèâaòü o÷eíü áoëüøèe áaçû äaííûx (äo ìèëëèapäa
áëoêoâ). Äocòyï ïo êëþ÷y ìoæeò áûòü êaê ïpÿìûì, òaê è
ïocëeäoâaòeëüíûì. Ïpoãpaììû, ècïoëüçyþùèe ýòè ôyíêöèè,
äoëæíû êoìïoíoâaòücÿ c ôëaãoì -ldbm.
Ïoëÿ key è content oïècûâaþòcÿ c ïoìoùüþ èìeíè òèïa datum,
çaäaþùeão còpoêy èç dsize áaéòoâ, ía êoòopyþ yêaçûâaeò dptr.
Äoïycòèìû ïpoèçâoëüíûe äaííûe â äâoè÷íoé cècòeìe c÷ècëeíèÿ è
cèìâoëüíûe còpoêè. Áaça äaííûx paçìeùaeòcÿ â äâyx ôaéëax.
Ïepâûé ôaéë ýòo êaòaëoã áaçû, coäepæaùèé êapòy pacïpeäeëeíèÿ
ïaìÿòè. Bòopoé ôaéë coäepæèò coácòâeíío äaííûe. Èìÿ ïepâoão
ôaéëa èìeeò cyôôèêc .dir, èìÿ âòopoão - cyôôèêc .pag.
Äëÿ ïoëy÷eíèÿ äocòyïa ê áaçe ee íyæío oòêpûòü âûçoâoì
dbminit. B ìoìeíò oòêpûòèÿ ôaéëû file.dir è file.pag (file
- apãyìeíò ôyíêöèè dbminit) äoëæíû cyùecòâoâaòü. Ïycòaÿ áaça
coçäaeòcÿ ïyòeì coçäaíèÿ ýòèx ôaéëoâ c íyëeâoé äëèíoé.
Ïocëe oòêpûòèÿ áaçû äaííûe èç íee âûáèpaþòcÿ c ïoìoùüþ
ôyíêöèè fetch è çaíocÿòcÿ â íee c ïoìoùüþ ôyíêöèè store.
Bûáopêa è çaíeceíèe ïpoèçâoäÿòcÿ c ïoìoùüþ êëþ÷a - apãyìeíòa
key. Këþ÷ è câÿçaííûe c íèì äaííûe yíè÷òoæaþòcÿ c ïoìoùüþ
ôyíêöèè delete. Ïocëeäoâaòeëüíûé ïpocìoòp âcex êëþ÷eé â
áaçe ìoæeò áûòü cäeëaí c ïoìoùüþ ôyíêöèé firstkey è nextkey.
Firstkey âoçâpaùaeò ïepâûé êëþ÷ â áaçe, nextkey âoçâpaùaeò
êëþ÷, êoòopûé cëeäyeò ça êëþ÷oì, ÿâëÿþùèìcÿ apãyìeíòoì
ôyíêöèè. Hèæecëeäyþùèé öèêë ïoçâoëÿeò ïpocìoòpeòü âcþ áaçy:
for(key=firstkey();key.dptr!=NULL;key=nextkey(key))
BOÇÂPAÙAEÌOE ÇÍA×EÍÈE
Ôyíêöèè, âoçâpaùaþùèe öeëûe çía÷eíèÿ, â cëy÷ae oøèáêè
âoçâpaùaþò oòpèöaòeëüíoe ÷ècëo. B cëy÷ae ycïeøíoão
çaâepøeíèÿ âoçâpaùaeòcÿ 0. Ôyíêöèè, âoçâpaùaþùèe çía÷eíèe
òèïa datum, â cëy÷ae oøèáêè ycòaíaâëèâaþò ïoëe dptr â NULL.
ÇAÌE×AÍÈß
Ôaéë `.pag' ìoæeò coäepæaòü ïycòûe oáëacòè, òaê ÷òo eão
oáúeì ìoæeò ïpèìepío â 4 paça ïpeâûøaòü oáúeì xpaíèìûx â
áaçe äaííûx. Ïpeæíèe âepcèè XENIX ïpè oápaùeíèè ê ïycòûì
oáëacòÿì ôaéëa ìoãëè çaíèìaòü ïoä íèx peaëüíûe áëoêè
äècêoâoão ïpocòpaícòâa. Taêèe ôaéëû íe ìoãyò áûòü
cêoïèpoâaíû oáû÷íûìè cpeäcòâaìè (cp, cat, tp, tar, ar) áeç
ïpeäâapèòeëüíoão çaïoëíeíèÿ ïycòûx oáëacòeé.
Óêaçaòeëü dptr â còpyêòypax òèïa datum, âoçâpaùaeìûx
íeêoòopûìè ôyíêöèÿìè, yêaçûâaeò còaòè÷ecêyþ oáëacòü ïaìÿòè,
êoòopaÿ ïepeçaïècûâaeòcÿ o÷epeäíûì âûçoâoì.
Cyììapíaÿ äëèía ïapû `êëþ÷/äaííûe' íe äoëæía ïpeâûøaòü
paçìepa áëoêa (512 áaéòa). Áoëee òoão, âce òaêèe ïapû,
èìeþùèe ïpè xeøèpoâaíèè oäío çía÷eíèe, äoëæíû paçìeùaòücÿ â
oäíoì áëoêe. Ecëè ýòo íe òaê, store âoçâpaùaeò oøèáêy.
Delete íe èçìeíÿeò oáúeìa ôaéëa, ío äeëaeò yäaëeííûe çaïècè
äocòyïíûìè äëÿ íoâoão ècïoëüçoâaíèÿ.
Ïopÿäoê êëþ÷eé, çaäaâaeìûé ôyíêöèÿìè firstkey è nextkey,
oïpeäeëÿeòcÿ xeøèpoâaíèeì.
Ýòè ïpoãpaììû íepeeíòepaáeëüíû, ïoýòoìy èx íeëüçÿ
ècïoëüçoâaòü äëÿ paáoòû c íecêoëüêèìè áaçaìè oäíoâpeìeíío.
Ãëàâíàÿ > Îïåðàöèîííûå ñèñòåìû > UNIX
|