mysql に基づいた BBS 設計 (1)
リリース: 2016-06-21 09:03:19
1.システム アーキテクチャ:
モジュラー思考を採用し、3 つの層に分かれています:
a.データストレージ層: mysql を使用して、ユーザー情報、
記事データ、ユーザーレター、ユーザーメッセージ、システムデータ (?)、重要な質問を含む bbs のすべてのデータを保存します:
データベース計画を支援するためにファイルを使用するかどうか。
b.システム機能層: bbs の基本機能を完了します。複数の並列モジュールで構成され、下向きに
で mysql 関数を呼び出してデータベースにアクセスし、上向きに、処理要求を受け入れ、処理された
結果を上位層に返します。リクエストのタイプ、成功または失敗の結果、およびその他のデータを返します。さらに、
モジュールは柔軟性が高く、簡単に変更および追加できます。含まれるもの:
** ユーザーモジュール、ユーザー登録、基本データの変更、権限の変更、
ネチズン情報のクエリを処理します。
** レイアウト モジュールは、記事の公開、記事の読み取り、記事の削除、記事のマーク
、および読み取り、変更、削除の権限チェックを完了します。このモジュールには、データベースに対する最も高い要件があります。
** エッセンス領域モジュールには、ディレクトリの追加、削除、上下の移動などの記事が含まれています。
(?) ディレクトリ構造は、読み取り、変更、および削除の権限チェックが困難な点の 1 つです。 。
** レターモジュール(新しいレターの送信、レターの読み取りと削除、レターマーク、新しいレターの通知を含む)
通知
** メッセージモジュール(メッセージの送信、メッセージの受信、新しいメッセージの通知、メッセージレビューなど) ,
メッセージは文字に保存されます。
** システム動的モジュール (サイト上の現在の人数、頻繁な変更による現在のダイナミクスを含む)
このタイプのデータを実装するには、共有メモリを使用する方が良い場合があります。
** チャット モジュールでは、双方が直接会話する icq の実践から学ぶことができますか?
ただし、チャットの結果を順番に保存するのは面倒かもしれません。 telnet機能との互換性を持たせるため、
上位サービス層がtelnetの場合、処理用の専用モジュールを追加します。
** チャット ルーム モジュール、共有メモリまたはデータベースを使用しますか?ルームを開くと、
内の権限に問題があります。
必要に応じて新しい機能を追加できます。例: アクティビティ サイネージ モジュールですが、
以外の Telnet 端末の場合、ほとんど意味がないようです。 。 。 。 。
c.サービス層: クライアントの要求に従って、汎用モジュールを呼び出して
データを取得し、クライアントの種類に応じて、異なる
サービス モジュールを開発します。それぞれ異なるサービス層がシステム機能層の
モジュールを共有できるように、適切に抽象化するために最善を尽くします。具体的には、
++ cq66 サーバー、元の cq66 メソッドを採用、システム関数
のすべての機能をサポートするようにプロトコルを再計画しますが、可能であれば特別なクライアント プログラム (cq66) を使用します。
との下位互換性がある方が良いでしょう。サーバーのアップグレードに伴い、クライアント プログラムもアップグレードする必要があります。
は不便を感じるかもしれません。必要に応じて、sshと同様に送信処理中に暗号化機能を追加できます。
++ Telnet サーバーは古い bbs 方式を使用しています。一部の機能はサポートされていません。サーバーはクライアントのステータスを保存し、クライアントのキーに従ってステータスの転送を判断する必要があります。必要なデータ (記事の読み取りなど) を取得し、システム機能層からデータを要求し、データを処理します (先頭行、
最後の行を追加するなど)。その後、返されるデータを変更できます。既存の bbsd の設計を保存できます
が、記事を除いて変更するのはさらに困難ですが、最初から作成するのは非常に手間がかかります
。
++ httpd サーバーは必要な機能が少なく、比較的単純です。本来は mysql を直接呼び出します。
データベースは直接 PHP を使用することもできますが、階層化の原理を考慮すると、やはり C を使用することをお勧めします。
をコンパイルする 🎜> CGI を使用して元の実装に基づいて変更できるのだろうか?おそらくそうではありません。
システムの重要な点と問題点:
a.データベース設計、mysql は多数のテーブルをサポートしていますか?例えば何万とか?各
ユーザーには少なくとも 1 つのテーブルがあり、各バージョンには 1 つのテーブルがあります。エッセンス領域のテーブル構造はより複雑になる場合があります。
ただし、現在の bbs ファイル構造よりも常に明確で効率的でなければなりません。
のソートとキャッシュ関数には mysql を使用できます。
b. mysql のテキスト フィールドのサイズ制限は、記事を 64k 以内に制限することです。
また、効率の観点からは、記事を最大 2k のブロックに保存する方がよいでしょう。
Telnet ユーザーが記事を読むとき、Telnet サーバーは毎回データベースにクエリを実行する必要はありません
数十 KB のデータを読み取り、そのうち 2K をユーザーに渡します。これにより、データベースを部分的に補うことができます。ファイルのように途中から読み込むことができないフィールド
の一部を取得します。ただし、記事フィールドデータ
の管理はさらに複雑です。
2.システム開発計画:
まずユーザーモジュールとレイアウトモジュールを検討し、既存の bbsd と
組み合わせてデータ構造を計画します。次に、他のモジュールを検討しますか? 。 。 。 。 。 。 。
(//以下は時間があるときに書きます...先に寝てください...うーん....)
3.データベース設計
4.ユーザーモジュール設計
5.レイアウトモジュールの設計
6. bbsd および cq66 サーバー側の変更
7.予備テスト計画。
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
-
2024-10-22 09:46:29
-
2024-10-13 13:53:41
-
2024-10-12 12:15:51
-
2024-10-11 22:47:31
-
2024-10-11 19:36:51
-
2024-10-11 15:50:41
-
2024-10-11 15:07:41
-
2024-10-11 14:21:21
-
2024-10-11 12:59:11
-
2024-10-11 12:17:31