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.