我正在为一个大型项目开发一个数据库结构,我想知道日志表使用了什么方法。
我用的是Laravel 5.*和雄辩的。
这个表将包含,User_id,用户代理,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重定向到好的页面,并将用户数据记录在数据库中。
谢谢你的帮助。
发布于 2017-05-17 11:36:02
您想用日志数据库实现什么?如果它只是插入数据,我将选择一个非规范化表(选项1)。如果您也希望在每个请求上选择数据,这两个选项都会减慢您的应用程序的速度。您应该看看nosql数据库。
分区
另一个选项可以是使用分区,请参阅:https://laracasts.com/discuss/channels/eloquent/partition-table
在这种情况下,您可以使用唯一数据的校验和,并将相应的数据存储在带有前缀的表中。
例如:$checksum = 'pre03k3I03fsk34jks354jks35m..';,存储在表logs_p或logs_pr中。
不要忘记将索引放在校验和列上。
https://stackoverflow.com/questions/44023416
复制相似问题