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