Php 高效地设计和管理用户设置模块

Php 高效地设计和管理用户设置模块,php,mysql,database,Php,Mysql,Database,我不知道,这类问题是否已经被问过了。实际上我不知道该找什么。我问对地方了 举个例子,我总是想知道像Facebook这样的社交媒体巨头是如何管理他们的用户设置模块的。。。数据库的设计是什么?如果用户选择不在特定的好友时间线上显示其更新,数据库如何在好友时间线上隐藏用户更新。我的意思是,如果我在那里编程,那么我会将所有设置值加载到一个数组中,并且会有许多条件语句来检查每个用户设置以及相应的打印数据 但我认为这会使代码变得难以管理,因为有太多的条件可能导致不希望的结果 所以我的问题是,有没有更好的方法

我不知道,这类问题是否已经被问过了。实际上我不知道该找什么。我问对地方了

举个例子,我总是想知道像Facebook这样的社交媒体巨头是如何管理他们的用户设置模块的。。。数据库的设计是什么?如果用户选择不在特定的好友时间线上显示其更新,数据库如何在好友时间线上隐藏用户更新。我的意思是,如果我在那里编程,那么我会将所有设置值加载到一个数组中,并且会有许多条件语句来检查每个用户设置以及相应的打印数据

但我认为这会使代码变得难以管理,因为有太多的条件可能导致不希望的结果

所以我的问题是,有没有更好的方法


我不知道我在这里有什么意义,但我试图解释我的问题。

有很多条件需要评估,这是正确的。但是在
SELECT
语句中,您可以轻松地将所有这些条件组合到
WHERE
子句中,这是非常有效的


基本上,只要您在平等性方面进行比较,数据库就可以轻松地进行优化,允许它快速搜索符合所需约束的帖子。尽管存在很多条件,但与一个表中有数百万个条目需要搜索这一事实相比,它们并不会真正影响性能。

Facebook的数据保存在文档存储库(Nosql)中,高效的索引用于快速查找标记和搜索。这种搜索和数据存储方法明显不同于基于关系数据库的数据存储和搜索

谷歌也使用类似的方案来绘制整个网站的地图,并迅速将结果反馈给你

所以,用更简单的术语来说,你的数据是以谷歌索引消息的方式存储和索引的,唯一的区别是,这些数据也存在于Facebook中

相关技术有。其中一个领先的索引管理和搜索算法是。是围绕Lucene的一个用户友好的软件包

所以facebook对待这些安全标准就像标签一样(用简单的语言),做谷歌式的搜索,给你一个令人愉悦的前端,而不是听起来像搜索引擎

在设置系统时,您可以使用elasticsearch进行更快的搜索。Elasticsearch使lucene的实现更加容易。它肯定会有一些学习曲线。Elasticsearch也可以与一起使用,在这种情况下,您的数据保存在数据库中,但索引也可以维护,以加快搜索速度。当然,成本是磁盘空间。它可以有许多标准,但仍然能够更快地得到结果。


快速的弹性搜索。

你所要求的是非常艰难的计划的结果。。无论何时,当你需要开发一个很有潜力变得复杂的东西时,你都必须使用已知的方法来规划(工程)它

通常数据库与实体有许多多态关系,有些人负责编写查询过程,以便为开发人员公平地检索所需数据

这真的不是一件容易解决的事情,关键是要有计划,要有好的计划。没有一个正确的答案

如果您的应用程序相当小,您可以按照自己的方式实现它,然后您将看到可以升级的内容。。这几乎是你唯一的出路。(顺便说一句,这就是大多数statups正在做的事情)


我祝你好运。

关于facebook的db模式及其工作原理,以及为什么它是一个好的设计,这里有一些文章可以向你解释为什么:

这是facebook发布的,它解释了他们是如何管理数据的。他们使用并通过应用和其他复杂的算法以及高级内存缓存和数据处理,可以有效地管理大量用户数据

但是关于您的问题:
如果用户选择不在特定的好友时间线上显示其更新,那么数据库设计会是什么,以及他们如何在好友时间线上隐藏用户更新

  • 我认为这篇文章会让你对facebook的数据库结构有一些见解,以及它对每个用户的功能:

  • 通常,如果您没有向特定朋友显示更新,则在朋友的时间线上隐藏用户更新是通过在数据库中存储值来管理的。。您可以在db中创建一个
    view\u type
    表,该表将确定用户可以看到的视图类型,然后根据用户选择的视图在SQL中发出
    where
    条件。。处理这个问题的方法还有很多,需要一个好的数据库结构,当然,规划一个好的、高效的数据库是一个非常重要和严格的过程


  • 同意,从数据库中检索无论如何都不会显示的数据是没有意义的。请注意,设置不必在数据库中,您可以使用
    占位符并将其绑定。感谢您的回答,事实上,此答案信息非常丰富,但我没有找到任何与我的问题相关的内容,可能是因为我没有得到。在facebook中进行的搜索与在rdbms中使用where子句不同。在Lucene的领导下,它有一种不同的方式。您可以看到预期搜索的数据仓库和基于算法的数字,以确定索引中哪个文档最接近搜索。希望它现在能澄清:)要了解更多关于facebook如何工作的信息,你可以阅读lucene、nosql或elastic search的在线资料。你可能会喜欢读这个博客:我没有问关于facebook搜索的问题,而是关于用户设置模块。facebook的用户设置模块不使用rdbms,而是使用