0

ユーザーがサーバーとの間でファイルを送受信できるようにする iPhone アプリを開発しました。

この時点で、次のことを追跡するために、サーバー側アプリケーション (c# のソケット) にデータベースを追加したいと考えています。

  1. 個人カード (名前、年齢、電子メールなど) - ユーザーは記入することができます (義務ではありません)。
  2. ユーザーがこれまでに送受信したファイルの数
  3. 時々送信される app Stats には、アプリのエラー数、OS のバージョンなどの情報が含まれています。
  4. 過去 1 時間に送受信されたファイルの総数 (すべてのユーザー)

各ユーザーには、一意の 36 桁の 16 進数「AF41-FB11-.....-FFFF」があります。

DB は次の回答を提供する必要があります: どのユーザーが「ヘビー ユーザー」であるか、過去の日/時間/月に交換されたファイルの数、OS とエラー数の間に相関関係があるか。

残念ながら、私は DB 設計にあまり詳しくないので、次のことを考えました。

  1. 以下を含むusersテーブル:

    一意のユーザー ID | パーソナルカード | 送信されたファイル | 受信したファイル

  2. アプリの統計テーブル (各ユーザーは多くのレコードを持つことができます)

    一意のユーザー ID | number_of エラー | OS_バージョン | .... | sumbission_date_time

  3. 一般統計表 ( 1時間ごとに新しいレコードが追加されます)

    | | total_files_received_in_the_last_hour | total_files_sent_in_the_last_hour | submit_date_time

私の質問は次のとおりです。

  1. パフォーマンスの観点から、ユーザーごとにデータを収集してサーバー側アプリケーションに保存し、1 時間に 1 回すべてを DB に投入するのは理にかなっていますか (たとえば、接続を開く、UPDATE フィールド/INSERT フィールドを閉じる、接続を閉じる) ? それとも、ユーザーが実行するたびに各トランザクション (ファイルの送受信) を更新するだけでよいのでしょうか?
  2. 36 桁の ID 以外に別の主キーを作成する必要がありますか?
  3. このデザイン意味ありますか??

私はmySQL 5.1、innoDBを使用しています。DBMSはサーバー側アプリと同じマシンにあります

どんな洞察も役に立ちます!

4

0 に答える 0