人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

アクセス解析を作りたいと思ってまいす。
そこで、DBをMySQLかSQLiteか、どっちにしようか悩んでいます。

SQLiteは一度に複数人のアクセスをINSERTする際に、MySQLに比べ弱そうな感じがするのですが・・・
でもデータのバックアップや手軽さならSQLiteが良さそうだし・・・

この両者の、アクセス解析で使用する際のメリット・デメリットをお教えいただければと思います。
(※MySQLとSQLiteのみでの比較をお願いします)

ちなみにアクセス解析の解析規模は「10pv?5万pv/日」ぐらいと千差万別の想定です。


●質問者: indiana
●カテゴリ:インターネット ウェブ制作
✍キーワード:dB MySQL PV SQLite アクセス
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● pahoo
●60ポイント

一度に複数人のアクセスをINSERTする際

まず、こういった処理が発生するかどうかを検討する必要があります。

目的はアクセス解析ですから、ログ情報をDBに保管しようとしているのだと思います。

ここで、アクセス解析はリアルタイム処理の必要がありません。普通は、前日のアクセス解析結果が出ていれば十分です。そこで、1日分のログをまとめて、サーバの負荷が軽い時間帯にバッチ処理(cron)で DBに insert するという方法が考えられます。

それであれば、同時に複数ユーザー(複数アプリ)が insert するケースは希ということになります。

同時複数アクセスによる DB ロック問題は、MySQLでも発生し得ます。ですから、アプリ側で、できる限り同時複数アクセスが発生しないように設計すべきです。


同時複数アクセスが回避できるならば、比較ポイントは insert の速さです。

この点は、「SQLiteの実力は?」の「お詫びと訂正」の実験結果を参照していただくと、SQLite が優れていることがわかります。


以上のことから、私は SQLite をお勧めします。


蛇足になりますが、これ以前の話として、本当にRDBが必要なのかという点を検討された方が良いでしょう。

RDBを導入する大前提は、あるータセットを

  1. 繰り返し検索・参照する
  2. 様々な条件で検索する
  3. データセット同士の関係(リレーション)が明らかである

という要件がある場合です。

ログ情報は、検索・参照より追加の方が多いので、むしろRDBが苦手とする分野です。

また、アクセス解析も定型的なものが決まっているのであれば、RDBの検索機能よりは、専用のインデックスを作った方が高速です。

さらに、ログ情報の場合、リレーションが無い(IPアドレスとユーザーアカウントのリレーションを張ったりしますか?)と思うので、RDBではなくテキストファイルでも十分かと思います。

◎質問者からの返答

回答ありがとうございます。

そこまでDBに詳しいわけではないのでとても参考になります。

なるほど1日分のアクセスをDBとは別にログファイルなどに記録しておいて、あとでまとめてINSERTする方法もありますね。

たしかにGoogleAnalyticsなど大規模アクセス解析はそのようにしているように思います。

その場合はcronが必要になるため、例えばレンタルサーバなどでの設置には難しく、cron対応サーバでも設定の手間が出てしまいますね・・・ここも悩みどころです。

pahooさんの回答であらたにアクセス解析の条件として「cronを使わない」とさせていただきたいと思います。

>RDBではなくテキストファイルでも十分

じつは以前にテキストファイルで作ったことがありまして、データの検索・参照に時間がかかるので今回はDBを検討しています。

アクセス「解析」なので、解析結果をどう出力するかに主眼を置いているため、おっしゃられる1?3の要件に当てはまるのではないかと思います。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ