基于mysql的bbs設(shè)計(jì)(一)
發(fā)表時(shí)間:2024-05-13 來(lái)源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]1。系統(tǒng)架構(gòu): 采用模塊化思想,分為3層: a。數(shù)據(jù)存儲(chǔ)層:使用mysql來(lái)存放bbs的所有數(shù)據(jù),包括用戶(hù)信息, 文章數(shù)據(jù),用戶(hù)信件,用戶(hù)消息,系統(tǒng)數(shù)據(jù)(?),關(guān)鍵問(wèn)題: 數(shù)據(jù)庫(kù)的規(guī)劃,是否用文件來(lái)輔助。 b。系統(tǒng)功能層:完成bbs的基本功能,由多個(gè)并列模塊組成,向下 ...
1。系統(tǒng)架構(gòu):
采用模塊化思想,分為3層:
a。數(shù)據(jù)存儲(chǔ)層:使用mysql來(lái)存放bbs的所有數(shù)據(jù),包括用戶(hù)信息,
文章數(shù)據(jù),用戶(hù)信件,用戶(hù)消息,系統(tǒng)數(shù)據(jù)(?),關(guān)鍵問(wèn)題:
數(shù)據(jù)庫(kù)的規(guī)劃,是否用文件來(lái)輔助。
b。系統(tǒng)功能層:完成bbs的基本功能,由多個(gè)并列模塊組成,向下
調(diào)用mysql的函數(shù)訪問(wèn)數(shù)據(jù)庫(kù),向上,接受處理請(qǐng)求,將處理的
結(jié)果返回上層,根據(jù)請(qǐng)求類(lèi)型,返回成敗結(jié)果和其他數(shù)據(jù)。而且
模塊高度靈活,可以方便的修改增加。包括:
** 用戶(hù)模塊,處理用戶(hù)的注冊(cè),基本數(shù)據(jù)的修改,權(quán)限的變化,
網(wǎng)友信息的查詢(xún)。
** 版面模塊,完成文章發(fā)表,文章的讀取,文章的刪除,文章
的加標(biāo)記,讀改刪權(quán)限檢查,此模塊對(duì)數(shù)據(jù)庫(kù)的要求最高。
** 精華區(qū)模塊,包括精華區(qū)的文章,目錄的增加,刪除,上下移 動(dòng)
(?)讀改刪權(quán)限檢查,目錄結(jié)構(gòu)是其中的難點(diǎn)。
** 信件模塊,包括發(fā)新信件,讀刪信件,信箋標(biāo)記,新信件的通
知
** 消息模塊,包括發(fā)送消息,接受消息,新消息通知,消息回顧,
消息存信件。
** 系統(tǒng)動(dòng)態(tài)模塊,包括當(dāng)前上站人數(shù),當(dāng)前動(dòng)態(tài),由于變動(dòng)頻繁,
此類(lèi)數(shù)據(jù)用共享內(nèi)存實(shí)現(xiàn)可能更好。
** 聊天模塊,雙人聊天是否能借鑒icq的做法,由雙方直接通話,
但聊天結(jié)果存信件可能較麻煩,同時(shí),為兼容telnet功能,當(dāng)
上層服務(wù)層為telnet時(shí),增加專(zhuān)門(mén)的模塊來(lái)進(jìn)行處理。
** 聊天室模塊,利用共享內(nèi)存還是數(shù)據(jù)庫(kù)?開(kāi)房間,里面的權(quán)限
問(wèn)題。
根據(jù)需要,還能增加新的功能。例如:活動(dòng)看板模塊,但對(duì)于非
telnet終端,意義好象不大。。。。。
c。服務(wù)層:直接和客戶(hù)機(jī)對(duì)話,根據(jù)客戶(hù)機(jī)的請(qǐng)求,調(diào)用功能模塊取得
數(shù)據(jù),然后將數(shù)據(jù)發(fā)送回客戶(hù)端,根據(jù)客戶(hù)端的類(lèi)型,分別開(kāi)發(fā)不同
的服務(wù)模塊,并且盡可能合理進(jìn)行抽象,使對(duì)不同的服務(wù)層,能共用
系統(tǒng)功能層的模塊。具體包括:
++ cq66服務(wù)端,采取原cq66的方式,并重新規(guī)劃協(xié)議,支持系統(tǒng)功能
層的所有功能,但要用專(zhuān)門(mén)的客戶(hù)端程序(cq66),如果能做到向
下兼容則更好,客戶(hù)端程序要隨服務(wù)端的升級(jí)而升級(jí),用戶(hù)可能有
點(diǎn)不便。有需要可以在傳輸過(guò)程中加入加密功能,類(lèi)似ssh。
++ telnet服務(wù)端,采用舊bbs的方式,有些功能不支持,客戶(hù)端無(wú)須
升級(jí),服務(wù)器端要保存客戶(hù)方的狀態(tài),并根據(jù)客戶(hù)端的按鍵來(lái)判斷
狀態(tài)的轉(zhuǎn)移,并由此得出所需的數(shù)據(jù),(例如閱讀某篇文章),然
后再向系統(tǒng)功能層請(qǐng)求數(shù)據(jù),然后將數(shù)據(jù)加以處理(例如加上頂行,
尾行)然后返回?cái)?shù)據(jù),可以在現(xiàn)有的bbsd上修改,可以省去io模塊
的設(shè)計(jì)但難度較大,除文章方面好一點(diǎn)外,其他比較難改,但從頭
寫(xiě)起太費(fèi)力。
++ httpd服務(wù)端,所需的功能更少,相對(duì)較簡(jiǎn)單,本來(lái)直接調(diào)用mysql
數(shù)據(jù)庫(kù)也行,直接可以用php,但考慮到分層的原則,建議仍用c編
cgi的方式實(shí)現(xiàn)不知能不能在原來(lái)的基礎(chǔ)上修改呢?估計(jì)不行。
系統(tǒng)的關(guān)鍵和難點(diǎn):
a。數(shù)據(jù)庫(kù)的設(shè)計(jì),mysql支持大量的table嗎?例如幾萬(wàn)?每個(gè)
用戶(hù)至少一個(gè)表,然后每個(gè)版一個(gè)表,精華區(qū)的表結(jié)構(gòu)可能更復(fù)雜。
但應(yīng)該總會(huì)比現(xiàn)在bbs的文件結(jié)構(gòu)清晰一些,效率也高一點(diǎn)吧,排序
和cache的功能可以信賴(lài)mysql吧。
b。mysql中文本字段的大小限制,限制一篇文章不得大于64k不過(guò)分吧,
而且從效率的角度,將一篇文章以最大2k的塊為單位存放可能更好,
這樣,當(dāng)telnet用戶(hù)看文章時(shí),telnet服務(wù)器不用每次都查詢(xún)數(shù)據(jù)庫(kù)
讀取幾十k的數(shù)據(jù),再將其中的某2k傳給用戶(hù),可局部補(bǔ)償數(shù)據(jù)庫(kù)字段
不能象文件那樣從中間讀取一部分。不過(guò)這樣文章字段數(shù)據(jù)的管理
比較復(fù)雜。
2。系統(tǒng)開(kāi)發(fā)計(jì)劃:
先考慮用戶(hù)模塊和版面模塊,規(guī)劃好數(shù)據(jù)結(jié)構(gòu),應(yīng)該很容易和現(xiàn)有bbsd結(jié)合
起來(lái)的。然后再考慮其他模塊?。。。。。。。
(//以下有空再寫(xiě)。。。。。先睡覺(jué)去。。hmm.........)
3。數(shù)據(jù)庫(kù)設(shè)計(jì)
4。用戶(hù)模塊設(shè)計(jì)
5。版面模塊設(shè)計(jì)
6。bbsd和cq66服務(wù)器端改造
7。初步測(cè)試計(jì)劃 。