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

