Unix Man (Ñïðàâî÷íîå ðóêîâîäñòâî)

         

DBM(3)


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.


Ñîäåðæàíèå ðàçäåëà