2

多くの訪問者を期待している共有ホストに Web サイトがあります。読み取り用のデータベースは必要ありません (ページに表示されるものはすべて PHP でハードコーディングされています) が、ユーザーが入力するデータを書き込み専用に保存したいと考えています。実際、私はこれを保存して、後で統計分析を行います(ダウンロードした後、ローカルコンピューターに保存します)。

だから私の2つの質問:

  1. MySQL はこれに対する実行可能なオプションですか? PHP/MySQL が利用可能な共有ホスティングで実行することを意図しているため、他の多くの派手なパッケージを実際に使用することはできませんが、たとえばファイルへの書き込みがこの目的に適している場合は、それも可能です。私が理解している限り、ファイルに行を追加することは、巨大なファイルにとって比較的複雑な操作です。一方、MySQL データベースに同時に接続する 100 人以上のユーザーは、1 つの安価な INSERT クエリを実行するためだけであっても、おそらく大きな負荷になります。

  2. MySQL が適切なオプションである場合、テーブルはどのように構成するのが最適ですか? 現在、自動インクリメントする主キーを持つ InnoDB テーブルが 1 つありidます (もちろん、データを格納する列の隣にあります)。これは汎用的な構成なので、テーブルに書き込むだけでテーブルから読み取る必要がないことを考えると、もっと最適化された方法があるのではないでしょうか?

編集: 私は主に、ウェブサイトがリリースされるとすぐにバイラルになることを恐れているので、ユーザーは非常に短い時間枠で訪問することを期待しています. もちろん、データベースが過負荷になったために入力したデータを失いたくありません。

4

1 に答える 1

3

これには、MySQL が最適です。後でこのデータを集計して分析したいと言っているので、おそらくフラット ファイルよりもはるかに優れています。特にファイルが大きい場合は、フラット ファイルでこれを行うと時間がかかる場合があります。さらに、RDBMS は集計およびデータセット操作用です。レポートデータの作成に最適です。

既存の行キーに加えて、テーブルに必要なデータ列と、ユーザーを追跡するための何らかの識別子を配置します。IP アドレスは、ユーザー トラッキングの論理的な選択です。または、マジック クッキーの値が機能する可能性があります。1 つのテーブルにすぎません。あまり深く考える必要はありません。レポートで頻繁にフィルター処理する列 (IP アドレス、アクセス日など) に非クラスター化インデックスを追加することをお勧めします。

私は主に、ウェブサイトがリリースされるとすぐにバイラルになるのではないかと心配しているので、ユーザーは非常に短い時間枠で訪問することを期待しています. もちろん、データベースが過負荷になったために入力したデータを失いたくありません。

MySQL などの RDBMS は、適切なハードウェア バッキングを前提として、重い負荷を処理するように明示的に設計されています。汗だくにしないでください。

于 2013-07-16T20:25:57.073 に答える