php-扩展数据,减少加载时间,让我的虚拟主机高兴的最佳方法
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php-扩展数据,减少加载时间,让我的虚拟主机高兴的最佳方法,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2204字,纯文字阅读大概需要4分钟。
内容图文
![php-扩展数据,减少加载时间,让我的虚拟主机高兴的最佳方法](/upload/InfoBanner/zyjiaocheng/653/733b3190745b49248eaeb1432bcd3dd7.jpg)
对于Facebook应用程序,我必须在MySQL数据库中存储用户的朋友列表.向我的数据库请求此列表,并与其他数据进行比较等.
目前,我将此朋友列表存储在我的用户表中,朋友的uid放在一个“文本”字段中,并带有一个“ |”作为分隔符.例如:
ID – UID – NAME – FRIENDS => 1 – 123456789 – John Doe – 987654321|123456|765432
我的PHP文件请求此行,并通过展开该字段(‘|’)提取朋友列表.一切正常,每1000个用户大约有5MB磁盘空间.
现在的问题是:
为了增加功能,我还需要保存用户朋友的姓名.我可以用不同的方式做到这一点:
1)将此数据保存在额外的表中.例如:
ID – UID – NAME => 1 – 1234321 – Jane Doe
如果需要ID为1234321的朋友的姓名,我可以从此表中请求姓名.但是,问题在于该表将继续增长,直到对Facebook上的所有用户建立索引(> 5亿行)为止.我的虚拟主机不会这样!这样的表将占用大约25GB的磁盘空间.
2)另一个解决方案是通过在好友字段的UID中添加名称来扩展用户表中保存的数据(使用额外的分隔符,让我们使用“,”).例如:
ID – UID – NAME – FRIENDS => 1 – 123456789 – John Doe – 987654321,Mike Jones|123456,Tom Bright|765432,Rick Smith
对于此解决方案,我必须更改脚本,添加另一个额外的爆炸(‘,’)等.我不确定这将占用多少额外的磁盘空间…但是数据不容易处理这条路!
3)第三种解决方案可以很好地概述所有数据,但会导致数据库庞大.在此解决方案中,我们创建了一个朋友表,每个友谊都有一行.例如:
ID – UID – FRIENDUID => 1 – 123456789 – 54321
ID – UID – FRIENDUID => 3 – 123456789 – 65432
ID – UID – FRIENDUID => 2 – 987654321 – 54321
ID – UID – FRIENDUID => 4 – 987654321 – 65432
正如您在本例中看到的那样,它很好地概述了所有友谊.但是,大约有5亿用户,也就是说,平均每位用户300个友谊,这将创建一个包含1500亿行的表.我的主机肯定不会喜欢…而且我认为这种表将占用大量磁盘空间…
那么…如何解决这个问题?您认为,在Facebook上存储用户朋友的UID名称的最佳方法是什么?如何缩放此类数据?或者,除了上述三种可能性之外,您还有其他(更好)的解决方案吗?
希望你能帮我!
解决方法:
我同意Amber的观点,解决方案1将是存储此数据的最有效方法.如果您要坚持当前的方法(类似于解决方案2),则可能需要考虑将友谊数据存储为JSON字符串.它不会产生最短的字符串,但是很容易解析.
要保存数据:
$friends = array(
'uid1' => 'John Smith',
'uid2' => 'Jane Doe'
);
$str = json_encode($friends);
// save $str to the database in the "friends" column
取回数据:
// get $str from the database
$friends = json_decode($str, TRUE);
var_dump($friends);
内容总结
以上是互联网集市为您收集整理的php-扩展数据,减少加载时间,让我的虚拟主机高兴的最佳方法全部内容,希望文章能够帮你解决php-扩展数据,减少加载时间,让我的虚拟主机高兴的最佳方法所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。