基於mysql的bbs設計(一)

2021-04-17 08:06:48 字數 2181 閱讀 9902

1。系統架構:

採用模組化思想,分為3層:

a。資料儲存層:使用mysql來存放bbs的所有資料,包括使用者資訊,

文章資料,使用者信件,使用者訊息,系統資料(?),關鍵問題:

資料庫的規劃,是否用檔案來輔助。

b。系統功能層:完成bbs的基本功能,由多個並列模組組成,向下

呼叫mysql的函式訪問資料庫,向上,接受處理請求,將處理的

結果返回上層,根據請求型別,返回成敗結果和其他資料。而且

模組高度靈活,可以方便的修改增加。包括:

** 使用者模組,處理使用者的註冊,基本資料的修改,許可權的變化,

網友資訊的查詢。

** 版面模組,完成文章發表,文章的讀取,文章的刪除,文章

的加標記,讀改刪許可權檢查,此模組對資料庫的要求最高。

** 精華區模組,包括精華區的文章,目錄的增加,刪除,上下移     動

(?)讀改刪許可權檢查,目錄結構是其中的難點。

** 信件模組,包括發新信件,讀刪信件,信箋標記,新信件的通

知 ** 訊息模組,包括傳送訊息,接受訊息,新訊息通知,訊息回顧,

訊息存信件。

** 系統動態模組,包括當前上站人數,當前動態,由於變動頻繁,

此類資料用共享記憶體實現可能更好。

** 聊天模組,雙人聊天是否能借鑑icq的做法,由雙方直接通話,

但聊天結果存信件可能較麻煩,同時,為相容telnet功能,當

上層服務層為telnet時,增加專門的模組來進行處理。

** 聊天室模組,利用共享記憶體還是資料庫?開房間,裡面的許可權

問題。

根據需要,還能增加新的功能。例如:活動看板模組,但對於非

telnet終端,意義好象不大。。。。。

c。服務層:直接和客戶機對話,根據客戶機的請求,呼叫功能模組取得

資料,然後將資料傳送回客戶端,根據客戶端的型別,分別開發不同

的服務模組,並且盡可能合理進行抽象,使對不同的服務層,能共用

系統功能層的模組。具體包括:

++ cq66服務端,採取原cq66的方式,並重新規劃協議,支援系統功能

層的所有功能,但要用專門的客戶端程式(cq66),如果能做到向

下相容則更好,客戶端程式要隨服務端的公升級而公升級,使用者可能有

點不便。有需要可以在傳輸過程中加入加密功能,類似ssh。

++ telnet服務端,採用舊bbs的方式,有些功能不支援,客戶端無須

公升級,伺服器端要儲存客戶方的狀態,並根據客戶端的按鍵來判斷

狀態的轉移,並由此得出所需的資料,(例如閱讀某篇文章),然

後再向系統功能層請求資料,然後將資料加以處理(例如加上頂行,

尾行)然後返回資料,可以在現有的bbsd上修改,可以省去io模組

的設計但難度較大,除文章方面好一點外,其他比較難改,但從頭

寫起太費力。

++ httpd服務端,所需的功能更少,相對較簡單,本來直接呼叫mysql

資料庫也行,直接可以用php,但考慮到分層的原則,建議仍用c編

cgi的方式實現不知能不能在原來的基礎上修改呢?估計不行。

系統的關鍵和難點:

a。資料庫的設計,mysql支援大量的table嗎?例如幾萬?每個

使用者至少乙個表,然後每個版乙個表,精華區的表結構可能更複雜。

但應該總會比現在bbs的檔案結構清晰一些,效率也高一點吧,排序

和cache的功能可以信賴mysql吧。

b。mysql中文字欄位的大小限制,限制一篇文章不得大於64k不過分吧,

而且從效率的角度,將一篇文章以最大2k的塊為單位存放可能更好,

這樣,當telnet使用者看文章時,telnet伺服器不用每次都查詢資料庫

讀取幾十k的資料,再將其中的某2k傳給使用者,可區域性補償資料庫字段

不能象檔案那樣從中間讀取一部分。不過這樣文章字段資料的管理

比較複雜。

2。系統開發計畫:

先考慮使用者模組和版面模組,規劃好資料結構,應該很容易和現有bbsd結合

起來的。然後再考慮其他模組?。。。。。。。

(//以下有空再寫。。。。。先睡覺去。。hmm.........)

3。資料庫設計

4。使用者模組設計

5。版面模組設計

6。bbsd和cq66伺服器端改造

7。初步測試計畫 。

基於mysql的bbs設計(一)

1。系統架構 採用模組化思想,分為3層 a。資料儲存層 使用mysql來存放bbs的所有資料,包括使用者資訊,文章資料,使用者信件,使用者訊息,系統資料 關鍵問題 資料庫的規劃,是否用檔案來輔助。b。系統功能層 完成bbs的基本功能,由多個並列模組組成,向下 呼叫mysql的函式訪問資料庫,向上,接...

基於mysql的bbs設計(三)

4。使用者模組設計 對於底層資料庫,呼叫mysql的c api函式來進行資料庫的修改,內部儲存 一定的狀態變數 例如使用者名稱,還是留給上一層完成?對上一層,則提供 使用者管理的介面。class usermanage 以上各個函式難度不大,都是執行相應的sql語句,訪問mysql資料庫,是否將一般指...

基於mysql的bbs設計(二)

3。資料庫設計 關鍵還是mysql的效率問題,合理分配mysql的記憶體,特別是table cache的 大小。另外,當系統突然掉電呢?mysql是否robust?table的名字設計,採用一位字首表明型別,全部用小寫表示 例如 系統的資料庫,以s為前導,如使用者表 suser suser 呢?具體...