0

複数のクライアントでコードを配布および実行するクライアント サーバー アプリを開発しています。これは、次のように機能する必要があります。

  1. クライアントは、毎分ステータスを送信するサーバーに接続します。
  2. サーバー ストア クライアントの IP とステータス。
  3. 誰かが実行するコードをサーバーに送信します。
  4. サーバーは、空いているアクティブなクライアントを検索し、コードを送信します。

これに関する私の問題は、処理できるクライアントの量です。クライアントオブジェクトなどを保存するためにリストを使用することを考えていましたが、何千ものクライアントを持つことができるので、リソースが不足するため、おそらく良い考えではありません。サーバーをハングアップさせずにすべてのクライアント データを効率的に保存するには、どのオプションが最適でしょうか?

コードを表示できなくて申し訳ありませんが、私は現在設計段階にあり、これで立ち往生しています。プロジェクトは Python を使用して開発されますが、コードは必要ありません。

4

2 に答える 2

3

すべての Python データを保持するのに十分なメモリがないことが心配な場合は、それを pickle して、たとえば ID と pickle 化されたファイルPython Docs Pickleだけを追跡できます。

別の良い例はShelveです。

これらの両方の利点は、SQL データベースなどでのデータのシリアル化やモデル化について心配する必要がないことです。

もちろん、この 2 つを組み合わせて使用​​することもできます。データをピクルし、結果の文字列をデータベースのフィールドに保存します。このようにして、将来必要になった場合に、メタデータを含む列を簡単に追加できます。速度の考慮事項になると、適切にクエリできるようにデータベースに保持するか、その「オーバーヘッド」を取り除くためにファイルとして保持します。時期尚早の最適化に注意してください。

于 2012-10-21T14:52:33.300 に答える
2

Sqlite は軽量のデータベース ストレージで効率的です。mysql が気に入らない場合は、mongoDB (SQL データベースなし) を使用してください。

http://www.sqlite.org/

http://www.mongodb.org/

私はそれらがmysqlよりも速いと思います...

于 2012-10-21T14:49:41.370 に答える