使用用户元、定制分类和新数据库结构哪个更好?

时间:2014-01-26 作者:Gixty

我在寻求一些建议。我将为我的网站开发用户跟踪系统(如twitter)。我预计将有大量用户使用该系统。

因此,我想知道使用什么更好地存储此系统的所有数据。我应该使用用户元、自定义分类法还是直接使用数据库?

我在考虑创建一些用户元,这样每个用户都有关注者元和关注者元,每个用户都有用户ID。从可伸缩性的角度来看,有没有更好的方法?

谢谢

1 个回复
最合适的回答,由SO网友:Adam 整理而成

如果您想在数据库中将每一条数据存储为唯一的条目(行),那么像您已经做的那样,定制表是一个非常好的解决方案。

另一方面

可以使用usermeta表执行完全相同的操作,存储多个与唯一项同名的元键,

usermeta表中的条目如下所示:

umeta_id   user_id  meta_key   meta_value
    1         1     follower     user_1
    2         1     follower     user_2
    3         1     follower     user_3
    4         1     randomkey    abcdef
    5         1     follower     user_4
正如您在上面的示例中所看到的,usermeta表中的第四个条目用于一段完全无关的元数据,因此您将要处理的是,所有类型的数据都混合到一个表中。随着时间的推移,如果此表除了follow数据之外还包含大量额外的元信息,那么它可能会影响查询的性能。

我个人会创建一个自定义表,只存储user\\u id和follower\\u id(也可能是follower\\u用户名)。

primary_id  user_id  follower_id follower_username
    1          1         2            name2
    2          1         2            name2 
    3          2         5            name5  
    4          1         8            name8 
    5          1         3            name3 
将用户名与ID一起存储是可选的,但很有用。

然后,我还将在usermeta表中存储跟踪某个用户的所有人相对于单个用户的序列化值,您可以通过wp\\u cron定期执行此操作。如果需要显示跟踪他们的给定用户,可以检索单个usermeta meta\\u密钥,取消序列化数据并相应地显示它。

如果您碰巧还存储了关注者的用户名,那么用户的序列化数据也将包含用户名,这将避免您需要在返回的ID上运行查找,如果您只需要显示用户名,还可能需要显示指向用户的链接。

如果您需要执行任何额外的数据检索和操作(您可以单独从用户名执行),则会返回ID,但ID总是很方便,对我来说,它是首选。

Of course all of this is highly generalized because it really depends on your extended use case as to what you may do.

结束

相关推荐

Performance on WPMS

我的WPMS站点托管在8核/32mb RAM服务器上,但响应时间非常长。我们有大约1000个博客(单个db上有35000多个表)和70000个页面浏览量。我认为我可以缩短响应时间,将具有更多页面浏览量的博客移动到单独的DB中,并使用hyper DB插件将所有博客拆分为每个DB 100个博客。你觉得怎么样?