質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

3回答

4586閲覧

アクセス解析を自前で作りたい

退会済みユーザー

退会済みユーザー

総合スコア0

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

1クリップ

投稿2015/04/19 02:21

自分のサイト用にアクセス解析を自前で作りたいと思っています。
javascriptで解析してAjaxで送信し、サーバー側のphpで受け取ってMySQLに溜め込むことを想定しています。

ですがアクセス解析用のデータベースの設計がわかりません。
MySQL自体は使えますが、テーブルや正規化などの設計について知りたいのです。

ネットで検索してみていますがなかなか良い情報がなく、お勧めの書籍やサイトがあればお教え頂きたいと思います。

どうぞよろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

MySQLの事例ですと、MyISAMを使用して集計単位(日毎や月毎)でパーティーショニングして設計/運用しています。
パーティションの追加や削除については、比較的アクセスが少ない時間帯(国内のサービスであれば深夜など)にcronで1ヵ月分や1年分を纏めて作成/削除しています。

テーブル設計については、基本的にkodaiさんの仰るようなアクセス解析用のテーブルのみで賄っていますが、あまりにもレコード数が多い場合には別途集計用のテーブルを作成して、これもcronで集計しています。

投稿2015/04/19 12:19

hyper-drums-ko

総合スコア736

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2015/04/19 12:43

ありがとうございます。 とても参考になります。 そうですね、cronを使って集計はやろうと思っています。
guest

0

最初はkodaiさんの提示されたテーブル1個でも十分じゃないかと思います。
運用しているうち追加の情報が欲しくなってくると思うので都度カラムを追加してゆくと。

PVやUUや滞在時間の計算が重くなってきたら集計用のテーブルを追加してバッチ処理をする必要が出てくるかも知れませんね。

投稿2015/04/19 04:13

naga3

総合スコア1293

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2015/04/19 05:35

ありがとうございます。 確かにアクセスの度にINSERTするのは得策ではないようなので、1日分用のテーブル、もしくはファイルに追記して、データを溜め込むのはMyISAMで作ろうかと思っています。 なるべく事例を見ながら設計したいと思っています。 もしそのようなサイトや書籍をご存知であればお教えいただければと思います。
guest

0

アクセス毎のデータを記録すれば、週次、月次、年次など自由に集計できるので
とりあえずこのテーブルから初めて、自分が欲しい情報を追加していけばいいのではないでしょうか。

create table access_logs ( id bigint auto_increment primary key, date datetime not null, path text not null, -- Request path ua text, -- User-Agent ipaddr text -- Remote IP address ); create index access_logs_date on access_logs (date);

投稿2015/04/19 02:30

kodai

総合スコア759

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2015/04/19 02:40

回答していただいてありがたいのですが、「初めてのデータベース」を質問しているのではなくアクセス解析なりのデータベース設計というのがあるのかと思って質問しています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問