我正在为一个大项目的数据库结构工作,我想知道什么方法用于日志表
我正在使用 Laravel 5。* 与 Eloquent 。
此表将包含 User_id,User-Agent,IP,DNS,Lang ....
方法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重定向,然后将用户数据记录在我们的数据库中。
感谢您的帮助。
答案 0 :(得分:1)
您希望使用日志数据库实现什么目标?如果它只是插入数据,我会去一个非规范化表(选项1)。 如果您还想在每个请求中选择数据,这两个选项都会降低您的应用程序速度。您应该查看一下nosql数据库。
<强>分区强>
另一个选项可以是使用分区,请参阅:https://laracasts.com/discuss/channels/eloquent/partition-table
在这种情况下,您可以使用唯一数据的校验和,并将相应的数据存储在带有前缀的表中。
例如:$checksum = 'pre03k3I03fsk34jks354jks35m..';
,存储在表格logs_p
或logs_pr
中。
不要忘记在校验和列上添加索引。