gpt4 book ai didi

mysql - 最佳性能结构

转载 作者:行者123 更新时间:2023-11-29 10:49:20 26 4
gpt4 key购买 nike


我正在为一个大项目开发数据库结构,我想知道日志表使用什么方法。
我正在使用 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 重定向到正常页面,然后将用户数据记录到数据库中。

感谢您的帮助。

最佳答案

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

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

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

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

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

关于mysql - 最佳性能结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44023416/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com