私は大きなプロジェクトのデータベース構造に取り組んでいます。私はどのような方法をログテーブルに使用するのだろうかと思っています。
私はLaravel5 *とEloquentを使用しています。
この表には含まれています、USER_ID、ユーザーエージェント、IP、DNS、ラング ....最高のパフォーマンスの構造
方法A:
LOGS_TABLE :
| Id | user_id | dns | ip | user_agent .... |
|-----|----------|-----------------|----------|---------------------|
| 1 | 5 | dns.google.com | 8.8.8.8 | firefox.*........ |
方法B:
LOGS TABLE :
| Id | dns_id | ip_id | user_agent_id | |
|----|--------|-------|---------------|--|
| 1 | 1 | 1 | 1 | |
IP TABLE:
| Id | value |
|----|---------|
| 1 | 8.8.8.8 |
問題は、このようなフィールドが10個あり、すべてのジョイントがリクエストを遅らせてしまうのではないかと心配しています。
なぜすべてのログを保存するのですか? :
私たちのツールは完全で高性能なIPフィルタリングサービスを提供します。その目的は、顧客が広告されたトラフィックをフィルタリングし、誰が自分のウェブサイトを正確に見ているかを選択できるようにすることです。 主な目的はFacebookに送信したいページを選択することです。たとえばFacebookに広告を掲載しています。 サービスのすべてのトラフィックは、訪問者がお客様の広告を訪問したためです。 技術的には、良いページに301リダイレクトするだけで、ユーザーデータをデータベースに記録します。
ありがとうございました。
パフォーマンスが懸念されている場合、特にログの場合は、redisなどのキャッシングレイヤーを検討することをおすすめします。余分な手ごたえを恐れないでください、私は似たようなユースケースを持っていました。また、redisの発行/購読の可能性もあなたを助けるかもしれません – kentor
申し訳ありませんが、問題を正しく説明していません(ログはサービスのフットプリントです)この表を読み書きします。 – Pixel
私はそれに問題はありません。あなたの心配は何ですか? – kentor