|
éíñ
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.
|