データベース - 我流データベース設計 - カウンタ


 


1. 概要
2. 構成
3. テーブル

1. 概要

 わたしが、管理しているサイトは、表示しているか、していないかにかかわらず、カウンタを持っています。  1日内で、ユニークなアクセス元がアクセスするごとに、カウントアップ。  また、アクセスにかかわるログ的な情報を、1アクセスごとに1行分、テキストファイルへ出力しています。  日替わりの時点で、1日分をまとめて、管理者用のメールに送信。  カウンタ値は、保持しつつ、ログファイルは、リセットして、1日分は最初から出力しなおします。  しかし、これは、インターネット創世記を過ぎたあたりに、どこかから拾ってきたものに手をいれたもので。  テキストファイルにアクセスする方式が、いささかほころんでいて。  排他がうまくいっていないのか、カウンタファイルの中身が何もなくなったりして、下手をすると、サイトの表示がこけはじめたりするのだ。  ファイルアクセスとテーブルアクセス、どちらがリソースを食わないのかとか、アクセススピードはどれくらいとか、問題はありそうな気がしますが。  もし、こけないようになるならば、テーブルアクセス方式にしたいなぁ・・・と思いまして。  やってみるべか。

2. 構成

 データベースとテーブルの構成、少し悩みます。  サイトは、それぞれ自分用のデータベースを持っています。  このデータベースそれぞれに、カウンタ用のテーブルを持つべきか・・・。  それとも、サイトを横断するデータベースを新規につくって、サイト用のテーブルをつくるべきか・・・。  一長一短ありますが、サイトの増減を考えると。  サイトそれぞれのデータベースに、同じ構成のカウンタテーブルを持つ方が、わたしには管理しやすいように思えたので。  当初、サイトそれぞれのデータベースに、同じ構成のテーブルを持つ方式でやっておりましたが・・・もとい。  手詰まりになりました。  サイトを横断するデータベースを新規につくることとします。

3. テーブル

 まず、サイトを横断するカウンタテーブル。
 カラム名  キー NOT NULL  型    意味    備考 
column_name text サイト名
column_date date アクセス日
column_count integer カウンタ値

 カラム名が、どうしても予約語と重なっちゃうので、変になっちゃいますね。
 サーバに、「PostgreSQL」を想定しているので、アクセス日は、「date」型になるのだ。
 カウンタ値が「オーバフローしたらどうするの?」。
 いやいや、わたしの生きている間に、オーバフローすることはないな。
 まぁ、心配な向きは、周回カラムでも設けていれば、2の63乗×2の63乗くらいになるので、人類の週末くらいまではもつでしょう。

 もうひとつは、アクセスログ用のテーブル。
 これは、テーブル名がサイト名と一致させるようにして、複数の同じ構成のテーブルを作成します。

 カラム名  キー NOT NULL  型    意味    備考 
column_count integer カウンタ値
column_time datetime アクセス日時
address inet クライアントアドレス
domain text クライアントドメイン
referer text 参照元



audiobook.jp
Amazonギフトカード
損保との違い
葬送のフリーレン Prime Video
TikTok Shop 【リピート用プログラム】
earthcar(アースカー)
ネットオークションの相場、統計、価格比較といえばオークファン
JETBOY
【usus ウズウズ】
アフィリエイトのアクセストレード
ハイスピードプラン
サウンドハウス
健康サポート特集
薬屋の独り言
EaseUS
ベルリッツ
それがだいじWi-Fi
5G CONNECT
U-NEXT