首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >最佳性能结构

最佳性能结构
EN

Stack Overflow用户
提问于 2017-05-17 11:21:33
回答 1查看 47关注 0票数 0

我正在为一个大型项目开发一个数据库结构,我想知道日志表使用了什么方法。

我用的是Laravel 5.*雄辩的

这个表将包含,User_id,用户代理,IP,DNS,Lang.

方法A :

代码语言:javascript
复制
LOGS_TABLE :

| Id  | user_id  |         dns     |      ip  |     user_agent .... |
|-----|----------|-----------------|----------|---------------------|
|   1 |   5      |  dns.google.com |  8.8.8.8 |  firefox.*........  |

方法B :

代码语言:javascript
复制
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重定向到好的页面,并将用户数据记录在数据库中。

谢谢你的帮助。

EN

回答 1

Stack Overflow用户

发布于 2017-05-17 11:36:02

您想用日志数据库实现什么?如果它只是插入数据,我将选择一个非规范化表(选项1)。如果您也希望在每个请求上选择数据,这两个选项都会减慢您的应用程序的速度。您应该看看nosql数据库。

分区

另一个选项可以是使用分区,请参阅:https://laracasts.com/discuss/channels/eloquent/partition-table

在这种情况下,您可以使用唯一数据的校验和,并将相应的数据存储在带有前缀的表中。

例如:$checksum = 'pre03k3I03fsk34jks354jks35m..';,存储在表logs_plogs_pr中。

不要忘记将索引放在校验和列上。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44023416

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档